Search in sources :

Example 31 with Node

use of javafx.scene.Node in project trex-stateless-gui by cisco-system-traffic-generator.

the class StatsTableGenerator method generateXStatPane.

public GridPane generateXStatPane(boolean full, Port port, boolean notempty, String filter, boolean resetCounters) {
    if (full) {
        statXTable.getChildren().clear();
        Util.optimizeMemory();
    }
    Map<String, Long> xstatsList = port.getXstats();
    Map<String, Long> xstatsListPinned = port.getXstatsPinned();
    String pinnedChar = "✖";
    String notPinnedChar = "✚";
    /*String pinnedChar = "☑";
        String notPinnedChar = "☐";*/
    rowIndex = 0;
    addHeaderCell(statXTable, "xstats-header0", "Counter", 0, WIDTH_COL_0 * 1.5);
    addHeaderCell(statXTable, "xstats-header1", "Value", 1, WIDTH_COL_1);
    addHeaderCell(statXTable, "xstats-header2", "Pin", 2, WIDTH_COL_PIN);
    rowIndex = 1;
    odd = true;
    xstatsListPinned.forEach((k, v) -> {
        if (v != null) {
            if (resetCounters) {
                fixCounter(port.getIndex(), k, v);
            }
            Node check = new Label(pinnedChar);
            GridPane.setHalignment(check, HPos.CENTER);
            addXstatRow(statXTable, (event) -> xstatsListPinned.remove(k, v), "xstat-red", "xstat-green", new Tooltip("Click '" + pinnedChar + "' to un-pin the counter."), "xstats-val-0-" + rowIndex, k, WIDTH_COL_0 * 1.5, 0, "xstats-val-1-" + rowIndex, String.valueOf(v - getShadowCounter(port.getIndex(), k)), WIDTH_COL_1, 1, "xstats-val-2-" + rowIndex, pinnedChar, WIDTH_COL_PIN, 2);
        }
    });
    xstatsList.forEach((k, v) -> {
        if (v != null && (!notempty || (notempty && (v - getShadowCounter(port.getIndex(), k) != 0))) && xstatsListPinned.get(k) == null) {
            if ((filter == null || filter.trim().length() == 0) || k.contains(filter)) {
                if (resetCounters) {
                    fixCounter(port.getIndex(), k, v);
                }
                Node check = new Label(notPinnedChar);
                GridPane.setHalignment(check, HPos.CENTER);
                addXstatRow(statXTable, (event) -> xstatsListPinned.put(k, v), "xstat-green", "xstat-red", new Tooltip("Click '" + notPinnedChar + "' to pin the counter.\nPinned counter is always visible."), "xstats-val-0-" + rowIndex, k, WIDTH_COL_0 * 1.5, 0, "xstats-val-1-" + rowIndex, String.valueOf(v - getShadowCounter(port.getIndex(), k)), WIDTH_COL_1, 1, "xstats-val-2-" + rowIndex, notPinnedChar, WIDTH_COL_PIN, 2);
            }
        }
    });
    GridPane gp = new GridPane();
    gp.setGridLinesVisible(false);
    gp.add(statXTable, 1, 1, 1, 2);
    return gp;
}
Also used : GridPane(javafx.scene.layout.GridPane) Node(javafx.scene.Node) Tooltip(javafx.scene.control.Tooltip) Label(javafx.scene.control.Label)

Example 32 with Node

use of javafx.scene.Node in project Gargoyle by callakrsos.

the class SkinPreviewViewComposite method previewTabInit.

