Beispiel #1
0
 private void setListener() {
   @Nullable StringProperty fieldTextProperty = textProperty();
   if (fieldTextProperty == null) {
     throw new ZeusRuntimeException("NaturalField: textProperty is null");
   }
   @NotNull ChangeListener<String> fieldAddListener = prepareAddListener();
   fieldTextProperty.addListener(fieldAddListener);
 }
Beispiel #2
0
  @Override
  public void initialize(URL location, ResourceBundle resources) {
    localeName.bind(ProgramProperty.localeName);
    localeName.addListener(
        (observ, old, value) -> setElementText(Controller.getResourceBundle(new Locale(value))));

    setElementText(
        Controller.getResourceBundle(
            new Locale(SingleObject.getProgramSettings().getLocaleName())));
  }
Beispiel #3
0
  public void bind(final StringProperty property, final String propertyName) {
    String value = props.getProperty(propertyName);
    if (value != null) {
      property.set(value);
    }

    property.addListener(
        o -> {
          props.setProperty(propertyName, property.getValue());
        });
  }
 public LuceneSearchTypeFilter() {
   searchParameter.addListener(
       new ChangeListener<String>() {
         @Override
         public void changed(
             ObservableValue<? extends String> observable, String oldValue, String newValue) {
           if (newValue != null && newValue.trim().length() > 1) {
             isValid.set(true);
           } else {
             isValid.set(false);
           }
         }
       });
 }
Beispiel #5
0
    //		Validator getValidator() { return validator; }
    void setValidator(Validator v) {
      if (valuePropertyListener != null) {
        valueProperty.removeListener(valuePropertyListener);
      }
      validator = v;

      if (validator != null) {
        valueProperty.addListener(
            new ChangeListener<String>() {
              @Override
              public void changed(
                  ObservableValue<? extends String> observable, String oldValue, String newValue) {
                statusProperty.set(validator.isValid());
              }
            });
        statusProperty.set(validator.isValid());
      }
    }
Beispiel #6
0
  /**
   * Verbindet ein Textfeld bidirektional mit einem Slider und sorgt für Validierung der Eingaben.
   *
   * @param textField Textfeld
   * @param slider Slider
   * @param maxValue Maximalwert für das Textfeld
   */
  private void bindTextInputListenersAndSlider(
      final TextField textField, final Slider slider, final long maxValue) {
    final StringProperty textProperty = textField.textProperty();

    // Eingaben auf Zahlen beschränken
    textField.addEventFilter(
        KeyEvent.KEY_TYPED,
        new EventHandler<KeyEvent>() {
          public void handle(final KeyEvent keyEvent) {
            if (!"0123456789".contains(keyEvent.getCharacter())) {
              keyEvent.consume();
            }
          }
        });

    textProperty.addListener(
        new ChangeListener<String>() {
          public void changed(
              final ObservableValue<? extends String> property,
              final String oldValue,
              final String newValue) {
            // Wert auf gültigen Bereich beschränken
            try {
              final long parsedNumber = Long.parseLong(newValue);
              if (parsedNumber < MIN_VALUE) {
                textProperty.setValue(getTwoDigitValue(MIN_VALUE));
              } else if (parsedNumber > maxValue) {
                textProperty.setValue(getTwoDigitValue(maxValue));
              } else if (newValue.length() > 2) {
                textProperty.setValue(getTwoDigitValue(parsedNumber));
              } else {
                textProperty.setValue(newValue);
              }

              // Änderung an Zeit-Property durchstellen
              timeProperty.set(getValue());
            } catch (final NumberFormatException e) {
              // alten Wert wieder setzen (sinnvoll bei Änderung per Copy & Paste)
              textProperty.setValue(oldValue);
            }
          }
        });

    // bei Verlassen des Feldes sicherstellen, dass Wert zweistellig
    textField
        .focusedProperty()
        .addListener(
            new ChangeListener<Boolean>() {
              public void changed(
                  final ObservableValue<? extends Boolean> property,
                  final Boolean oldValue,
                  final Boolean newValue) {
                if (Boolean.FALSE.equals(newValue)) {
                  try {
                    textProperty.setValue(getTwoDigitValue(Long.parseLong(textProperty.get())));
                  } catch (final NumberFormatException e) {
                    textProperty.setValue(getTwoDigitValue(MIN_VALUE));
                  }
                }
              }
            });

    // Textfeld mit Slider koppeln
    if (slider != null) {
      slider.setMax(maxValue);
      textProperty.bindBidirectional(
          slider.valueProperty(),
          new StringConverter<Number>() {
            public String toString(final Number number) {
              return getTwoDigitValue(number.longValue());
            }

            public Number fromString(final String string) {
              return Long.parseLong(string);
            }
          });
    }

    // auf Scroll-Ereignis im Textfeld reagieren
    textField.setOnScroll(
        new EventHandler<ScrollEvent>() {
          public void handle(final ScrollEvent event) {
            // Scrollen über Feld ohne Fokus hat keine Auswirkung
            if (!textField.isFocused()) {
              return;
            }

            final double change = event.getDeltaY() > 0 ? 1 : -1;
            slider.setValue(slider.getValue() + change);

            event.consume();
          }
        });
  }