Search in sources :

Example 1 with TextFormatter

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));
}
Also used : Arrays(java.util.Arrays) ListIterator(java.util.ListIterator) PseudoClass(javafx.css.PseudoClass) Credits(net.rptools.tokentool.client.Credits) ManageOverlays(net.rptools.tokentool.client.ManageOverlays) Glow(javafx.scene.effect.Glow) Point(java.awt.Point) UnaryOperator(java.util.function.UnaryOperator) StackPane(javafx.scene.layout.StackPane) TextFormatter(javafx.scene.control.TextFormatter) DragEvent(javafx.scene.input.DragEvent) RegionSelector(net.rptools.tokentool.client.RegionSelector) Task(javafx.concurrent.Task) ScrollPane(javafx.scene.control.ScrollPane) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Map(java.util.Map) ImageIO(javax.imageio.ImageIO) RotateEvent(javafx.scene.input.RotateEvent) GaussianBlur(javafx.scene.effect.GaussianBlur) Path(java.nio.file.Path) TextField(javafx.scene.control.TextField) MenuItem(javafx.scene.control.MenuItem) NavigableSet(java.util.NavigableSet) Spinner(javafx.scene.control.Spinner) Group(javafx.scene.Group) Executors(java.util.concurrent.Executors) TreeView(javafx.scene.control.TreeView) Platform(javafx.application.Platform) FXML(javafx.fxml.FXML) Duration(javafx.util.Duration) Logger(org.apache.logging.log4j.Logger) ImageUtil(net.rptools.tokentool.util.ImageUtil) ToggleButton(javafx.scene.control.ToggleButton) Clipboard(javafx.scene.input.Clipboard) Entry(java.util.Map.Entry) ClipboardContent(javafx.scene.input.ClipboardContent) BorderPane(javafx.scene.layout.BorderPane) FilenameUtils(org.apache.commons.io.FilenameUtils) CornerRadii(javafx.scene.layout.CornerRadii) TreeItem(javafx.scene.control.TreeItem) MouseEvent(javafx.scene.input.MouseEvent) FileSaveUtil(net.rptools.tokentool.util.FileSaveUtil) Bindings(javafx.beans.binding.Bindings) TreeSet(java.util.TreeSet) TransferMode(javafx.scene.input.TransferMode) ArrayList(java.util.ArrayList) AppConstants(net.rptools.tokentool.AppConstants) LinkedHashMap(java.util.LinkedHashMap) Dragboard(javafx.scene.input.Dragboard) FadeTransition(javafx.animation.FadeTransition) Insets(javafx.geometry.Insets) ProgressBar(javafx.scene.control.ProgressBar) Slider(javafx.scene.control.Slider) BackgroundFill(javafx.scene.layout.BackgroundFill) I18N(net.rptools.tokentool.util.I18N) ZoomEvent(javafx.scene.input.ZoomEvent) ExecutorService(java.util.concurrent.ExecutorService) ColorPicker(javafx.scene.control.ColorPicker) Color(javafx.scene.paint.Color) ObjectProperty(javafx.beans.property.ObjectProperty) Label(javafx.scene.control.Label) Change(javafx.scene.control.TextFormatter.Change) TitledPane(javafx.scene.control.TitledPane) MouseDragEvent(javafx.scene.input.MouseDragEvent) Files(java.nio.file.Files) CheckBox(javafx.scene.control.CheckBox) IOException(java.io.IOException) ScrollEvent(javafx.scene.input.ScrollEvent) Background(javafx.scene.layout.Background) File(java.io.File) Cursor(javafx.scene.Cursor) FileChooser(javafx.stage.FileChooser) ActionEvent(javafx.event.ActionEvent) ImageView(javafx.scene.image.ImageView) AppPreferences(net.rptools.tokentool.AppPreferences) SwingFXUtils(javafx.embed.swing.SwingFXUtils) TreeCell(javafx.scene.control.TreeCell) ObservableValue(javafx.beans.value.ObservableValue) Comparator(java.util.Comparator) ChangeListener(javafx.beans.value.ChangeListener) LogManager(org.apache.logging.log4j.LogManager) Image(javafx.scene.image.Image) TextFormatter(javafx.scene.control.TextFormatter) Background(javafx.scene.layout.Background) TreeItem(javafx.scene.control.TreeItem) GaussianBlur(javafx.scene.effect.GaussianBlur) BackgroundFill(javafx.scene.layout.BackgroundFill) Change(javafx.scene.control.TextFormatter.Change) Glow(javafx.scene.effect.Glow) FXML(javafx.fxml.FXML)

Example 2 with TextFormatter

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));
}
Also used : TextFormatter(javafx.scene.control.TextFormatter) NamedWidgetColor(org.csstudio.display.builder.model.properties.NamedWidgetColor) NamedWidgetColor(org.csstudio.display.builder.model.properties.NamedWidgetColor) WidgetColor(org.csstudio.display.builder.model.properties.WidgetColor) Color(javafx.scene.paint.Color) NamedWidgetColors(org.csstudio.display.builder.model.persist.NamedWidgetColors) ButtonType(javafx.scene.control.ButtonType)

Example 3 with TextFormatter

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);
}
Also used : TextField(javafx.scene.control.TextField) MultiplierType(com.exalttech.trex.ui.MultiplierType) Util(com.exalttech.trex.util.Util) UnaryOperator(java.util.function.UnaryOperator) KeyEvent(javafx.scene.input.KeyEvent) TextFormatter(javafx.scene.control.TextFormatter) Logger(org.apache.log4j.Logger) ToggleGroup(javafx.scene.control.ToggleGroup) AnchorPane(javafx.scene.layout.AnchorPane) RadioButton(javafx.scene.control.RadioButton) ObservableValue(javafx.beans.value.ObservableValue) MultiplierSelectionEvent(com.exalttech.trex.ui.components.events.MultiplierSelectionEvent) Tooltip(javafx.scene.control.Tooltip) ObservableValue(javafx.beans.value.ObservableValue) TextField(javafx.scene.control.TextField) RadioButton(javafx.scene.control.RadioButton)

Aggregations

UnaryOperator (java.util.function.UnaryOperator)2 ObservableValue (javafx.beans.value.ObservableValue)2 TextFormatter (javafx.scene.control.TextFormatter)2 MultiplierType (com.exalttech.trex.ui.MultiplierType)1 MultiplierSelectionEvent (com.exalttech.trex.ui.components.events.MultiplierSelectionEvent)1 Util (com.exalttech.trex.util.Util)1 Point (java.awt.Point)1 File (java.io.File)1 IOException (java.io.IOException)1 Files (java.nio.file.Files)1 Path (java.nio.file.Path)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Comparator (java.util.Comparator)1 LinkedHashMap (java.util.LinkedHashMap)1 ListIterator (java.util.ListIterator)1 Map (java.util.Map)1 Entry (java.util.Map.Entry)1 NavigableSet (java.util.NavigableSet)1 TreeSet (java.util.TreeSet)1