Example usage for javafx.scene.control Dialog setHeaderText

List of usage examples for javafx.scene.control Dialog setHeaderText

Introduction

In this page you can find the example usage for javafx.scene.control Dialog setHeaderText.

Prototype

public final void setHeaderText(String headerText) 

Source Link

Document

Sets the string to show in the dialog header area.

Usage

From source file:jlotoprint.MainViewController.java

public static void loadAboutWindow() {

    //setup/* www . ja va2s. c o  m*/
    Dialog dialog = new Dialog<>();
    dialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE);
    dialog.setTitle("About JLotoPanel");
    dialog.setHeaderText("JLotoPanel v1.0");
    ImageView icon = new ImageView("file:resources/icon.png");
    icon.setSmooth(true);
    icon.setFitHeight(48.0);
    icon.setFitWidth(48.0);
    dialog.setGraphic(icon);
    dialog.initModality(Modality.APPLICATION_MODAL);
    dialog.initOwner(JLotoPrint.stage.getScene().getWindow());
    //content
    GridPane grid = new GridPane();
    grid.setPadding(new Insets(10, 10, 0, 10));

    //text
    TextArea textArea = new TextArea("For more info, please visit: https://github.com/mbppower/JLotoPanel");
    textArea.setWrapText(true);
    grid.add(textArea, 0, 0);
    dialog.getDialogPane().setContent(grid);

    dialog.showAndWait();
}

From source file:cz.lbenda.rcp.DialogHelper.java

/** Open dialog with chooser when user can choose single option
 * @param question question which is show to user
 * @param items list of items which user can choose
 * @param <T> type of item/*from ww  w .  ja va 2s.  c o m*/
 * @return null if user click on cancel or don't choose anything, elsewhere choosed item */
@SuppressWarnings("unchecked")
public static <T> T chooseSingOption(String question, T... items) {
    if (items.length == 0) {
        return null;
    }
    Dialog<T> dialog = new Dialog<>();
    dialog.setResizable(false);
    dialog.setTitle(chooseSingleOption_title);
    dialog.setHeaderText(question);

    ComboBox<T> comboBox = new ComboBox<>();
    comboBox.getItems().addAll(items);
    dialog.getDialogPane().setContent(comboBox);

    ButtonType btCancel = ButtonType.CANCEL;
    ButtonType btOk = ButtonType.OK;
    dialog.getDialogPane().getButtonTypes().addAll(btCancel, btOk);

    Optional<T> result = dialog.showAndWait();
    if (result.isPresent()) {
        if (btCancel == result.get()) {
            return null;
        }
        if (btOk == result.get()) {
            return comboBox.getSelectionModel().getSelectedItem();
        }
    } else {
        return null;
    }
    return result.get();
}

From source file:cz.lbenda.dataman.db.frm.DbConfigFrmController.java

public static DbConfig openDialog(final DbConfig sc) {
    Dialog<DbConfig> dialog = DialogHelper.createDialog();
    dialog.setResizable(false);/*from w w w . ja  va  2s  .c om*/
    final Tuple2<Parent, DbConfigFrmController> tuple = createNewInstance();
    if (sc != null) {
        tuple.get2().loadDataFromSessionConfiguration(sc);
    }
    dialog.setTitle(msgDialogTitle);
    dialog.setHeaderText(msgDialogHeader);

    dialog.getDialogPane().setContent(tuple.get1());
    ButtonType buttonTypeOk = ButtonType.OK;
    ButtonType buttonTypeCancel = ButtonType.CANCEL;
    dialog.getDialogPane().getButtonTypes().add(buttonTypeCancel);
    dialog.getDialogPane().getButtonTypes().add(buttonTypeOk);
    dialog.getDialogPane().setPadding(new Insets(0, 0, 0, 0));

    dialog.setResultConverter(b -> {
        if (b == buttonTypeOk) {
            DbConfig sc1 = sc;
            if (sc1 == null) {
                sc1 = new DbConfig();
                tuple.get2().storeDataToSessionConfiguration(sc1);
                DbConfigFactory.getConfigurations().add(sc1);
            } else {
                tuple.get2().storeDataToSessionConfiguration(sc1);
                if (DbConfigFactory.getConfigurations().contains(sc1)) { // The copied session isn't in list yet
                    int idx = DbConfigFactory.getConfigurations().indexOf(sc1);
                    DbConfigFactory.getConfigurations().remove(sc1);
                    DbConfigFactory.getConfigurations().add(idx, sc1);
                } else {
                    DbConfigFactory.getConfigurations().add(sc1);
                }
            }
            DbConfigFactory.saveConfiguration();
            return sc1;
        }
        return null;
    });

    Optional<DbConfig> result = dialog.showAndWait();
    if (result.isPresent()) {
        return result.get();
    }
    return null;
}

