use of org.phoenicis.javafx.dialogs.ListConfirmDialog in project POL-POM-5 by PlayOnLinux.
the class ContainerVerbsPanelSkin method createVerbManagementButtons.
/**
* Creates a container with the buttons for the verb selection management. These buttons consist of:
* - a button to install all selected verbs
* - a button to clear/reset the selection
*
* @param verbs The {@link GridPane} containing the visual verb installation components
* @return A container with the buttons for the verb selection management
*/
private HBox createVerbManagementButtons(final GridPane verbs) {
final Button installButton = new Button(tr("Install selected"));
installButton.disableProperty().bind(getControl().lockVerbsProperty());
installButton.setOnAction(event -> {
getControl().setLockVerbs(true);
final ContainerDTO container = getControl().getContainer();
// find the ids of all selected verbs
final List<ScriptDTO> installationVerbs = verbs.getChildren().stream().filter(element -> element instanceof CheckBox && ((CheckBox) element).isSelected()).map(GridPane::getRowIndex).map(getControl().getVerbScripts()::get).collect(Collectors.toList());
final List<String> verbNames = installationVerbs.stream().map(ScriptDTO::getScriptName).collect(Collectors.toList());
final ListConfirmDialog confirmDialog = ListConfirmDialog.builder().withTitle(tr("Install Verbs")).withMessage(tr("Are you sure you want to install the following Verbs:")).withConfirmItems(verbNames).withOwner(getControl().getScene().getWindow()).withYesCallback(() -> {
final List<String> verbIds = installationVerbs.stream().map(ScriptDTO::getId).collect(Collectors.toList());
// install the selected verbs
getControl().getVerbsManager().installVerbs(container.getEngine().toLowerCase(), container.getName(), verbIds, () -> getControl().setLockVerbs(false), e -> Platform.runLater(() -> {
final ErrorDialog errorDialog = ErrorDialog.builder().withMessage(tr("Error installing Verbs")).withException(e).build();
errorDialog.showAndWait();
}));
}).build();
confirmDialog.showAndCallback();
// after the dialog has been closed unlock the verb buttons
getControl().setLockVerbs(false);
});
final Button clearButton = new Button(tr("Clear selection"));
clearButton.disableProperty().bind(getControl().lockVerbsProperty());
clearButton.setOnAction(event -> verbs.getChildren().stream().filter(element -> element instanceof CheckBox).map(element -> (CheckBox) element).forEach(verbCheckBox -> verbCheckBox.setSelected(false)));
return new HBox(installButton, clearButton);
}
Aggregations