public static Button create(ProjectNode node, ObjectProperty<ModificationScript> nodeProperty, GseContext context) { Objects.requireNonNull(node); Objects.requireNonNull(context); ProjectFolder folder = node instanceof ProjectFolder ? (ProjectFolder) node : node.getParent().orElse(node.getProject().getRootFolder()); return new NewScriptButton(folder, node.getProject(), nodeProperty, context).button; }
private void showAndWaitDialog(ProjectFolder folder, Project project, Window window, GseContext context) { Dialog<Boolean> dialog = createDialog(folder, project, window, context); dialog.showAndWait().filter(response -> response) .ifPresent(response -> { ProjectFolder targetFolder = folderSelectionPane.nodeProperty().getValue(); ModificationScript newScript = targetFolder.fileBuilder(ModificationScriptBuilder.class) .withName(nameTextField.getText()) .withType(ScriptType.GROOVY) .withContent("") .build(); if (scriptProperty != null) { scriptProperty.setValue(newScript); } }); dialog.close(); } }
private NewScriptButton(ProjectFolder folder, Project project, ObjectProperty<ModificationScript> nodeProperty, GseContext context) { Node newGlyph = Glyph.createAwesomeFont('\uf0f6').size("1.3em") .stack(Glyph.createAwesomeFont('\uf055').color("limegreen").size("0.8em")); scriptProperty = nodeProperty; button = new Button(null, newGlyph); button.setOnAction(event -> showAndWaitDialog(folder, project, button.getScene().getWindow(), context)); }
protected AbstractVirtualCasePane(T node, Scene scene, GseContext context) { this.node = Objects.requireNonNull(node); Objects.requireNonNull(scene); Objects.requireNonNull(context); Project project = node.getProject(); nameTextField = NameTextField.create(node); caseSelectionPane = new ProjectNodeSelectionPane<>(project, RESOURCE_BUNDLE.getString("Case"), true, scene.getWindow(), context, ProjectFile.class, ProjectCase.class); scriptSelectionPane = new ProjectNodeSelectionPane<>(project, RESOURCE_BUNDLE.getString("ModificationScript"), true, scene.getWindow(), context, ModificationScript.class); setVgap(5); setHgap(5); ColumnConstraints column0 = new ColumnConstraints(); ColumnConstraints column1 = new ColumnConstraints(); column1.setHgrow(Priority.ALWAYS); getColumnConstraints().addAll(column0, column1); add(nameTextField.getNameLabel(), 0, 0); add(nameTextField.getInputField(), 1, 0, 2, 1); Platform.runLater(nameTextField.getInputField()::requestFocus); add(caseSelectionPane.getLabel(), 0, 1); add(caseSelectionPane.getTextField(), 1, 1); add(caseSelectionPane.getButton(), 2, 1); add(scriptSelectionPane.getLabel(), 0, 2); add(scriptSelectionPane.getTextField(), 1, 2); add(scriptSelectionPane.getButton(), 2, 2); add(NewScriptButton.create(node, scriptSelectionPane.nodeProperty(), context), 3, 2); add(nameTextField.getFileAlreadyExistsLabel(), 0, 3, 4, 1); }