From source file:cz.lbenda.rcp.DialogHelper.java

/** Show unsaved object if aren't saved. if user want cancel the closing then return false, elserwhere return true
 * @param savableRegistry register which hold unsaved data
 * @return true if window/object can be closed */
public boolean showUnsavedObjectDialog(SavableRegistry savableRegistry) {
    Set<Savable> savables = savableRegistry.dirtySavables();
    if (savables.size() == 0) {
        return true;
    }//from   ww w.ja va2s  .  co m
    Dialog<?> dialog = new Dialog<>();
    dialog.setResizable(false);
    dialog.setTitle(msgNotSavedObjectsTitle);
    dialog.setHeaderText(msgNotSavedObjectsHeader);

    BorderPane pane = new BorderPane();
    pane.setPrefHeight(400);
    pane.setPrefWidth(300);
    ListView<DialogHelper.Item> listView = new ListView<>();
    listView.getItems()
            .addAll(savables.stream().map(savable -> new Item(savable, true)).collect(Collectors.toList()));
    listView.setCellFactory(CheckBoxListCell.forListView(DialogHelper.Item::onProperty));
    pane.setCenter(listView);

    dialog.getDialogPane().setContent(pane);

    ButtonType btCancel = new ButtonType(button_cancel, ButtonBar.ButtonData.CANCEL_CLOSE);
    ButtonType btSaveClose = new ButtonType(button_saveAndClose, ButtonBar.ButtonData.OK_DONE);
    ButtonType btClose = new ButtonType(button_closeWithoutSave);

    dialog.getDialogPane().getButtonTypes().addAll(btClose, btSaveClose, btCancel);

    Optional<?> result = dialog.showAndWait();
    if (result.isPresent()) {
        if (btCancel == result.get()) {
            return false;
        }
        if (btSaveClose == result.get()) {
            listView.getItems().stream().filter(Item::isOn).forEach(item -> item.getSavable().save());
        }
    } else {
        return false;
    }
    return true;
}

From source file:com.bekwam.resignator.ResignatorAppMainViewController.java

