Search in sources :

Example 21 with Cursor

use of javafx.scene.Cursor in project simulation-construction-set-2 by ihmcrobotics.

the class MainWindowController method setupDrawer.

public void setupDrawer(Pane sidePane) {
    // Workaround for the drawer resizing:
    // Here we make an edge similar to a SplitPane separator on which the cursor will change
    StackPane edge = new StackPane();
    edge.setStyle("-fx-background-color:white;-fx-effect:innershadow(three-pass-box, #A9A9A9, 2.5, 0.0, -1.0, 0.0)");
    edge.setPrefWidth(5.0);
    edge.setMinWidth(5.0);
    edge.setCursor(Cursor.E_RESIZE);
    HBox hBox = new HBox(sidePane, edge);
    toolDrawer.setSidePane(hBox);
    HBox.setHgrow(sidePane, Priority.ALWAYS);
    HBox.setHgrow(edge, Priority.NEVER);
    // The edge passes on the MouseEvents used for resizing the drawer to the inner StackPane.
    edge.addEventHandler(MouseEvent.MOUSE_PRESSED, hBox.getParent()::fireEvent);
    edge.addEventHandler(MouseEvent.MOUSE_DRAGGED, hBox.getParent()::fireEvent);
    edge.addEventHandler(MouseEvent.MOUSE_RELEASED, hBox.getParent()::fireEvent);
    Node remove = toolDrawer.getChildren().remove(toolDrawer.getChildren().size() - 1);
    mainPane.addEventHandler(KeyEvent.KEY_PRESSED, (EventHandler<? super KeyEvent>) e -> {
        if (e.getCode() == KeyCode.ESCAPE && toolDrawer.isOpened()) {
            toolDrawer.close();
            e.consume();
        }
    });
    toolDrawer.setResizeContent(true);
    toolDrawer.setResizableOnDrag(true);
    toolDrawer.setContent(remove);
    hamburger.setOnMouseClicked(e -> {
        if (toolDrawer.isClosed() || toolDrawer.isClosing())
            toolDrawer.open();
        else
            toolDrawer.close();
    });
    HamburgerSlideCloseTransition transition = new HamburgerSlideCloseTransition(hamburger);
    toolDrawer.addEventHandler(JFXDrawerEvent.CLOSING, e -> {
        transition.setRate(-0.5);
        transition.play();
    });
    toolDrawer.addEventFilter(JFXDrawerEvent.OPENING, e -> {
        transition.setRate(0.5);
        transition.play();
    });
}
Also used : EventHandler(javafx.event.EventHandler) HamburgerSlideCloseTransition(com.jfoenix.transitions.hamburger.HamburgerSlideCloseTransition) MouseEvent(javafx.scene.input.MouseEvent) SessionSimpleControlsController(us.ihmc.scs2.sessionVisualizer.controllers.SessionSimpleControlsController) JFXDrawerEvent(com.jfoenix.controls.events.JFXDrawerEvent) StackPane(javafx.scene.layout.StackPane) SessionVisualizerToolkit(us.ihmc.scs2.sessionVisualizer.managers.SessionVisualizerToolkit) JavaFXMessager(us.ihmc.javaFXToolkit.messager.JavaFXMessager) MainWindowMenuBarController(us.ihmc.scs2.sessionVisualizer.controllers.menu.MainWindowMenuBarController) Pane(javafx.scene.layout.Pane) KeyCode(javafx.scene.input.KeyCode) HBox(javafx.scene.layout.HBox) Color(javafx.scene.paint.Color) YoChartGroupPanelController(us.ihmc.scs2.sessionVisualizer.controllers.chart.YoChartGroupPanelController) SplitPane(javafx.scene.control.SplitPane) Label(javafx.scene.control.Label) Node(javafx.scene.Node) Property(javafx.beans.property.Property) Conversions(us.ihmc.commons.Conversions) KeyEvent(javafx.scene.input.KeyEvent) SessionAdvancedControlsController(us.ihmc.scs2.sessionVisualizer.controllers.SessionAdvancedControlsController) FXML(javafx.fxml.FXML) Cursor(javafx.scene.Cursor) AnimationTimer(javafx.animation.AnimationTimer) Priority(javafx.scene.layout.Priority) BooleanProperty(javafx.beans.property.BooleanProperty) Stage(javafx.stage.Stage) AnchorPane(javafx.scene.layout.AnchorPane) JFXDrawer(com.jfoenix.controls.JFXDrawer) Plotter2D(us.ihmc.scs2.sessionVisualizer.plotter.Plotter2D) JFXHamburger(com.jfoenix.controls.JFXHamburger) SubScene(javafx.scene.SubScene) HamburgerSlideCloseTransition(com.jfoenix.transitions.hamburger.HamburgerSlideCloseTransition) HBox(javafx.scene.layout.HBox) Node(javafx.scene.Node) StackPane(javafx.scene.layout.StackPane)

