private void initialize()

in kit/src/main/java/com/oracle/javafx/scenebuilder/kit/editor/panel/inspector/editors/BoundedDoubleEditor.java [104:187]


    private void initialize() {
        root = EditorUtils.loadFxml("BoundedDoubleEditor.fxml", this); //NOI18N

        //
        // Text field
        //
        EventHandler<ActionEvent> onActionListener = event -> {
            if (isHandlingError()) {
                // Event received because of focus lost due to error dialog
                return;
            }
            if (isUpdateFromModel() || updateFromSlider) {
                // nothing to do
                return;
            }

            Object value = getValue();
            if (getPropertyMeta() != null) {
                if ((value == null)
                        || !((DoublePropertyMetadata) getPropertyMeta()).isValidValue((Double) value)) {
                    handleInvalidValue(getTextField().getText());
                }
            }
            assert value instanceof Double;
            double valDouble = (Double) value;
            // Check if the entered value is a constant string
            boolean isConstant = constants.get(getTextField().getText().toUpperCase(Locale.ROOT)) != null;
            // Check if the entered value is a constant value
            for (Map.Entry<String, Object> entry : constants.entrySet()) {
                if (value.equals(entry.getValue())) {
                    isConstant = true;
                    break;
                }
            }
            // If the value is not a constant,
            // and is less than the minimum, or more than the maximum,
            // set the value to min or max
            if (!minMaxForSliderOnly && !isConstant && (valDouble < min || valDouble > max)) {
                if (valDouble < min) {
                    valDouble = min;
                } else if (valDouble > max) {
                    valDouble = max;
                }
                getTextField().setText(EditorUtils.valAsStr(valDouble));
            }
            getTextField().selectAll();
            updateFromTextField = true;
            slider.setValue(valDouble);
            updateFromTextField = false;
            userUpdateValueProperty(valDouble);
        };
        setNumericEditorBehavior(this, getTextField(), onActionListener, false);

        //
        // Slider
        //
        configureSlider(getPropertyMeta());

        slider.valueProperty().addListener((InvalidationListener) valueModel -> {
//                System.out.println("Slider : valueProperty changed!");
            if (isUpdateFromModel() || updateFromTextField) {
                // nothing to do
                return;
            }

            // Slider button moved or left/right key typed.
            // In this case, we want to round the value,
            // since the Slider may returns many decimals.
            double value = EditorUtils.round(slider.getValue(), roundingFactor);
            updateFromSlider = true;
            getTextField().setText(EditorUtils.valAsStr(value));
            updateFromSlider = false;
            userUpdateTransientValueProperty(value);
        });

        slider.pressedProperty().addListener((InvalidationListener) valueModel -> {
            if (!slider.isPressed()) {
                double value = EditorUtils.round(slider.getValue(), roundingFactor);
                userUpdateValueProperty(value);
            }
        });
        // Add the AutoSuggest text field in the scene graph
        textSp.getChildren().add(super.getRoot());
    }