@FXML
public void saveAsProfile() {

    Dialog<String> dialog = new TextInputDialog();
    dialog.setTitle("Profile name");
    dialog.setHeaderText("Enter profile name");
    Optional<String> result = dialog.showAndWait();

    if (result.isPresent()) {

        //// www.jav a  2  s . c  o  m
        // Check for uniqueness; prompt for overwrite
        //
        final String profileName = result.get();
        if (profileNameInUse(profileName)) {
            if (logger.isDebugEnabled()) {
                logger.debug("[SAVE AS] profile name in use; prompt for overwrite");
            }
            Alert alert = new Alert(Alert.AlertType.CONFIRMATION,
                    "Overwrite existing profile '" + profileName + "'?");
            alert.setHeaderText("Profile name in use");
            Optional<ButtonType> response = alert.showAndWait();
            if (!response.isPresent() || response.get() != ButtonType.OK) {
                if (logger.isDebugEnabled()) {
                    logger.debug("[SAVE AS] overwrite canceled");
                }
                return;
            }
        }

        if (configurationDS.profileExists(profileName)) {
            Alert alert = new Alert(Alert.AlertType.CONFIRMATION, "Overwrite existing profile?");
            alert.setHeaderText("Profile exists");
            Optional<ButtonType> response = alert.showAndWait();
            if (!response.isPresent() || response.get() != ButtonType.OK) {
                return;
            }
        }

        activeConfiguration.activeProfileProperty().set(profileName); // activeProfile object tweaked w. new name

        try {
            recordRecentProfile(activeProfile.getProfileName()); // #18
            configurationDS.saveProfile();

            Stage s = (Stage) sp.getScene().getWindow();
            s.setTitle("ResignatorApp - " + profileName);

            needsSave.set(false);

            addToProfileBrowser(profileName);

        } catch (IOException exc) {
            logger.error("error saving profile '" + profileName + "'", exc);

            Alert alert = new Alert(Alert.AlertType.ERROR, exc.getMessage());
            alert.setHeaderText("Can't save profile");
            alert.showAndWait();
        }

    } else {
        String msg = "A profile name is required";
        Alert alert = new Alert(Alert.AlertType.ERROR, msg);
        alert.setHeaderText("Can't save profile");
        alert.showAndWait();
    }
}

From source file:com.bekwam.resignator.ResignatorAppMainViewController.java

@FXML
public void saveProfile() {

    if (logger.isDebugEnabled()) {
        logger.debug("[SAVE PROFILE]");
    }/*w  ww.jav  a2 s.  com*/

    if (activeConfiguration.activeProfileProperty().isEmpty().get()) {

        if (logger.isDebugEnabled()) {
            logger.debug("[SAVE PROFILE] activeProfileName is empty");
        }

        Dialog<String> dialog = new TextInputDialog();
        dialog.setTitle("Profile name");
        dialog.setHeaderText("Enter profile name");
        Optional<String> result = dialog.showAndWait();

        if (result.isPresent()) {
            String newProfileName = result.get();

            if (configurationDS.profileExists(newProfileName)) {
                Alert alert = new Alert(Alert.AlertType.CONFIRMATION, "Overwrite existing profile?");
                alert.setHeaderText("Profile exists");
                Optional<ButtonType> response = alert.showAndWait();
                if (!response.isPresent() || response.get() != ButtonType.OK) {
                    return;
                }
            }

            activeConfiguration.activeProfileProperty().set(newProfileName);

            try {
                recordRecentProfile(newProfileName); // #18
                configurationDS.saveProfile(); // saves active profile

                Stage s = (Stage) sp.getScene().getWindow();
                s.setTitle("ResignatorApp - " + newProfileName);

                needsSave.set(false);

                addToProfileBrowser(newProfileName);

            } catch (IOException exc) {
                logger.error("error saving profile '" + newProfileName + "'", exc);

                Alert alert = new Alert(Alert.AlertType.ERROR, exc.getMessage());
                alert.setHeaderText("Can't save profile");
                alert.showAndWait();
            }

        } else {
            String msg = "A profile name is required";
            Alert alert = new Alert(Alert.AlertType.ERROR, msg);
            alert.setHeaderText("Can't save profile");
            alert.showAndWait();
        }
    } else { // just save

        if (logger.isDebugEnabled()) {
            logger.debug("[SAVE PROFILE] there is an active profile");
        }

        try {
            recordRecentProfile(activeProfile.getProfileName()); // #18
            configurationDS.saveProfile(); // saves active profile
            needsSave.set(false);

        } catch (IOException exc) {
            logger.error("error saving profile '" + activeConfiguration.activeProfileProperty().get() + "'",
                    exc);

            Alert alert = new Alert(Alert.AlertType.ERROR, exc.getMessage());
            alert.setHeaderText("Can't save profile");
            alert.showAndWait();
        }

    }
}

From source file:com.bekwam.resignator.ResignatorAppMainViewController.java