Example 22 with Cursor

use of javafx.scene.Cursor in project JFoenix by sshahine.

the class JFXDecorator method handleDragEventOnDecoratorPane.

private void handleDragEventOnDecoratorPane(MouseEvent mouseEvent) {
    isDragging = true;
    if (!mouseEvent.isPrimaryButtonDown() || (xOffset == -1 && yOffset == -1)) {
        return;
    }
    /*
         * Long press generates drag event!
         */
    if (primaryStage.isFullScreen() || mouseEvent.isStillSincePress() || primaryStage.isMaximized() || maximized) {
        return;
    }
    newX = mouseEvent.getScreenX();
    newY = mouseEvent.getScreenY();
    double deltax = newX - initX;
    double deltay = newY - initY;
    Cursor cursor = this.getCursor();
    if (Cursor.E_RESIZE.equals(cursor)) {
        setStageWidth(initWidth + deltax);
        mouseEvent.consume();
    } else if (Cursor.NE_RESIZE.equals(cursor)) {
        if (setStageHeight(initHeight - deltay)) {
            primaryStage.setY(initStageY + deltay);
        }
        setStageWidth(initWidth + deltax);
        mouseEvent.consume();
    } else if (Cursor.SE_RESIZE.equals(cursor)) {
        setStageWidth(initWidth + deltax);
        setStageHeight(initHeight + deltay);
        mouseEvent.consume();
    } else if (Cursor.S_RESIZE.equals(cursor)) {
        setStageHeight(initHeight + deltay);
        mouseEvent.consume();
    } else if (Cursor.W_RESIZE.equals(cursor)) {
        if (setStageWidth(initWidth - deltax)) {
            primaryStage.setX(initStageX + deltax);
        }
        mouseEvent.consume();
    } else if (Cursor.SW_RESIZE.equals(cursor)) {
        if (setStageWidth(initWidth - deltax)) {
            primaryStage.setX(initStageX + deltax);
        }
        setStageHeight(initHeight + deltay);
        mouseEvent.consume();
    } else if (Cursor.NW_RESIZE.equals(cursor)) {
        if (setStageWidth(initWidth - deltax)) {
            primaryStage.setX(initStageX + deltax);
        }
        if (setStageHeight(initHeight - deltay)) {
            primaryStage.setY(initStageY + deltay);
        }
        mouseEvent.consume();
    } else if (Cursor.N_RESIZE.equals(cursor)) {
        if (setStageHeight(initHeight - deltay)) {
            primaryStage.setY(initStageY + deltay);
        }
        mouseEvent.consume();
    } else if (allowMove) {
        primaryStage.setX(mouseEvent.getScreenX() - xOffset);
        primaryStage.setY(mouseEvent.getScreenY() - yOffset);
        mouseEvent.consume();
    }
}
Also used : Cursor(javafx.scene.Cursor)

Example 23 with Cursor

use of javafx.scene.Cursor in project controlsfx by controlsfx.

the class SnapshotViewSkin method handleMouseEvent.

