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