@FxPostInitialize
public void previewTabInit() {
    Task<Void> task = new Task<Void>() {

        @Override
        protected Void call() throws Exception {
            Thread.sleep(5000L);
            Platform.runLater(() -> {
                //메뉴바 배경.
                {
                    Background background = mbSample.getBackground();
                    Color fill = (Color) background.getFills().get(0).getFill();
                    colorMbSample.setValue(fill);
                    //메뉴바 텍스트
                    {
                        Label lookup = (Label) mbSample.lookup(".label");
                        Color textFill = (Color) lookup.getTextFill();
                        colorMbLabelSample.setValue(textFill);
                    }
                }
                //Hbox 배경.
                {
                    Background background = hboxSample.getBackground();
                    Color fill = (Color) background.getFills().get(0).getFill();
                    colorHboxSample.setValue(fill);
                }
                {
                    //선택디지않는 탭 색상 처리.
                    Set<Node> lookupAll = tabpaneSample.lookupAll(".tab:top");
                    lookupAll.forEach(lookup -> {
                        Optional<PseudoClass> findFirst = lookup.getPseudoClassStates().stream().filter(v -> {
                            return "selected".equals(v.getPseudoClassName());
                        }).findFirst();
                        if (findFirst.isPresent()) {
                            Label selectedTabLabel = (Label) lookup.lookup(".tab-label");
                            Color textFill = (Color) selectedTabLabel.getTextFill();
                            colorSelectedTabText.setValue(textFill);
                        } else {
                            Label selectedTabLabel = (Label) lookup.lookup(".tab-label");
                            Color textFill = (Color) selectedTabLabel.getTextFill();
                            colorUnSelectedTabText.setValue(textFill);
                        }
                    });
                    {
                        lookupAll.stream().findFirst().ifPresent(n -> {
                            Pane p = (Pane) n;
                            Background background = p.getBackground();
                            Color fill = (Color) background.getFills().get(0).getFill();
                            colorTabSample1Selected.setValue(fill);
                        });
                    }
                }
            });
            return null;
        }
    };
    Window window = this.getScene().getWindow();
    if (window != null) {
        FxUtil.showLoading(window, task);
    } else
        FxUtil.showLoading(task);
}
Also used : Button(javafx.scene.control.Button) TextArea(javafx.scene.control.TextArea) PseudoClass(javafx.css.PseudoClass) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) DialogUtil(com.kyj.fx.voeditor.visual.util.DialogUtil) TableColumn(javafx.scene.control.TableColumn) Task(javafx.concurrent.Task) TabPane(javafx.scene.control.TabPane) Map(java.util.Map) FileUtil(com.kyj.fx.voeditor.visual.util.FileUtil) TableView(javafx.scene.control.TableView) Pane(javafx.scene.layout.Pane) ColorPicker(javafx.scene.control.ColorPicker) HBox(javafx.scene.layout.HBox) Color(javafx.scene.paint.Color) Pair(javafx.util.Pair) Logger(org.slf4j.Logger) Label(javafx.scene.control.Label) MenuBar(javafx.scene.control.MenuBar) Node(javafx.scene.Node) FXMLController(com.kyj.fx.voeditor.visual.framework.annotation.FXMLController) Set(java.util.Set) IOException(java.io.IOException) ValueUtil(com.kyj.fx.voeditor.visual.util.ValueUtil) JFXToggleButton(com.jfoenix.controls.JFXToggleButton) Background(javafx.scene.layout.Background) File(java.io.File) FxPostInitialize(com.kyj.fx.voeditor.visual.framework.annotation.FxPostInitialize) Platform(javafx.application.Platform) FXML(javafx.fxml.FXML) FxUtil(com.kyj.fx.voeditor.visual.util.FxUtil) List(java.util.List) Stage(javafx.stage.Stage) Optional(java.util.Optional) Window(javafx.stage.Window) SkinManager(com.kyj.fx.voeditor.visual.momory.SkinManager) ObservableList(javafx.collections.ObservableList) BorderPane(javafx.scene.layout.BorderPane) StringProperty(javafx.beans.property.StringProperty) Window(javafx.stage.Window) Task(javafx.concurrent.Task) Set(java.util.Set) Background(javafx.scene.layout.Background) Optional(java.util.Optional) Color(javafx.scene.paint.Color) Label(javafx.scene.control.Label) TabPane(javafx.scene.control.TabPane) Pane(javafx.scene.layout.Pane) BorderPane(javafx.scene.layout.BorderPane) FxPostInitialize(com.kyj.fx.voeditor.visual.framework.annotation.FxPostInitialize)

Example 33 with Node

use of javafx.scene.Node in project Gargoyle by callakrsos.

the class ButtonStyleViewComposite method initialize.

@FXML
public void initialize() {
    loadButtonStyles();
    colSkinName.setCellValueFactory(param -> {
        return new SimpleStringProperty(param.getValue().getName());
    });
    tbSkins.getSelectionModel().selectedItemProperty().addListener((oba, o, n) -> {
        File selectedItem = n;
        if (selectedItem != null && selectedItem.exists()) {
            String readFile = FileUtil.readFile(selectedItem, true, null);
            txtStyle.setText(readFile);
            try {
                List<Node> findAllByNodes = FxUtil.findAllByNodes(borPreview, node -> node instanceof Button);
                String className = String.format("%s", selectedItem.getName().replaceAll(".css", ""));
                LOGGER.debug("{}", className);
                findAllByNodes.forEach(btn -> {
                    btn.getStyleClass().add("button");
                    btn.getStyleClass().add(className);
                });
                borPreview.getStylesheets().clear();
                borPreview.getStylesheets().add(selectedItem.toURI().toURL().toExternalForm());
                borPreview.applyCss();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            txtStyle.setText("");
        }
    });
}
Also used : Button(javafx.scene.control.Button) Node(javafx.scene.Node) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) File(java.io.File) FXML(javafx.fxml.FXML)

