use of javafx.scene.control.ComboBox in project kanonizo by kanonizo.
the class KanonizoFrame method getParameterField.
private Control getParameterField(Field param, boolean runPrerequisites) {
Control parameterField = null;
Class<?> type = param.getType();
if (type.equals(boolean.class) || type.equals(Boolean.class)) {
parameterField = new CheckBox();
((CheckBox) parameterField).selectedProperty().addListener((obs, old, nw) -> {
try {
Util.setParameter(param, nw.toString());
if (runPrerequisites) {
addErrors(fw.getAlgorithm());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
});
try {
((CheckBox) parameterField).setSelected((Boolean) param.get(null));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else if (param.getType().equals(String.class) || param.getType().isPrimitive() || param.getType().isAssignableFrom(Number.class)) {
parameterField = new TextField();
((TextField) parameterField).textProperty().addListener((obs, old, nw) -> {
try {
Util.setParameter(param, nw);
if (runPrerequisites) {
addErrors(fw.getAlgorithm());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
});
try {
((TextField) parameterField).setText(param.get(null).toString());
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else if (param.getType().equals(File.class)) {
try {
Button control = new Button();
File paramFile = (File) param.get(null);
control.setText(paramFile == null ? "Select File" : paramFile.getName());
control.setOnAction(ev -> {
FileChooser fc = new FileChooser();
File f = fc.showOpenDialog(KanonizoFxApplication.stage);
try {
Util.setParameter(param, f == null ? null : f.getAbsolutePath());
if (runPrerequisites) {
addErrors(fw.getAlgorithm());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
control.setText(f == null ? "Select File" : f.getName());
});
parameterField = control;
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else if (param.getAnnotation(Parameter.class).hasOptions()) {
String paramKey = param.getAnnotation(Parameter.class).key();
Method[] methods = param.getDeclaringClass().getMethods();
Optional<Method> optionProviderOpt = Arrays.asList(methods).stream().filter(m -> m.getAnnotation(OptionProvider.class) != null && m.getAnnotation(OptionProvider.class).paramKey().equals(paramKey)).findFirst();
if (!optionProviderOpt.isPresent()) {
logger.error("Missing OptionProvider for key" + paramKey);
return null;
}
Method optionProvider = optionProviderOpt.get();
if (optionProvider.getReturnType() != List.class) {
logger.error("OptionProvider must return a list");
return null;
}
if (!Modifier.isStatic(optionProvider.getModifiers())) {
logger.error("OptionProvider must be static");
return null;
}
try {
List<?> options = (List<?>) optionProvider.invoke(null, null);
parameterField = new ComboBox();
((ComboBox) parameterField).getItems().addAll(options);
((ComboBox) parameterField).getSelectionModel().selectedItemProperty().addListener((ov, old, nw) -> {
try {
param.set(null, nw);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
});
((ComboBox) parameterField).setConverter(new StringConverter() {
@Override
public String toString(Object object) {
return object.getClass().getSimpleName();
}
@Override
public Object fromString(String string) {
String comparatorPackage = "org.kanonizo.algorithms.heuristics.comparators";
try {
return Class.forName(comparatorPackage + "." + string).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
});
try {
((ComboBox) parameterField).getSelectionModel().select(param.get(null));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
return parameterField;
}
use of javafx.scene.control.ComboBox in project trex-stateless-gui by cisco-system-traffic-generator.
the class EthernetStreamTest method setEthernetMacInfo.
/**
* Fill Ethernet mac information
*/
private void setEthernetMacInfo() {
clickOn("#protocolDataTab");
waitForNode("Media Access Protocol");
clickOn("Media Access Protocol");
waitForNode("#macDstAddress");
interact(() -> {
TextField macDstAddress = find(("#macDstAddress"));
macDstAddress.setText("12:00:00:00:00:22");
ComboBox dstMode = find("#macDstMode");
dstMode.getSelectionModel().select("Fixed");
TextField macSrcAddress = find(("#macSrcAddress"));
macSrcAddress.setText("22:00:00:00:00:00");
ComboBox srcMode = find("#macsrcMode");
srcMode.getSelectionModel().select("Increment");
});
}
use of javafx.scene.control.ComboBox in project POL-POM-5 by PlayOnLinux.
the class ContainerEngineSettingsPanelSkin method updateEngineSettingsGrid.
/**
* Updates the engine settings in the given {@link GridPane engineSettingsGrid}
*
* @param engineSettingsGrid The GridPane containing the shown engine settings
*/
private void updateEngineSettingsGrid(final GridPane engineSettingsGrid) {
engineSettingsGrid.getChildren().clear();
final ContainerDTO container = getControl().getContainer();
for (EngineSetting engineSetting : getControl().getEngineSettings()) {
final int row = engineSettingsGrid.getRowCount();
final Text engineSettingDescription = new Text(engineSetting.getText());
engineSettingDescription.getStyleClass().add("captionTitle");
final ObservableList<String> items = FXCollections.observableArrayList(engineSetting.getOptions());
final ComboBox<String> engineSettingComboBox = new ComboBox<>(items);
engineSettingComboBox.getStyleClass().add("engine-setting-combo-box");
engineSettingComboBox.disableProperty().bind(getControl().lockEngineSettingsProperty());
// if the container is not specified set no default values
if (container != null) {
try {
engineSettingComboBox.setValue(engineSetting.getCurrentOption(container.getName()));
} catch (Exception e) {
engineSettingComboBox.getSelectionModel().select(0);
LOGGER.warn(String.format("Could not fetch current option for engine setting \"%s\", will use default.", engineSetting.getText()));
LOGGER.debug("Caused by: ", e);
}
engineSettingComboBox.valueProperty().addListener((Observable invalidation) -> Platform.runLater(() -> {
getControl().setLockEngineSettings(true);
engineSetting.setOption(container.getName(), items.indexOf(engineSettingComboBox.getValue()));
getControl().setLockEngineSettings(false);
}));
}
engineSettingsGrid.addRow(row, engineSettingDescription, engineSettingComboBox);
}
}
use of javafx.scene.control.ComboBox in project POL-POM-5 by PhoenicisOrg.
the class ChooseRepositoryTypePanel method populate.
/**
* Populates the content of this component
*/
private void populate() {
choiceBox = new ComboBox<>(repositoryChoices);
choiceBox.setPromptText(tr("Please select the repository type you want to add"));
choiceBox.setConverter(new StringConverter<RepositoryType>() {
@Override
public String toString(RepositoryType repositoryType) {
return repositoryType.getLabel();
}
@Override
public RepositoryType fromString(String string) {
return Arrays.stream(RepositoryType.values()).filter(type -> type.getLabel().equals(string)).findAny().orElse(null);
}
});
choiceBox.setOnAction(event -> onRepositoryTypeSelection.accept(choiceBox.getSelectionModel().getSelectedItem()));
Label choiceBoxLabel = new Label(tr("Repository type:"));
choiceBoxLabel.setLabelFor(choiceBox);
HBox content = new HBox(choiceBoxLabel, choiceBox);
content.setId("repositoryTypeSelection");
HBox.setHgrow(choiceBox, Priority.ALWAYS);
this.setCenter(content);
}
use of javafx.scene.control.ComboBox in project POL-POM-5 by PlayOnLinux.
the class WinePrefixContainerInputTab method populate.
private void populate() {
final VBox inputPane = new VBox();
final Text title = new TextWithStyle(tr("Input settings"), TITLE_CSS_CLASS);
inputPane.getStyleClass().add(CONFIGURATION_PANE_CSS_CLASS);
inputPane.getChildren().add(title);
final GridPane inputContentPane = new GridPane();
inputContentPane.getStyleClass().add("grid");
final ComboBox<MouseWarpOverride> mouseWarpOverrideComboBox = new ComboBox<>();
mouseWarpOverrideComboBox.setValue(container.getMouseWarpOverride());
addItems(mouseWarpOverrideComboBox, MouseWarpOverride.class);
inputContentPane.add(new TextWithStyle(tr("Mouse Warp Override"), CAPTION_TITLE_CSS_CLASS), 0, 0);
inputContentPane.add(mouseWarpOverrideComboBox, 1, 0);
inputContentPane.getColumnConstraints().addAll(new ColumnConstraintsWithPercentage(30), new ColumnConstraintsWithPercentage(70));
inputPane.getChildren().addAll(inputContentPane);
this.setContent(inputPane);
lockableElements.add(mouseWarpOverrideComboBox);
}
Aggregations