@FXML
public void loadProfile() {

    if (logger.isDebugEnabled()) {
        logger.debug("[LOAD PROFILE]");
    }//from   w w  w.  ja  v a  2 s.com

    //
    // Clear output from last operation
    //
    Preconditions.checkArgument(!lblStatus.textProperty().isBound());
    lblStatus.setText("");

    txtConsole.setText("");
    piSignProgress.setProgress(0.0d);
    piSignProgress.setVisible(false);
    clearValidationErrors();

    //
    // Get profiles from loaded Configuration object
    //
    List<Profile> profiles = configurationDS.getProfiles();

    if (CollectionUtils.isEmpty(profiles)) {

        if (logger.isDebugEnabled()) {
            logger.debug("[LOAD PROFILE] no profiles");
        }

        String msg = "Select File > Save Profile to save the active profile.";
        Alert alert = new Alert(Alert.AlertType.INFORMATION, msg);
        alert.setHeaderText("No profiles saved");
        alert.showAndWait();
        return;
    }

    //
    // Distill list of profile names from List of Profile objects
    //
    List<String> profileNames = profiles.stream().sorted(comparing(Profile::getProfileName))
            .map(Profile::getProfileName).collect(toList());

    //
    // Select default item which is active item if available otherwise first item
    //
    String defaultProfileName = profileNames.get(0);

    //
    // Prompt user for selection - default is first item
    //
    if (StringUtils.isNotEmpty(activeConfiguration.activeProfileProperty().getValue())) {
        defaultProfileName = activeConfiguration.activeProfileProperty().getValue();
    }

    if (logger.isDebugEnabled()) {
        logger.debug("[LOAD PROFILE] default profileName={}", defaultProfileName);
    }

    Dialog<String> dialog = new ChoiceDialog<>(defaultProfileName, profileNames);
    dialog.setTitle("Profile");
    dialog.setHeaderText("Select profile ");
    Optional<String> result = dialog.showAndWait();

    if (!result.isPresent()) {
        return; // cancel
    }

    if (logger.isDebugEnabled()) {
        logger.debug("[LOAD PROFILE] selected={}", result.get());
    }

    doLoadProfile(result.get());
}

From source file:spdxedit.license.FileLicenseEditor.java

public static void extractLicenseFromFile(SpdxFile file, SpdxDocumentContainer container) {

    Dialog dialog = new Dialog();
    dialog.setTitle(Main.APP_TITLE);/* w  ww .j a v  a 2 s. co  m*/
    dialog.setHeaderText("Extract license");

    ((Stage) dialog.getDialogPane().getScene().getWindow()).getIcons()
            .addAll(UiUtils.ICON_IMAGE_VIEW.getImage());

    dialog.getDialogPane().getButtonTypes().addAll(ButtonType.CANCEL, ButtonType.OK);

    String licenseName = "";
    String licenseText = null;
    String licenseId = "";
    //TODO: Add support for multiple extracted licenses.
    if (file.getLicenseInfoFromFiles() != null && file.getLicenseInfoFromFiles().length > 0) {
        Optional<AnyLicenseInfo> foundExtractedLicense = Arrays.stream(file.getLicenseInfoFromFiles())
                .filter(license -> license instanceof ExtractedLicenseInfo).findFirst();
        if (foundExtractedLicense.isPresent()) {
            licenseName = ((ExtractedLicenseInfo) foundExtractedLicense.get()).getName();
            licenseText = ((ExtractedLicenseInfo) foundExtractedLicense.get()).getExtractedText();
            licenseId = ((ExtractedLicenseInfo) foundExtractedLicense.get()).getLicenseId();

        }
    }

    LicenseExtractControl licenseExtractControl = new LicenseExtractControl(licenseName, licenseText,
            licenseId);

    dialog.getDialogPane().setContent(licenseExtractControl.getUi());
    Optional<ButtonType> result = dialog.showAndWait();

    licenseName = licenseExtractControl.getLicenseName();
    licenseText = licenseExtractControl.getLicenseText();
    licenseId = licenseExtractControl.getLicenseId();

    //No selection
    if (!result.isPresent() || result.get() == ButtonType.CANCEL) {
        return;
    }
    //Omitted data
    if (StringUtils.isBlank(licenseName)) {
        new Alert(Alert.AlertType.ERROR, "License name cannot be blank. Use \"NOASSERTION\" instead",
                ButtonType.OK).showAndWait();
        return;
    }
    if (StringUtils.isBlank(licenseText)) {
        new Alert(Alert.AlertType.ERROR, "License text cannot be blank.", ButtonType.OK).showAndWait();
        return;
    }
    if (StringUtils.isBlank(licenseId)) {
        new Alert(Alert.AlertType.ERROR, "License ID cannot be blank.", ButtonType.OK).showAndWait();
        return;
    }
    //License already extracted
    if (SpdxLogic.findExtractedLicenseByNameAndText(container, licenseName, licenseText).isPresent()) {
        new Alert(Alert.AlertType.WARNING,
                "License " + licenseName + " with the same text has already been extracted.", ButtonType.OK)
                        .showAndWait();
        return;
    }
    //License with ID already exists
    if (SpdxLogic.findExtractedLicenseInfoById(container, licenseId).isPresent()) {
        new Alert(Alert.AlertType.WARNING, "License with ID " + licenseId + " already exists.", ButtonType.OK)
                .showAndWait();
        return;
    }

    SpdxLogic.addExtractedLicenseFromFile(file, container, licenseId, licenseName, licenseText);

}

