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);
}
}
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();
}
}
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);
}
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());
}
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());
}
Aggregations