Search in sources :

Example 61 with MouseEvent

use of javafx.scene.input.MouseEvent in project honest-profiler by jvm-profiling-tools.

the class HPFXUtil method selectCtxMenu.

// Context Menu Selection
public static void selectCtxMenu(FxRobot robot, String triggerId, int itemIndex, String expectedName) {
    javafx.scene.Node node = robot.lookup(triggerId).query();
    waitUntil(() -> node.isVisible() && !node.isDisabled());
    if (isHeadless()) {
        EventHandler<? super MouseEvent> handler = ((Control) node).onMousePressedProperty().get();
        waitUntil(asyncFx(() -> handler.handle(new MouseEvent(MouseEvent.MOUSE_CLICKED, 0, 0, 0, 0, MouseButton.PRIMARY, 1, true, true, true, true, true, true, true, true, true, true, null))));
        waitUntil(() -> ((Control) node).getContextMenu() != null);
        ContextMenu menu = waitUntil(asyncFx(() -> ((Control) node).getContextMenu()));
        MenuItem item = waitUntil(asyncFx(() -> (menu.getItems().get(itemIndex))));
        assertEquals("Wrong ContextMenu MenuItem", expectedName, item.getText());
        waitUntil(asyncFx(() -> item.fire()));
    } else {
        robot.clickOn(node, SECONDARY);
        for (int i = 0; i < itemIndex + 1; i++) {
            robot.type(DOWN);
        }
        robot.type(ENTER);
    }
}
Also used : Control(javafx.scene.control.Control) MouseEvent(javafx.scene.input.MouseEvent) ContextMenu(javafx.scene.control.ContextMenu) MenuItem(javafx.scene.control.MenuItem)

Example 62 with MouseEvent

use of javafx.scene.input.MouseEvent in project jphp by jphp-compiler.

the class DnDTabPaneSkin method hookTabFolderSkin.

@SuppressWarnings("unchecked")
private void hookTabFolderSkin() {
    try {
        // $NON-NLS-1$
        Field f_tabHeaderArea = TabPaneSkin.class.getDeclaredField("tabHeaderArea");
        f_tabHeaderArea.setAccessible(true);
        final Pane tabHeaderArea = (StackPane) f_tabHeaderArea.get(this);
        tabHeaderArea.setOnDragOver(new EventHandler<DragEvent>() {

            @Override
            public void handle(DragEvent e) {
                e.consume();
            }
        });
        // $NON-NLS-1$
        Field f_headersRegion = tabHeaderArea.getClass().getDeclaredField("headersRegion");
        f_headersRegion.setAccessible(true);
        final Pane headersRegion = (StackPane) f_headersRegion.get(tabHeaderArea);
        final EventHandler<MouseEvent> handler = new EventHandler<MouseEvent>() {

            @Override
            public void handle(MouseEvent event) {
                DnDTabPaneSkin.this.tabPane_handleDragStart(event);
            }
        };
        final EventHandler<DragEvent> handlerFinished = new EventHandler<DragEvent>() {

            @Override
            public void handle(DragEvent event) {
                DnDTabPaneSkin.this.tabPane_handleDragDone(event);
            }
        };
        for (Node tabHeaderSkin : headersRegion.getChildren()) {
            tabHeaderSkin.addEventHandler(MouseEvent.DRAG_DETECTED, handler);
            tabHeaderSkin.addEventHandler(DragEvent.DRAG_DONE, handlerFinished);
        }
        headersRegion.getChildren().addListener(new ListChangeListener<Node>() {

            @Override
            public void onChanged(Change<? extends Node> change) {
                while (change.next()) {
                    if (change.wasRemoved()) {
                        for (Node node : change.getRemoved()) {
                            node.removeEventHandler(MouseEvent.DRAG_DETECTED, handler);
                        }
                        for (Node node : change.getRemoved()) {
                            node.removeEventHandler(DragEvent.DRAG_DONE, handlerFinished);
                        }
                    }
                    if (change.wasAdded()) {
                        for (Node node : change.getAddedSubList()) {
                            node.addEventHandler(MouseEvent.DRAG_DETECTED, handler);
                        }
                        for (Node node : change.getAddedSubList()) {
                            node.addEventHandler(DragEvent.DRAG_DONE, handlerFinished);
                        }
                    }
                }
            }
        });
        tabHeaderArea.addEventHandler(DragEvent.DRAG_OVER, new EventHandler<DragEvent>() {

            @Override
            public void handle(DragEvent e) {
                DnDTabPaneSkin.this.tabPane_handleDragOver(tabHeaderArea, headersRegion, e);
            }
        });
        tabHeaderArea.addEventHandler(DragEvent.DRAG_DROPPED, new EventHandler<DragEvent>() {

            @Override
            public void handle(DragEvent e) {
                DnDTabPaneSkin.this.tabPane_handleDragDropped(tabHeaderArea, headersRegion, e);
            }
        });
        tabHeaderArea.addEventHandler(DragEvent.DRAG_EXITED, new EventHandler<DragEvent>() {

            @Override
            public void handle(DragEvent event) {
                DnDTabPaneSkin.this.tabPane_handleDragDone(event);
            }
        });
        // $NON-NLS-1$
        Field field = TabPaneSkin.class.getDeclaredField("openTabAnimation");
        field.setAccessible(true);
        this.openAnimation = (StyleableProperty<Object>) field.get(this);
        // $NON-NLS-1$
        field = TabPaneSkin.class.getDeclaredField("closeTabAnimation");
        field.setAccessible(true);
        this.closeAnimation = (StyleableProperty<Object>) field.get(this);
        for (Class<?> cl : getClass().getDeclaredClasses()) {
            if ("TabAnimation".equals(cl.getSimpleName())) {
                // $NON-NLS-1$
                for (Enum<?> enumConstant : (Enum<?>[]) cl.getEnumConstants()) {
                    if ("NONE".equals(enumConstant.name())) {
                        // $NON-NLS-1$
                        this.noneEnum = enumConstant;
                        break;
                    }
                }
                break;
            }
        }
    } catch (Throwable t) {
        // // TODO Auto-generated catch block
        t.printStackTrace();
    }
}
Also used : MouseEvent(javafx.scene.input.MouseEvent) Node(javafx.scene.Node) EventHandler(javafx.event.EventHandler) StackPane(javafx.scene.layout.StackPane) TabPane(javafx.scene.control.TabPane) Pane(javafx.scene.layout.Pane) TabPaneSkin(com.sun.javafx.scene.control.skin.TabPaneSkin) DragEvent(javafx.scene.input.DragEvent) Field(java.lang.reflect.Field) StackPane(javafx.scene.layout.StackPane)

