Example usage for javafx.scene.control ToggleButton getUserData

List of usage examples for javafx.scene.control ToggleButton getUserData

Introduction

In this page you can find the example usage for javafx.scene.control ToggleButton getUserData.

Prototype

public Object getUserData() 

Source Link

Document

Returns a previously set Object property, or null if no such property has been set using the Node#setUserData(java.lang.Object) method.

Usage

From source file:net.rptools.tokentool.controller.ManageOverlays_Controller.java

@FXML
void deleteOverlayButton_onAction(ActionEvent event) {
    LinkedList<File> overlayFiles = new LinkedList<File>();

    for (Node overlay : overlayViewFlowPane.getChildren()) {
        ToggleButton overlayButton = (ToggleButton) overlay;
        if (overlayButton.isSelected())
            overlayFiles.add((File) overlayButton.getUserData());
    }/*from   ww  w.ja v  a  2s . com*/

    if (confirmDelete(overlayFiles)) {
        for (File file : overlayFiles) {
            log.info("Deleting: " + file.getName());
            file.delete();
        }

        loadImages(overlayTreeView.getSelectionModel().getSelectedItem());
    }
}

From source file:net.rptools.tokentool.controller.ManageOverlays_Controller.java

private void loadImages(File dir) {
    // Clear Details panel
    clearDetails();/*from w w  w.  ja v a  2s .  c o m*/

    currentDirectory = dir;
    File[] files = dir.listFiles(ImageUtil.SUPPORTED_FILENAME_FILTER);

    Task<Void> task = new Task<Void>() {
        @Override
        public Void call() {
            for (File file : files) {
                Path filePath = file.toPath();

                if (loadOverlaysThread.isInterrupted()) {
                    Platform.runLater(() -> overlayViewFlowPane.getChildren().clear());
                    break;
                }

                try {
                    ToggleButton overlayButton = new ToggleButton();
                    ImageView imageViewNode = ImageUtil.getOverlayThumb(new ImageView(), filePath);

                    overlayButton.getStyleClass().add("overlay-toggle-button");
                    overlayButton.setGraphic(imageViewNode);
                    overlayButton.setUserData(file);
                    overlayButton.setToggleGroup(overlayToggleGroup);

                    overlayButton.addEventHandler(ActionEvent.ACTION, event -> {
                        // No modifier keys used so add toggle group back to all buttons
                        resetToggleGroup();

                        // Also set button to selected due to resetting toggle groups & no unselecting needed, makes for better interface IMO
                        overlayButton.setSelected(true);

                        // Update the Details panel with the last selected overlay
                        File overlayFile = (File) overlayButton.getUserData();
                        updateDetails(overlayFile, (ImageView) overlayButton.getGraphic(),
                                overlayButton.isSelected());

                        // Consume the event, no more logic needed
                        event.consume();
                    });

                    overlayButton.setOnMouseClicked(new EventHandler<MouseEvent>() {
                        @Override
                        public void handle(MouseEvent event) {
                            // Allow multiple selections if shortcutKey+left_mouse is pressed
                            if (event.getButton().equals(MouseButton.PRIMARY) && event.isShortcutDown()) {
                                // Update the Details panel with the last selected overlay
                                File overlayFile = (File) overlayButton.getUserData();
                                updateDetails(overlayFile, (ImageView) overlayButton.getGraphic(), true);

                                // Remove the toggle group to allow multiple toggle button selection
                                overlayButton.setToggleGroup(null);

                                // Select the button
                                overlayButton.setSelected(true);

                                // Consume the event, no more logic needed
                                event.consume();
                            }
                        }
                    });

                    Platform.runLater(() -> overlayViewFlowPane.getChildren().add(overlayButton));
                } catch (IOException e) {
                    log.error("Loading image: " + filePath.getFileName(), e);
                }

            }

            return null;
        }
    };

    loadOverlaysThread.interrupt();
    executorService.execute(task);
}