use of javafx.scene.control.TextFormatter in project tokentool by RPTools.
the class TokenTool_Controller method initialize.
@FXML
void initialize() {
// Note: A Pane is added to the compositeTokenPane so the ScrollPane doesn't consume the mouse events
assert fileManageOverlaysMenu != null : "fx:id=\"fileManageOverlaysMenu\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert fileSaveAsMenu != null : "fx:id=\"fileSaveAsMenu\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert fileExitMenu != null : "fx:id=\"fileExitMenu\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert editCaptureScreenMenu != null : "fx:id=\"editCaptureScreenMenu\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert editCopyImageMenu != null : "fx:id=\"editCopyImageMenu\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert editPasteImageMenu != null : "fx:id=\"editPasteImageMenu\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert helpAboutMenu != null : "fx:id=\"helpAboutMenu\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert saveOptionsPane != null : "fx:id=\"saveOptionsPane\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayOptionsPane != null : "fx:id=\"overlayOptionsPane\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert backgroundOptionsPane != null : "fx:id=\"backgroundOptionsPane\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert zoomOptionsPane != null : "fx:id=\"zoomOptionsPane\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert compositeTokenPane != null : "fx:id=\"compositeTokenPane\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert tokenPreviewPane != null : "fx:id=\"tokenPreviewPane\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert portraitScrollPane != null : "fx:id=\"portraitScrollPane\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert compositeGroup != null : "fx:id=\"compositeGroup\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayTreeView != null : "fx:id=\"overlayTreeview\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert portraitImageView != null : "fx:id=\"portraitImageView\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert maskImageView != null : "fx:id=\"maskImageView\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayImageView != null : "fx:id=\"overlayImageView\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert tokenImageView != null : "fx:id=\"tokenImageView\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert useFileNumberingCheckbox != null : "fx:id=\"useFileNumberingCheckbox\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayUseAsBaseCheckbox != null : "fx:id=\"overlayUseAsBaseCheckbox\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert clipPortraitCheckbox != null : "fx:id=\"clipPortraitCheckbox\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert fileNameTextField != null : "fx:id=\"fileNameTextField\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert fileNameSuffixLabel != null : "fx:id=\"fileNameSuffixLabel\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert fileNameSuffixTextField != null : "fx:id=\"fileNameSuffixTextField\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayNameLabel != null : "fx:id=\"overlayNameLabel\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert backgroundColorPicker != null : "fx:id=\"backgroundColorPicker\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayAspectToggleButton != null : "fx:id=\"overlayAspectToggleButton\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert portraitTransparencySlider != null : "fx:id=\"portraitTransparencySlider\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert portraitBlurSlider != null : "fx:id=\"portraitBlurSlider\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert portraitGlowSlider != null : "fx:id=\"portraitGlowSlider\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayTransparencySlider != null : "fx:id=\"overlayTransparencySlider\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayWidthSpinner != null : "fx:id=\"overlayWidthSpinner\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayHeightSpinner != null : "fx:id=\"overlayHeightSpinner\" was not injected: check your FXML file 'TokenTool.fxml'.";
assert overlayTreeProgressBar != null : "fx:id=\"overlayTreeProgressIndicator\" was not injected: check your FXML file 'ManageOverlays.fxml'.";
executorService = Executors.newCachedThreadPool(runable -> {
loadOverlaysThread = Executors.defaultThreadFactory().newThread(runable);
loadOverlaysThread.setDaemon(true);
return loadOverlaysThread;
});
overlayTreeView.setShowRoot(false);
overlayTreeView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> updateCompositImageView((TreeItem<Path>) newValue));
addPseudoClassToLeafs(overlayTreeView);
// Bind color picker to compositeTokenPane background fill
backgroundColorPicker.setValue(Color.TRANSPARENT);
ObjectProperty<Background> background = compositeTokenPane.backgroundProperty();
background.bind(Bindings.createObjectBinding(() -> {
BackgroundFill fill = new BackgroundFill(backgroundColorPicker.getValue(), CornerRadii.EMPTY, Insets.EMPTY);
return new Background(fill);
}, backgroundColorPicker.valueProperty()));
// Bind transparency slider to portraitImageView opacity
portraitTransparencySlider.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
portraitImageView.setOpacity(new_val.doubleValue());
updateTokenPreviewImageView();
}
});
// // Restrict text field to valid filename characters
// Pattern validDoubleText = Pattern.compile("[^a-zA-Z0-9\\\\._ \\\\/`~!@#$%\\\\^&\\\\(\\\\)\\\\-\\\\=\\\\+\\\\[\\\\]\\\\{\\\\}',\\\\\\\\:]");
// Pattern validText = Pattern.compile("[^a-zA-Z0-9 ]");
// TextFormatter<> textFormatter = new TextFormatter<>(
// change -> {
// String newText = change.getControlNewText();
// if (validText.matcher(newText).matches()) {
// return change;
// } else
// return null;
// });
// UnaryOperator<TextFormatter.Change> filter = new UnaryOperator<TextFormatter.Change>() {
// @Override
// public TextFormatter.Change apply(TextFormatter.Change t) {
// String validText = "[^a-zA-Z0-9]";
//
// if (t.isReplaced())
// if (t.getText().matches(validText))
// t.setText(t.getControlText().substring(t.getRangeStart(), t.getRangeEnd()));
//
// if (t.isAdded()) {
// if (t.getText().matches(validText)) {
// return null;
// }
// }
//
// return t;
// }
// };
UnaryOperator<Change> filter = change -> {
String text = change.getText();
if (text.matches(AppConstants.VALID_FILE_NAME_PATTERN)) {
return change;
} else {
change.setText(FileSaveUtil.cleanFileName(text));
;
return change;
}
//
// return null;
};
TextFormatter<String> textFormatter = new TextFormatter<>(filter);
fileNameTextField.setTextFormatter(textFormatter);
// Effects
GaussianBlur gaussianBlur = new GaussianBlur(0);
Glow glow = new Glow(0);
gaussianBlur.setInput(glow);
// Bind blur slider to portraitImageView opacity
portraitBlurSlider.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
gaussianBlur.setRadius(new_val.doubleValue());
portraitImageView.setEffect(gaussianBlur);
updateTokenPreviewImageView();
}
});
// Bind glow slider to portraitImageView opacity
portraitGlowSlider.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
glow.setLevel(new_val.doubleValue());
portraitImageView.setEffect(gaussianBlur);
updateTokenPreviewImageView();
}
});
// Bind transparency slider to overlayImageView opacity
overlayTransparencySlider.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
overlayImageView.setOpacity(new_val.doubleValue());
updateTokenPreviewImageView();
}
});
// Bind width/height spinners to overlay width/height
overlayWidthSpinner.getValueFactory().valueProperty().bindBidirectional(overlayHeightSpinner.getValueFactory().valueProperty());
overlayWidthSpinner.valueProperty().addListener((observable, oldValue, newValue) -> overlayWidthSpinner_onTextChanged(oldValue, newValue));
overlayHeightSpinner.valueProperty().addListener((observable, oldValue, newValue) -> overlayHeightSpinner_onTextChanged(oldValue, newValue));
}
use of javafx.scene.control.TextFormatter in project org.csstudio.display.builder by kasemir.
the class WidgetColorPopOverController method initialize.
/*
* -------------------------------------------------------------------------
*/
@Override
public void initialize(URL location, ResourceBundle resources) {
updateButton(okButton, ButtonType.OK);
updateButton(cancelButton, ButtonType.CANCEL);
updateButton(defaultButton, new ButtonType(Messages.WidgetColorPopOver_DefaultButton, ButtonData.LEFT));
okButton.setText(ButtonType.OK.getText());
ButtonBar.setButtonData(okButton, ButtonType.OK.getButtonData());
root.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
if (event.getCode() == KeyCode.ENTER)
okPressed(null);
});
picker.valueProperty().addListener((observable, oldColor, newColor) -> {
if (!updating) {
setColor(JFXUtil.convert(newColor));
}
});
defaultButton.disableProperty().bind(Bindings.createBooleanBinding(() -> getColor().equals(defaultColor), colorProperty()));
okButton.disableProperty().bind(Bindings.createBooleanBinding(() -> getColor().equals(originalColor), colorProperty()));
SpinnerValueFactory<Integer> redSpinnerValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(0, 255);
TextFormatter<Integer> redSpinnerFormatter = new TextFormatter<>(redSpinnerValueFactory.getConverter(), redSpinnerValueFactory.getValue());
redSpinnerValueFactory.valueProperty().bindBidirectional(redSpinnerFormatter.valueProperty());
redSpinner.getEditor().setTextFormatter(redSpinnerFormatter);
redSpinner.setValueFactory(redSpinnerValueFactory);
redSpinner.valueProperty().addListener(this::updateFromSpinner);
redSpinner.focusedProperty().addListener((s, ov, nv) -> {
if (nv) {
Platform.runLater(() -> redSpinner.getEditor().selectAll());
}
});
SpinnerValueFactory<Integer> greenSpinnerValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(0, 255);
TextFormatter<Integer> greenSpinnerFormatter = new TextFormatter<>(greenSpinnerValueFactory.getConverter(), greenSpinnerValueFactory.getValue());
greenSpinnerValueFactory.valueProperty().bindBidirectional(greenSpinnerFormatter.valueProperty());
greenSpinner.getEditor().setTextFormatter(greenSpinnerFormatter);
greenSpinner.setValueFactory(greenSpinnerValueFactory);
greenSpinner.valueProperty().addListener(this::updateFromSpinner);
greenSpinner.focusedProperty().addListener((s, ov, nv) -> {
if (nv) {
Platform.runLater(() -> greenSpinner.getEditor().selectAll());
}
});
SpinnerValueFactory<Integer> blueSpinnerValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(0, 255);
TextFormatter<Integer> blueSpinnerFormatter = new TextFormatter<>(blueSpinnerValueFactory.getConverter(), blueSpinnerValueFactory.getValue());
blueSpinnerValueFactory.valueProperty().bindBidirectional(blueSpinnerFormatter.valueProperty());
blueSpinner.getEditor().setTextFormatter(blueSpinnerFormatter);
blueSpinner.setValueFactory(blueSpinnerValueFactory);
blueSpinner.valueProperty().addListener(this::updateFromSpinner);
blueSpinner.focusedProperty().addListener((s, ov, nv) -> {
if (nv) {
Platform.runLater(() -> blueSpinner.getEditor().selectAll());
}
});
SpinnerValueFactory<Integer> alphaSpinnerValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(0, 255);
TextFormatter<Integer> alphaSpinnerFormatter = new TextFormatter<>(alphaSpinnerValueFactory.getConverter(), alphaSpinnerValueFactory.getValue());
alphaSpinnerValueFactory.valueProperty().bindBidirectional(alphaSpinnerFormatter.valueProperty());
alphaSpinner.getEditor().setTextFormatter(alphaSpinnerFormatter);
alphaSpinner.setValueFactory(alphaSpinnerValueFactory);
alphaSpinner.valueProperty().addListener(this::updateFromSpinner);
alphaSpinner.focusedProperty().addListener((s, ov, nv) -> {
if (nv) {
Platform.runLater(() -> alphaSpinner.getEditor().selectAll());
}
});
redSlider.valueProperty().addListener(this::updateFromSlider);
greenSlider.valueProperty().addListener(this::updateFromSlider);
blueSlider.valueProperty().addListener(this::updateFromSlider);
alphaSlider.valueProperty().addListener(this::updateFromSlider);
colorProperty().addListener((observable, oldColor, newColor) -> {
updating = true;
Color jfxColor = JFXUtil.convert(getColor());
picker.setValue(jfxColor);
currentColorCircle.setFill(jfxColor);
redSlider.setValue(getRed());
redSpinner.getValueFactory().setValue(getRed());
greenSlider.setValue(getGreen());
greenSpinner.getValueFactory().setValue(getGreen());
blueSlider.setValue(getBlue());
blueSpinner.getValueFactory().setValue(getBlue());
alphaSlider.setValue(getAlpha());
alphaSpinner.getValueFactory().setValue(getAlpha());
updating = false;
});
colorNames.setCellFactory(view -> new NamedWidgetColorCell());
colorNames.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
setColor(newValue);
}
});
// Get colors on background thread
ModelThreadPool.getExecutor().execute(() -> {
final NamedWidgetColors colors = WidgetColorService.getColors();
final Collection<NamedWidgetColor> values = colors.getColors();
values.parallelStream().forEach(nc -> namedColors.put(JFXUtil.convert(nc), nc));
Platform.runLater(() -> {
values.stream().forEach(nc -> {
colorNames.getItems().addAll(nc);
});
namesLoaded.set(true);
});
});
// Add the 24 Visually Unique colors to the user's palette.
// They are useful to create plot tracks.
// See: http://phrogz.net/tmp/24colors.html
picker.getCustomColors().add(Color.rgb(255, 0, 0));
picker.getCustomColors().add(Color.rgb(255, 255, 0));
picker.getCustomColors().add(Color.rgb(0, 234, 255));
picker.getCustomColors().add(Color.rgb(170, 0, 255));
picker.getCustomColors().add(Color.rgb(255, 127, 0));
picker.getCustomColors().add(Color.rgb(191, 255, 0));
picker.getCustomColors().add(Color.rgb(0, 149, 255));
picker.getCustomColors().add(Color.rgb(255, 0, 170));
picker.getCustomColors().add(Color.rgb(255, 212, 0));
picker.getCustomColors().add(Color.rgb(106, 255, 0));
picker.getCustomColors().add(Color.rgb(0, 64, 255));
picker.getCustomColors().add(Color.rgb(237, 185, 185));
picker.getCustomColors().add(Color.rgb(185, 215, 237));
picker.getCustomColors().add(Color.rgb(231, 233, 185));
picker.getCustomColors().add(Color.rgb(220, 185, 237));
picker.getCustomColors().add(Color.rgb(185, 237, 224));
picker.getCustomColors().add(Color.rgb(143, 35, 35));
picker.getCustomColors().add(Color.rgb(35, 98, 143));
picker.getCustomColors().add(Color.rgb(143, 106, 35));
picker.getCustomColors().add(Color.rgb(107, 35, 143));
picker.getCustomColors().add(Color.rgb(79, 143, 35));
picker.getCustomColors().add(Color.rgb(0, 0, 0));
picker.getCustomColors().add(Color.rgb(115, 115, 115));
picker.getCustomColors().add(Color.rgb(204, 204, 204));
}
use of javafx.scene.control.TextFormatter in project trex-stateless-gui by cisco-system-traffic-generator.
the class MultiplierOption method buildUI.
/**
* Build multiplier view UI
*
* @param title
* @param group
*/
private void buildUI(String title, ToggleGroup group) {
// add radio button
selection = new RadioButton(title);
selection.setToggleGroup(group);
selection.selectedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
if (newValue) {
multiplierSelectionEvent.onMultiplierSelect(type);
}
value.setDisable(!newValue);
});
setTooltip();
getChildren().add(selection);
MultiplierOption.setTopAnchor(selection, 15d);
MultiplierOption.setLeftAnchor(selection, 0d);
// text field
value = new TextField();
value.setPrefSize(120, 22);
value.setDisable(true);
value.addEventFilter(KeyEvent.KEY_RELEASED, multiplierSelectionEvent.validateInput());
String regex = unitRegex();
final UnaryOperator<TextFormatter.Change> keyPressFilter = c -> {
String text = c.getControlNewText();
if (text.matches(regex)) {
return c;
} else {
return null;
}
};
value.setTextFormatter(new TextFormatter<>(keyPressFilter));
getChildren().add(value);
MultiplierOption.setTopAnchor(value, 43d);
MultiplierOption.setLeftAnchor(value, 0d);
MultiplierOption.setBottomAnchor(value, 15d);
}
Aggregations