Example 63 with MouseEvent

use of javafx.scene.input.MouseEvent in project JFoenix by jfoenixadmin.

the class JFXScrollPane method customScrolling.

private static void customScrolling(ScrollPane scrollPane, DoubleProperty scrollDriection, Function<Bounds, Double> sizeFunc) {
    final double[] frictions = { 0.99, 0.1, 0.05, 0.04, 0.03, 0.02, 0.01, 0.04, 0.01, 0.008, 0.008, 0.008, 0.008, 0.0006, 0.0005, 0.00003, 0.00001 };
    final double[] pushes = { 1 };
    final double[] derivatives = new double[frictions.length];
    Timeline timeline = new Timeline();
    final EventHandler<MouseEvent> dragHandler = event -> timeline.stop();
    final EventHandler<ScrollEvent> scrollHandler = event -> {
        if (event.getEventType() == ScrollEvent.SCROLL) {
            int direction = event.getDeltaY() > 0 ? -1 : 1;
            for (int i = 0; i < pushes.length; i++) {
                derivatives[i] += direction * pushes[i];
            }
            if (timeline.getStatus() == Animation.Status.STOPPED) {
                timeline.play();
            }
            event.consume();
        }
    };
    if (scrollPane.getContent().getParent() != null) {
        scrollPane.getContent().getParent().addEventHandler(MouseEvent.DRAG_DETECTED, dragHandler);
        scrollPane.getContent().getParent().addEventHandler(ScrollEvent.ANY, scrollHandler);
    }
    scrollPane.getContent().parentProperty().addListener((o, oldVal, newVal) -> {
        if (oldVal != null) {
            oldVal.removeEventHandler(MouseEvent.DRAG_DETECTED, dragHandler);
            oldVal.removeEventHandler(ScrollEvent.ANY, scrollHandler);
        }
        if (newVal != null) {
            newVal.addEventHandler(MouseEvent.DRAG_DETECTED, dragHandler);
            newVal.addEventHandler(ScrollEvent.ANY, scrollHandler);
        }
    });
    timeline.getKeyFrames().add(new KeyFrame(Duration.millis(3), (event) -> {
        for (int i = 0; i < derivatives.length; i++) {
            derivatives[i] *= frictions[i];
        }
        for (int i = 1; i < derivatives.length; i++) {
            derivatives[i] += derivatives[i - 1];
        }
        double dy = derivatives[derivatives.length - 1];
        double size = sizeFunc.apply(scrollPane.getContent().getLayoutBounds());
        scrollDriection.set(Math.min(Math.max(scrollDriection.get() + dy / size, 0), 1));
        if (Math.abs(dy) < 0.001) {
            timeline.stop();
        }
    }));
    timeline.setCycleCount(Animation.INDEFINITE);
}
Also used : EventHandler(javafx.event.EventHandler) Pos(javafx.geometry.Pos) Color(javafx.scene.paint.Color) KeyFrame(javafx.animation.KeyFrame) javafx.scene.layout(javafx.scene.layout) Node(javafx.scene.Node) MouseEvent(javafx.scene.input.MouseEvent) Timeline(javafx.animation.Timeline) Rectangle(javafx.scene.shape.Rectangle) DoubleProperty(javafx.beans.property.DoubleProperty) ScrollEvent(javafx.scene.input.ScrollEvent) Function(java.util.function.Function) Duration(javafx.util.Duration) Insets(javafx.geometry.Insets) ScrollPane(javafx.scene.control.ScrollPane) DefaultProperty(javafx.beans.DefaultProperty) Scale(javafx.scene.transform.Scale) Transform(javafx.scene.transform.Transform) Animation(javafx.animation.Animation) Bounds(javafx.geometry.Bounds) Timeline(javafx.animation.Timeline) MouseEvent(javafx.scene.input.MouseEvent) ScrollEvent(javafx.scene.input.ScrollEvent) KeyFrame(javafx.animation.KeyFrame)