Example 34 with Node

use of javafx.scene.Node in project Gargoyle by callakrsos.

the class DockTitleBar method handle.

@Override
public void handle(MouseEvent event) {
    //이벤트 관련 코드 추가. 마우스 메인키클릭의 경우에만 적용.
    if (MouseButton.PRIMARY != event.getButton())
        return;
    if (event.getEventType() == MouseEvent.MOUSE_PRESSED) {
        if (dockNode.isFloating() && event.getClickCount() == 2 && event.getButton() == MouseButton.PRIMARY) {
            dockNode.setMaximized(!dockNode.isMaximized());
        } else {
            // drag detected is used in place of mouse pressed so there is
            // some threshold for the
            // dragging which is determined by the default drag detection
            // threshold
            dragStart = new Point2D(event.getX(), event.getY());
        }
    } else if (event.getEventType() == MouseEvent.DRAG_DETECTED) {
        if (!dockNode.isFloating()) {
            // the height of this title bar
            if (!dockNode.isCustomTitleBar() && dockNode.isDecorated()) {
                dockNode.setFloating(true, new Point2D(0, DockTitleBar.this.getHeight()));
            } else {
                dockNode.setFloating(true);
            }
            // TODO: Find a better solution.
            // Temporary work around for nodes losing the drag event when
            // removed from
            // the scene graph.
            // A possible alternative is to use "ghost" panes in the
            // DockPane layout
            // while making DockNode simply an overlay stage that is always
            // shown.
            // However since flickering when popping out was already
            // eliminated that would
            // be overkill and is not a suitable solution for native
            // decorations.
            // Bug report open:
            // https://bugs.openjdk.java.net/browse/JDK-8133335
            DockPane dockPane = this.getDockNode().getDockPane();
            if (dockPane != null) {
                dockPane.addEventFilter(MouseEvent.MOUSE_DRAGGED, this);
                dockPane.addEventFilter(MouseEvent.MOUSE_RELEASED, this);
            }
        } else if (dockNode.isMaximized()) {
            double ratioX = event.getX() / this.getDockNode().getWidth();
            double ratioY = event.getY() / this.getDockNode().getHeight();
            // Please note that setMaximized is ruined by width and height
            // changes occurring on the
            // stage and there is currently a bug report filed for this
            // though I did not give them an
            // accurate test case which I should and wish I would have. This
            // was causing issues in the
            // original release requiring maximized behavior to be
            // implemented manually by saving the
            // restored bounds. The problem was that the resize
            // functionality in DockNode.java was
            // executing at the same time canceling the maximized change.
            // https://bugs.openjdk.java.net/browse/JDK-8133334
            // restore/minimize the window after we have obtained its
            // dimensions
            dockNode.setMaximized(false);
            // scale the drag start location by our restored dimensions
            dragStart = new Point2D(ratioX * dockNode.getWidth(), ratioY * dockNode.getHeight());
        }
        dragging = true;
        event.consume();
    } else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
        if (dockNode.isFloating() && event.getClickCount() == 2 && event.getButton() == MouseButton.PRIMARY) {
            event.setDragDetect(false);
            event.consume();
            return;
        }
        if (!dragging)
            return;
        Stage stage = dockNode.getStage();
        Insets insetsDelta = this.getDockNode().getBorderPane().getInsets();
        // dragging this way makes the interface more responsive in the
        // event
        // the system is lagging as is the case with most current JavaFX
        // implementations on Linux
        stage.setX(event.getScreenX() - dragStart.getX() - insetsDelta.getLeft());
        stage.setY(event.getScreenY() - dragStart.getY() - insetsDelta.getTop());
        // TODO: change the pick result by adding a copyForPick()
        DockEvent dockEnterEvent = new DockEvent(this, DockEvent.NULL_SOURCE_TARGET, DockEvent.DOCK_ENTER, event.getX(), event.getY(), event.getScreenX(), event.getScreenY(), null, this.getDockNode());
        DockEvent dockOverEvent = new DockEvent(this, DockEvent.NULL_SOURCE_TARGET, DockEvent.DOCK_OVER, event.getX(), event.getY(), event.getScreenX(), event.getScreenY(), null, this.getDockNode());
        DockEvent dockExitEvent = new DockEvent(this, DockEvent.NULL_SOURCE_TARGET, DockEvent.DOCK_EXIT, event.getX(), event.getY(), event.getScreenX(), event.getScreenY(), null, this.getDockNode());
        EventTask eventTask = new EventTask() {

            @Override
            public void run(Node node, Node dragNode) {
                executions++;
                if (dragNode != node) {
                    Event.fireEvent(node, dockEnterEvent.copyFor(DockTitleBar.this, node));
                    if (dragNode != null) {
                        // fire the dock exit first so listeners
                        // can actually keep track of the node we
                        // are currently over and know when we
                        // aren't over any which DOCK_OVER
                        // does not provide
                        Event.fireEvent(dragNode, dockExitEvent.copyFor(DockTitleBar.this, dragNode));
                    }
                    dragNodes.put(node.getScene().getWindow(), node);
                }
                Event.fireEvent(node, dockOverEvent.copyFor(DockTitleBar.this, node));
            }
        };
        this.pickEventTarget(new Point2D(event.getScreenX(), event.getScreenY()), eventTask, dockExitEvent);
    } else if (event.getEventType() == MouseEvent.MOUSE_RELEASED) {
        dragging = false;
        DockEvent dockReleasedEvent = new DockEvent(this, DockEvent.NULL_SOURCE_TARGET, DockEvent.DOCK_RELEASED, event.getX(), event.getY(), event.getScreenX(), event.getScreenY(), null, this.getDockNode());
        EventTask eventTask = new EventTask() {

            @Override
            public void run(Node node, Node dragNode) {
                executions++;
                //					if (dragNode != node) {
                //						Event.fireEvent(node, dockReleasedEvent.copyFor(DockTitleBar.this, node));
                //					}
                Event.fireEvent(node, dockReleasedEvent.copyFor(DockTitleBar.this, node));
            }
        };
        this.pickEventTarget(new Point2D(event.getScreenX(), event.getScreenY()), eventTask, null);
        dragNodes.clear();
        // Remove temporary event handler for bug mentioned above.
        DockPane dockPane = this.getDockNode().getDockPane();
        if (dockPane != null) {
            dockPane.removeEventFilter(MouseEvent.MOUSE_DRAGGED, this);
            dockPane.removeEventFilter(MouseEvent.MOUSE_RELEASED, this);
        }
    }
}
Also used : Insets(javafx.geometry.Insets) Point2D(javafx.geometry.Point2D) Node(javafx.scene.Node) Stage(javafx.stage.Stage)