From source file:tachyon.view.ProjectProperties.java

public ProjectProperties(JavaProject project, Window w) {
    this.project = project;
    stage = new Stage();
    stage.initOwner(w);//from  w ww. jav a2s . co m
    stage.initModality(Modality.APPLICATION_MODAL);
    stage.setWidth(600);
    stage.setTitle("Project Properties - " + project.getProjectName());
    stage.getIcons().add(tachyon.Tachyon.icon);
    stage.setResizable(false);
    HBox mai, libs, one, two, thr, fou;
    ListView<String> compileList, runtimeList;
    Button compileAdd, compileRemove, preview, selectIm, runtimeAdd, runtimeRemove;
    TextField iconField;
    stage.setScene(new Scene(new VBox(5, pane = new TabPane(
            new Tab("Library Settings",
                    box1 = new VBox(15,
                            libs = new HBox(10, new Label("External Libraries"), libsView = new ListView<>(),
                                    new VBox(5, addJar = new Button("Add Jar"),
                                            removeJar = new Button("Remove Jar"))))),
            new Tab("Program Settings",
                    new ScrollPane(box2 = new VBox(15, one = new HBox(10, new Label("Main-Class"),
                            mainClass = new TextField(project.getMainClassName()),
                            select = new Button("Select")),
                            two = new HBox(10, new Label("Compile-Time Arguments"),
                                    compileList = new ListView<>(),
                                    new VBox(5, compileAdd = new Button("Add Argument"),
                                            compileRemove = new Button("Remove Argument")))))),
            new Tab("Deployment Settings",
                    box3 = new VBox(15, thr = new HBox(10, new Label("Icon File"),
                            iconField = new TextField(project.getFileIconPath()),
                            preview = new Button("Preview Image"), selectIm = new Button("Select Icon")),
                            fou = new HBox(10, new Label("Runtime Arguments"), runtimeList = new ListView<>(),
                                    new VBox(5, runtimeAdd = new Button("Add Argument"),
                                            runtimeRemove = new Button("Remove Argument")))))),
            new VBox(15, mai = new HBox(10, cancel = new Button("Cancel"), confirm = new Button("Confirm"))))));
    if (applyCss.get()) {
        stage.getScene().getStylesheets().add(css);
    }
    for (Tab b : pane.getTabs()) {
        b.setClosable(false);
    }
    mainClass.setPromptText("Main-Class");
    box1.setPadding(new Insets(5, 10, 5, 10));
    mai.setAlignment(Pos.CENTER_RIGHT);
    mai.setPadding(box1.getPadding());
    libs.setAlignment(Pos.CENTER);
    one.setAlignment(Pos.CENTER);
    two.setAlignment(Pos.CENTER);
    thr.setAlignment(Pos.CENTER);
    fou.setAlignment(Pos.CENTER);
    box1.setAlignment(Pos.CENTER);
    box2.setPadding(box1.getPadding());
    box2.setAlignment(Pos.CENTER);
    box3.setPadding(box1.getPadding());
    box3.setAlignment(Pos.CENTER);
    mainClass.setEditable(false);
    mainClass.setPrefWidth(200);
    for (JavaLibrary lib : project.getAllLibs()) {
        libsView.getItems().add(lib.getBinaryAbsolutePath());
    }
    for (String sa : project.getCompileTimeArguments().keySet()) {
        compileList.getItems().add(sa + ":" + project.getCompileTimeArguments().get(sa));
    }
    for (String sa : project.getRuntimeArguments()) {
        runtimeList.getItems().add(sa);
    }
    compileAdd.setOnAction((e) -> {
        Dialog<Pair<String, String>> dialog = new Dialog<>();
        dialog.setTitle("Compiler Argument");
        dialog.initOwner(stage);
        dialog.setHeaderText("Entry the argument");

        ButtonType loginButtonType = new ButtonType("Done", ButtonData.OK_DONE);
        dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL);

        GridPane grid = new GridPane();
        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(20, 150, 10, 10));

        TextField username = new TextField();
        username.setPromptText("Key");
        TextField password = new TextField();
        password.setPromptText("Value");

        grid.add(new Label("Key:"), 0, 0);
        grid.add(username, 1, 0);
        grid.add(new Label("Value:"), 0, 1);
        grid.add(password, 1, 1);

        Node loginButton = dialog.getDialogPane().lookupButton(loginButtonType);
        loginButton.setDisable(true);

        username.textProperty().addListener((observable, oldValue, newValue) -> {
            loginButton.setDisable(newValue.trim().isEmpty());
        });

        dialog.getDialogPane().setContent(grid);

        Platform.runLater(() -> username.requestFocus());

        dialog.setResultConverter(dialogButton -> {
            if (dialogButton == loginButtonType) {
                return new Pair<>(username.getText(), password.getText());
            }
            return null;
        });

        Optional<Pair<String, String>> result = dialog.showAndWait();
        if (result.isPresent()) {
            compileList.getItems().add(result.get().getKey() + ":" + result.get().getValue());
        }
    });
    compileRemove.setOnAction((e) -> {
        if (compileList.getSelectionModel().getSelectedItem() != null) {
            compileList.getItems().remove(compileList.getSelectionModel().getSelectedItem());
        }
    });
    runtimeAdd.setOnAction((e) -> {
        TextInputDialog dia = new TextInputDialog();
        dia.setTitle("Add Runtime Argument");
        dia.setHeaderText("Enter an argument");
        dia.initOwner(stage);
        Optional<String> res = dia.showAndWait();
        if (res.isPresent()) {
            runtimeList.getItems().add(res.get());
        }
    });
    runtimeRemove.setOnAction((e) -> {
        if (runtimeList.getSelectionModel().getSelectedItem() != null) {
            runtimeList.getItems().remove(runtimeList.getSelectionModel().getSelectedItem());
        }
    });
    preview.setOnAction((e) -> {
        if (!iconField.getText().isEmpty()) {
            if (iconField.getText().endsWith(".ico")) {
                List<BufferedImage> read = new ArrayList<>();
                try {
                    read.addAll(ICODecoder.read(new File(iconField.getText())));
                } catch (IOException ex) {
                }
                if (read.size() >= 1) {
                    Image im = SwingFXUtils.toFXImage(read.get(0), null);
                    Stage st = new Stage();
                    st.initOwner(stage);
                    st.initModality(Modality.APPLICATION_MODAL);
                    st.setTitle("Icon Preview");
                    st.getIcons().add(Tachyon.icon);
                    st.setScene(new Scene(new BorderPane(new ImageView(im))));
                    if (applyCss.get()) {
                        st.getScene().getStylesheets().add(css);
                    }
                    st.showAndWait();
                }
            } else if (iconField.getText().endsWith(".icns")) {
                try {
                    BufferedImage ima = Imaging.getBufferedImage(new File(iconField.getText()));
                    if (ima != null) {
                        Image im = SwingFXUtils.toFXImage(ima, null);
                        Stage st = new Stage();
                        st.initOwner(stage);
                        st.initModality(Modality.APPLICATION_MODAL);
                        st.setTitle("Icon Preview");
                        st.getIcons().add(Tachyon.icon);
                        st.setScene(new Scene(new BorderPane(new ImageView(im))));
                        if (applyCss.get()) {
                            st.getScene().getStylesheets().add(css);
                        }
                        st.showAndWait();
                    }
                } catch (ImageReadException | IOException ex) {
                }
            } else {
                Image im = new Image(new File(iconField.getText()).toURI().toString());
                Stage st = new Stage();
                st.initOwner(stage);
                st.initModality(Modality.APPLICATION_MODAL);
                st.setTitle("Icon Preview");
                st.getIcons().add(Tachyon.icon);
                st.setScene(new Scene(new BorderPane(new ImageView(im))));
                if (applyCss.get()) {
                    st.getScene().getStylesheets().add(css);
                }
                st.showAndWait();
            }
        }
    });
    selectIm.setOnAction((e) -> {
        FileChooser fc = new FileChooser();
        fc.setTitle("Icon File");
        String OS = System.getProperty("os.name").toLowerCase();
        fc.getExtensionFilters().add(new ExtensionFilter("Icon File",
                OS.contains("win") ? getWindowsImageExtensions() : getMacImageExtensions()));
        fc.setSelectedExtensionFilter(fc.getExtensionFilters().get(0));
        File lf = fc.showOpenDialog(stage);
        if (lf != null) {
            iconField.setText(lf.getAbsolutePath());
        }
    });

    addJar.setOnAction((e) -> {
        FileChooser f = new FileChooser();
        f.setTitle("External Libraries");
        f.setSelectedExtensionFilter(new ExtensionFilter("Jar Files", "*.jar"));
        List<File> showOpenMultipleDialog = f.showOpenMultipleDialog(stage);
        if (showOpenMultipleDialog != null) {
            for (File fi : showOpenMultipleDialog) {
                if (!libsView.getItems().contains(fi.getAbsolutePath())) {
                    libsView.getItems().add(fi.getAbsolutePath());
                }
            }
        }
    });

    removeJar.setOnAction((e) -> {
        String selected = libsView.getSelectionModel().getSelectedItem();
        if (selected != null) {
            libsView.getItems().remove(selected);
        }
    });

    select.setOnAction((e) -> {
        List<String> all = getAll();
        ChoiceDialog<String> di = new ChoiceDialog<>(project.getMainClassName(), all);
        di.setTitle("Select Main Class");
        di.initOwner(stage);
        di.setHeaderText("Select A Main Class");
        Optional<String> show = di.showAndWait();
        if (show.isPresent()) {
            mainClass.setText(show.get());
        }
    });
    cancel.setOnAction((e) -> {
        stage.close();
    });
    confirm.setOnAction((e) -> {
        project.setMainClassName(mainClass.getText());
        project.setFileIconPath(iconField.getText());
        project.setRuntimeArguments(runtimeList.getItems());
        HashMap<String, String> al = new HashMap<>();
        for (String s : compileList.getItems()) {
            String[] spl = s.split(":");
            al.put(spl[0], spl[1]);
        }
        project.setCompileTimeArguments(al);
        project.setAllLibs(libsView.getItems());
        stage.close();
    });
}