Example 64 with MouseEvent

use of javafx.scene.input.MouseEvent in project JFoenix by jfoenixadmin.

the class JFXNodeUtils method addPressAndHoldFilter.

public static void addPressAndHoldFilter(Node node, Duration holdTime, EventHandler<MouseEvent> handler) {
    Wrapper<MouseEvent> eventWrapper = new Wrapper<>();
    PauseTransition holdTimer = new PauseTransition(holdTime);
    holdTimer.setOnFinished(event -> handler.handle(eventWrapper.content));
    node.addEventFilter(MouseEvent.MOUSE_PRESSED, event -> {
        eventWrapper.content = event;
        holdTimer.playFromStart();
    });
    node.addEventFilter(MouseEvent.MOUSE_RELEASED, event -> holdTimer.stop());
    node.addEventFilter(MouseEvent.DRAG_DETECTED, event -> holdTimer.stop());
}
Also used : MouseEvent(javafx.scene.input.MouseEvent) PauseTransition(javafx.animation.PauseTransition)

Example 65 with MouseEvent

use of javafx.scene.input.MouseEvent in project JFoenix by jfoenixadmin.

the class JFXNodeUtils method addPressAndHoldHandler.

public static void addPressAndHoldHandler(Node node, Duration holdTime, EventHandler<MouseEvent> handler) {
    Wrapper<MouseEvent> eventWrapper = new Wrapper<>();
    PauseTransition holdTimer = new PauseTransition(holdTime);
    holdTimer.setOnFinished(event -> handler.handle(eventWrapper.content));
    node.addEventHandler(MouseEvent.MOUSE_PRESSED, event -> {
        eventWrapper.content = event;
        holdTimer.playFromStart();
    });
    node.addEventHandler(MouseEvent.MOUSE_RELEASED, event -> holdTimer.stop());
    node.addEventHandler(MouseEvent.DRAG_DETECTED, event -> holdTimer.stop());
}
Also used : MouseEvent(javafx.scene.input.MouseEvent) PauseTransition(javafx.animation.PauseTransition)

Aggregations

MouseEvent (javafx.scene.input.MouseEvent)93 KeyCode (javafx.scene.input.KeyCode)33 Scene (javafx.scene.Scene)32 Group (javafx.scene.Group)29 PerspectiveCamera (javafx.scene.PerspectiveCamera)23 PointLight (javafx.scene.PointLight)22 Rotate (javafx.scene.transform.Rotate)21 List (java.util.List)20 EventHandler (javafx.event.EventHandler)19 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)17 Color (javafx.scene.paint.Color)16 AnimationTimer (javafx.animation.AnimationTimer)14 Image (javafx.scene.image.Image)13 Font (javafx.scene.text.Font)13 ArrayList (java.util.ArrayList)12 Pane (javafx.scene.layout.Pane)12 KeyFrame (javafx.animation.KeyFrame)10 Timeline (javafx.animation.Timeline)10 Insets (javafx.geometry.Insets)10 ImageView (javafx.scene.image.ImageView)10