/* ************************************************************************
     *                                                                         *
     * Mouse Events                                                            *
     *                                                                         *
     **************************************************************************/
/**
 * Handles mouse events.
 *
 * @param event
 *            the {@link MouseEvent} to handle
 */
private void handleMouseEvent(MouseEvent event) {
    Cursor newCursor = handleMouseEventImpl(event);
    mouseNode.setCursor(newCursor);
}
Also used : Cursor(javafx.scene.Cursor)

Example 24 with Cursor

use of javafx.scene.Cursor in project GameComposer by mirkosertic.

the class UndecoratorController method setStageResizableWith.

/**
 * Stage resize management
 *
 * @param stage
 * @param node
 * @param PADDING
 * @param SHADOW
 */
public void setStageResizableWith(final Stage stage, final Node node, int PADDING, int SHADOW) {
    RESIZE_PADDING = PADDING;
    SHADOW_WIDTH = SHADOW;
    node.setOnMouseClicked(mouseEvent -> {
        if (undecorator.getStageStyle() != StageStyle.UTILITY && !stage.isFullScreen() && mouseEvent.getClickCount() > 1) {
            if (mouseEvent.getSceneY() - SHADOW_WIDTH < MAXIMIZE_BORDER) {
                undecorator.maximizeProperty().set(!undecorator.maximizeProperty().get());
                mouseEvent.consume();
            }
        }
    });
    node.setOnMousePressed(mouseEvent -> {
        if (mouseEvent.isPrimaryButtonDown()) {
            initX = mouseEvent.getScreenX();
            initY = mouseEvent.getScreenY();
            mouseEvent.consume();
        }
    });
    node.setOnMouseDragged(mouseEvent -> {
        if (!mouseEvent.isPrimaryButtonDown() || (initX == -1 && initY == -1)) {
            return;
        }
        if (stage.isFullScreen()) {
            return;
        }
        /*
             * Long press generates drag event!
             */
        if (mouseEvent.isStillSincePress()) {
            return;
        }
        if (maximized) {
            // Remove maximized state
            undecorator.maximizeProperty.set(false);
            return;
        } else // Docked then moved, so restore state
        if (savedBounds != null) {
            undecorator.setShadow(true);
        }
        newX = mouseEvent.getScreenX();
        newY = mouseEvent.getScreenY();
        double deltax = newX - initX;
        double deltay = newY - initY;
        Cursor cursor = node.getCursor();
        if (Cursor.E_RESIZE.equals(cursor)) {
            setStageWidth(stage, stage.getWidth() + deltax);
            mouseEvent.consume();
        } else if (Cursor.NE_RESIZE.equals(cursor)) {
            if (setStageHeight(stage, stage.getHeight() - deltay)) {
                setStageY(stage, stage.getY() + deltay);
            }
            setStageWidth(stage, stage.getWidth() + deltax);
            mouseEvent.consume();
        } else if (Cursor.SE_RESIZE.equals(cursor)) {
            setStageWidth(stage, stage.getWidth() + deltax);
            setStageHeight(stage, stage.getHeight() + deltay);
            mouseEvent.consume();
        } else if (Cursor.S_RESIZE.equals(cursor)) {
            setStageHeight(stage, stage.getHeight() + deltay);
            mouseEvent.consume();
        } else if (Cursor.W_RESIZE.equals(cursor)) {
            if (setStageWidth(stage, stage.getWidth() - deltax)) {
                stage.setX(stage.getX() + deltax);
            }
            mouseEvent.consume();
        } else if (Cursor.SW_RESIZE.equals(cursor)) {
            if (setStageWidth(stage, stage.getWidth() - deltax)) {
                stage.setX(stage.getX() + deltax);
            }
            setStageHeight(stage, stage.getHeight() + deltay);
            mouseEvent.consume();
        } else if (Cursor.NW_RESIZE.equals(cursor)) {
            if (setStageWidth(stage, stage.getWidth() - deltax)) {
                stage.setX(stage.getX() + deltax);
            }
            if (setStageHeight(stage, stage.getHeight() - deltay)) {
                setStageY(stage, stage.getY() + deltay);
            }
            mouseEvent.consume();
        } else if (Cursor.N_RESIZE.equals(cursor)) {
            if (setStageHeight(stage, stage.getHeight() - deltay)) {
                setStageY(stage, stage.getY() + deltay);
            }
            mouseEvent.consume();
        }
    });
    node.setOnMouseMoved(mouseEvent -> {
        if (maximized) {
            setCursor(node, Cursor.DEFAULT);
            // maximized mode does not support resize
            return;
        }
        if (stage.isFullScreen()) {
            return;
        }
        if (!stage.isResizable()) {
            return;
        }
        double x = mouseEvent.getX();
        double y = mouseEvent.getY();
        Bounds boundsInParent = node.getBoundsInParent();
        if (isRightEdge(x, y, boundsInParent)) {
            if (y < RESIZE_PADDING + SHADOW_WIDTH) {
                setCursor(node, Cursor.NE_RESIZE);
            } else if (y > boundsInParent.getHeight() - (double) (RESIZE_PADDING + SHADOW_WIDTH)) {
                setCursor(node, Cursor.SE_RESIZE);
            } else {
                setCursor(node, Cursor.E_RESIZE);
            }
        } else if (isLeftEdge(x, y, boundsInParent)) {
            if (y < RESIZE_PADDING + SHADOW_WIDTH) {
                setCursor(node, Cursor.NW_RESIZE);
            } else if (y > boundsInParent.getHeight() - (double) (RESIZE_PADDING + SHADOW_WIDTH)) {
                setCursor(node, Cursor.SW_RESIZE);
            } else {
                setCursor(node, Cursor.W_RESIZE);
            }
        } else if (isTopEdge(x, y, boundsInParent)) {
            setCursor(node, Cursor.N_RESIZE);
        } else if (isBottomEdge(x, y, boundsInParent)) {
            setCursor(node, Cursor.S_RESIZE);
        } else {
            setCursor(node, Cursor.DEFAULT);
        }
    });
}
Also used : Bounds(javafx.geometry.Bounds) Cursor(javafx.scene.Cursor)

