From a757deacded0d7357a9f68462d3f2051e16004ee Mon Sep 17 00:00:00 2001 From: Eduardo Pedroni Date: Mon, 31 Mar 2014 20:32:59 +0100 Subject: Need to do a few tests on windows --- src/jcgp/gui/console/GUIConsole.java | 94 ++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/jcgp/gui/console/GUIConsole.java (limited to 'src/jcgp/gui/console') diff --git a/src/jcgp/gui/console/GUIConsole.java b/src/jcgp/gui/console/GUIConsole.java new file mode 100644 index 0000000..0ef2be3 --- /dev/null +++ b/src/jcgp/gui/console/GUIConsole.java @@ -0,0 +1,94 @@ +package jcgp.gui.console; + +import javafx.event.EventHandler; +import javafx.scene.Cursor; +import javafx.scene.control.TextArea; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import jcgp.GUI; + +public class GUIConsole extends AnchorPane { + + private boolean dragging; + private TextArea textArea = new TextArea("Welcome to JCGP!\n"); + + public GUIConsole() { + super(); + textArea.setEditable(false); + textArea.setWrapText(true); + + setResizeListeners(); + + AnchorPane.setTopAnchor(textArea, GUI.RESIZE_MARGIN); + AnchorPane.setBottomAnchor(textArea, 0.0); + AnchorPane.setRightAnchor(textArea, 0.0); + AnchorPane.setLeftAnchor(textArea, 0.0); + + setMinHeight(GUI.CONSOLE_HEIGHT); + setPrefHeight(GUI.CONSOLE_HEIGHT); + + getChildren().add(textArea); + + } + + /** + * + */ + private void setResizeListeners() { + setOnMousePressed(new EventHandler() { + @Override + public void handle(MouseEvent event) { + // ignore clicks outside of the draggable margin + if(isInDraggableZone(event)) { + dragging = true; + } + } + }); + setOnMouseDragged(new EventHandler() { + @Override + public void handle(MouseEvent event) { + if(dragging) { + double newHeight = getHeight() - event.getY(); + if (newHeight >= getMinHeight()) { + setPrefHeight(newHeight); + } else { + setPrefHeight(getMinHeight()); + } + } + } + }); + setOnMouseMoved(new EventHandler() { + @Override + public void handle(MouseEvent event) { + if(isInDraggableZone(event) || dragging) { + setCursor(Cursor.V_RESIZE); + } + else { + setCursor(Cursor.DEFAULT); + } + } + }); + setOnMouseReleased(new EventHandler() { + @Override + public void handle(MouseEvent event) { + dragging = false; + setCursor(Cursor.DEFAULT); + } + }); + textArea.setOnMouseEntered(new EventHandler() { + @Override + public void handle(MouseEvent event) { + setCursor(Cursor.DEFAULT); + } + }); + } + + private boolean isInDraggableZone(MouseEvent event) { + return event.getY() < (GUI.RESIZE_MARGIN); + } + + public TextArea getTextArea() { + return textArea; + } + +} -- cgit v1.2.3