Example 35 with Node

use of javafx.scene.Node in project Gargoyle by callakrsos.

the class FxUtil method newInstance.

private static <T, C> T newInstance(Class<?> controllerClass, Object rootInstance, boolean isSelfController, String _fxml, Consumer<T> option, Consumer<C> controllerAction) throws Exception {
    String fxml = _fxml;
    if (fxml == null) {
        FXMLController controller = getFxmlController(controllerClass);
        if (controller == null) {
            throw new GargoyleException("this is not FXMLController. check @FXMLController");
        }
        //controller.value();
        fxml = getFxml(controller);
    }
    URL resource = controllerClass.getResource(fxml);
    FXMLLoader loader = createNewFxmlLoader();
    loader.setLocation(resource);
    if (isSelfController && rootInstance != null) {
        try {
            loader.setRoot(rootInstance);
            loader.setController(rootInstance);
        } catch (Exception e) {
            throw new GargoyleException(e);
        }
    }
    T load = loader.load();
    C instanceController = loader.getController();
    // show warning...
    if (load == null) {
        LOGGER.warn("load result is empty.. controller class : {} ", controllerClass);
    }
    Method[] declaredMethods = controllerClass.getDeclaredMethods();
    //  2017-02-07 findfirst에서 어노테이션으로 선언된 다건의 함수를 호출하게 다시 유도.
    //  findfirst로 수정. @FxPostInitialize가 여러건있는경우를 잘못된 로직 유도를 방지.
    Stream.of(declaredMethods).filter(m -> m.getParameterCount() == 0 && m.getAnnotation(FxPostInitialize.class) != null).forEach(m -> {
        if (m.getModifiers() == Modifier.PUBLIC) {
            try {
                if (instanceController != null) {
                    Platform.runLater(() -> {
                        try {
                            m.setAccessible(true);
                            m.invoke(instanceController);
                        } catch (Exception e) {
                            LOGGER.error(ValueUtil.toString(e));
                        }
                    });
                }
            } catch (Exception e) {
                LOGGER.error(ValueUtil.toString(e));
            }
        }
    });
    if (option != null) {
        option.accept(load);
    }
    if (controllerAction != null)
        controllerAction.accept(instanceController);
    Platform.runLater(() -> {
        Parent parent = (Parent) load;
        List<Node> findAllByNodes = FxUtil.findAllByNodes(parent, v -> v instanceof Button);
        findAllByNodes.forEach(v -> {
            GargoyleButtonBuilder.applyStyleClass((Button) v, SkinManager.BUTTON_STYLE_CLASS_NAME);
        });
    });
    return load;
}
Also used : StageStyle(javafx.stage.StageStyle) PageOrientation(javafx.print.PageOrientation) Printer(javafx.print.Printer) SnapshotParameters(javafx.scene.SnapshotParameters) Transition(javafx.animation.Transition) AnimationType(jidefx.animation.AnimationType) PageLayout(javafx.print.PageLayout) TabPane(javafx.scene.control.TabPane) FontPosture(javafx.scene.text.FontPosture) Map(java.util.Map) Point2D(javafx.geometry.Point2D) PopOver(org.controlsfx.control.PopOver) Rectangle2D(javafx.geometry.Rectangle2D) Pair(javafx.util.Pair) Set(java.util.Set) SnapshotResult(javafx.scene.SnapshotResult) KeyEvent(javafx.scene.input.KeyEvent) Screen(javafx.stage.Screen) ScmCommitComposite(com.kyj.fx.voeditor.visual.component.scm.ScmCommitComposite) Platform(javafx.application.Platform) Stream(java.util.stream.Stream) Region(javafx.scene.layout.Region) FxContextManager(com.kyj.fx.voeditor.visual.framework.contextmenu.FxContextManager) ObservableList(javafx.collections.ObservableList) BorderPane(javafx.scene.layout.BorderPane) MouseButton(javafx.scene.input.MouseButton) TreeItem(javafx.scene.control.TreeItem) DockNode(com.kyj.fx.voeditor.visual.component.dock.pane.DockNode) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) FXMLLoader(javafx.fxml.FXMLLoader) GargoyleButtonBuilder(com.kyj.fx.voeditor.visual.framework.builder.GargoyleButtonBuilder) Color(javafx.scene.paint.Color) Properties(java.util.Properties) TitledPane(javafx.scene.control.TitledPane) Node(javafx.scene.Node) PopupFeatures(javafx.scene.web.PopupFeatures) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) File(java.io.File) FileChooser(javafx.stage.FileChooser) Tab(javafx.scene.control.Tab) ImageView(javafx.scene.image.ImageView) ObservableValue(javafx.beans.value.ObservableValue) SkinManager(com.kyj.fx.voeditor.visual.momory.SkinManager) Image(javafx.scene.image.Image) Button(javafx.scene.control.Button) URL(java.net.URL) LoggerFactory(org.slf4j.LoggerFactory) JavaTextArea(com.kyj.fx.voeditor.visual.component.text.JavaTextArea) ToExcelFileFunction(com.kyj.fx.voeditor.visual.functions.ToExcelFileFunction) WebEvent(javafx.scene.web.WebEvent) JavaSVNManager(com.kyj.scm.manager.svn.java.JavaSVNManager) SvnChagnedCodeComposite(com.kyj.fx.voeditor.visual.component.scm.SvnChagnedCodeComposite) Parent(javafx.scene.Parent) FileSystemView(javax.swing.filechooser.FileSystemView) Task(javafx.concurrent.Task) InstanceTypes(com.kyj.fx.voeditor.visual.framework.InstanceTypes) ImageIO(javax.imageio.ImageIO) WindowEvent(javafx.stage.WindowEvent) TableView(javafx.scene.control.TableView) Method(java.lang.reflect.Method) AutoCompletionTextFieldBinding(impl.org.controlsfx.autocompletion.AutoCompletionTextFieldBinding) FxSVNHistoryDataSupplier(com.kyj.fx.voeditor.visual.component.scm.FxSVNHistoryDataSupplier) TextField(javafx.scene.control.TextField) GargoyleLoadBar(com.kyj.fx.voeditor.visual.component.bar.GargoyleLoadBar) Paper(javafx.print.Paper) BufferedImage(java.awt.image.BufferedImage) Predicate(java.util.function.Predicate) FXMLController(com.kyj.fx.voeditor.visual.framework.annotation.FXMLController) Font(javafx.scene.text.Font) Icon(javax.swing.Icon) Collectors(java.util.stream.Collectors) FxPostInitialize(com.kyj.fx.voeditor.visual.framework.annotation.FxPostInitialize) MarginType(javafx.print.Printer.MarginType) List(java.util.List) Modifier(java.lang.reflect.Modifier) Scale(javafx.scene.transform.Scale) Optional(java.util.Optional) FontWeight(javafx.scene.text.FontWeight) AnimationUtils(jidefx.animation.AnimationUtils) Scene(javafx.scene.Scene) GargoyleBuilderFactory(com.kyj.fx.voeditor.visual.framework.builder.GargoyleBuilderFactory) WebEngine(javafx.scene.web.WebEngine) TextArea(javafx.scene.control.TextArea) MouseEvent(javafx.scene.input.MouseEvent) WebViewConsole(com.kyj.fx.voeditor.visual.component.console.WebViewConsole) Function(java.util.function.Function) TableColumn(javafx.scene.control.TableColumn) TableCell(javafx.scene.control.TableCell) Charset(java.nio.charset.Charset) State(javafx.concurrent.Worker.State) JavaTextView(com.kyj.fx.voeditor.visual.component.popup.JavaTextView) Callback(javafx.util.Callback) Tooltip(javafx.scene.control.Tooltip) GargoyleException(com.kyj.fx.voeditor.visual.exceptions.GargoyleException) FxMemory(com.kyj.fx.voeditor.visual.momory.FxMemory) PrinterJob(javafx.print.PrinterJob) OutputStream(java.io.OutputStream) KeyCode(javafx.scene.input.KeyCode) WebView(javafx.scene.web.WebView) Modality(javafx.stage.Modality) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) CloseableParent(com.kyj.fx.voeditor.visual.main.layout.CloseableParent) TablePosition(javafx.scene.control.TablePosition) WritableImage(javafx.scene.image.WritableImage) FileInputStream(java.io.FileInputStream) Consumer(java.util.function.Consumer) GargoyleSynchLoadBar(com.kyj.fx.voeditor.visual.component.bar.GargoyleSynchLoadBar) Stage(javafx.stage.Stage) Closeable(java.io.Closeable) SwingFXUtils(javafx.embed.swing.SwingFXUtils) Window(javafx.stage.Window) ChangeListener(javafx.beans.value.ChangeListener) InputStream(java.io.InputStream) SharedMemory(com.kyj.fx.voeditor.visual.momory.SharedMemory) Parent(javafx.scene.Parent) CloseableParent(com.kyj.fx.voeditor.visual.main.layout.CloseableParent) DockNode(com.kyj.fx.voeditor.visual.component.dock.pane.DockNode) Node(javafx.scene.Node) Method(java.lang.reflect.Method) GargoyleException(com.kyj.fx.voeditor.visual.exceptions.GargoyleException) FXMLLoader(javafx.fxml.FXMLLoader) URL(java.net.URL) IOException(java.io.IOException) GargoyleException(com.kyj.fx.voeditor.visual.exceptions.GargoyleException) MouseButton(javafx.scene.input.MouseButton) Button(javafx.scene.control.Button) FXMLController(com.kyj.fx.voeditor.visual.framework.annotation.FXMLController)

Aggregations

Node (javafx.scene.Node)130 Stage (javafx.stage.Stage)25 Parent (javafx.scene.Parent)23 Label (javafx.scene.control.Label)19 ArrayList (java.util.ArrayList)18 ObservableList (javafx.collections.ObservableList)16 Button (javafx.scene.control.Button)16 List (java.util.List)15 Scene (javafx.scene.Scene)15 FXML (javafx.fxml.FXML)14 BorderPane (javafx.scene.layout.BorderPane)13 IOException (java.io.IOException)12 HBox (javafx.scene.layout.HBox)12 Color (javafx.scene.paint.Color)12 Platform (javafx.application.Platform)10 Insets (javafx.geometry.Insets)10 FXCollections (javafx.collections.FXCollections)9 MouseEvent (javafx.scene.input.MouseEvent)9 VBox (javafx.scene.layout.VBox)9 FadeTransition (javafx.animation.FadeTransition)8