Example 25 with Cursor

use of javafx.scene.Cursor in project bined-lib-java by exbin.

the class DefaultCodeAreaMouseListener method updateMouseCursor.

private void updateMouseCursor(MouseEvent me) {
    int cursorShape = ((CaretCapable) codeArea).getMouseCursorShape((int) computeRelativeX(me), (int) computeRelativeY(me));
    // Reuse current cursor if unchanged
    Cursor newCursor = cursorShape == 0 ? defaultCursor : textCursor;
    if (newCursor != currentCursor) {
        currentCursor = newCursor;
        codeArea.setCursor(newCursor);
    }
}
Also used : CaretCapable(org.exbin.bined.capability.CaretCapable) Cursor(javafx.scene.Cursor)

Aggregations

Cursor (javafx.scene.Cursor)26 List (java.util.List)5 Point2D (javafx.geometry.Point2D)5 MouseEvent (javafx.scene.input.MouseEvent)5 Objects (java.util.Objects)4 ImageCursor (javafx.scene.ImageCursor)4 Label (javafx.scene.control.Label)4 BufferedImage (java.awt.image.BufferedImage)3 ArrayList (java.util.ArrayList)3 Optional (java.util.Optional)3 Collectors (java.util.stream.Collectors)3 Color (java.awt.Color)2 Graphics2D (java.awt.Graphics2D)2 Rectangle (java.awt.Rectangle)2 RenderingHints (java.awt.RenderingHints)2 DataBufferInt (java.awt.image.DataBufferInt)2 Collection (java.util.Collection)2 Collections (java.util.Collections)2 Map (java.util.Map)2 ResourceBundle (java.util.ResourceBundle)2