doc.childrenProperty().addListener( (MapChangeListener.Change< ? extends String,
/** * Registers a {@code MapChangeListener} that always handles notifications inside the UI thread. * * @param observable the observable on which the listener will be registered. * @param runnable the code to be executed when the listener is notified. * * @return a {@code MapChangeListener}. */ public static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(@Nonnull final ObservableMap<K, V> observable, @Nonnull final Runnable runnable) { requireNonNull(observable, ERROR_OBSERVABLE_NULL); MapChangeListener<K, V> listener = uiThreadAwareMapChangeListener(runnable); observable.addListener(listener); return listener; }
/** * Registers a {@code MapChangeListener} that always handles notifications inside the UI thread. * * @param observable the observable on which the listener will be registered. * @param consumer the consumer of the {@code newValue} argument. * * @return a {@code MapChangeListener}. */ public static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(@Nonnull final ObservableMap<K, V> observable, @Nonnull final Consumer<MapChangeListener.Change<? extends K, ? extends V>> consumer) { requireNonNull(observable, ERROR_OBSERVABLE_NULL); MapChangeListener<K, V> listener = uiThreadAwareMapChangeListener(consumer); observable.addListener(listener); return listener; }
/** * Registers a {@code MapChangeListener} that always handles notifications inside the UI thread. * * @param observable the observable on which the listener will be registered. * @param listener the wrapped map change listener. * * @return a {@code MapChangeListener}. */ public static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(@Nonnull final ObservableMap<K, V> observable, @Nonnull MapChangeListener<K, V> listener) { requireNonNull(observable, ERROR_OBSERVABLE_NULL); MapChangeListener<K, V> uiListener = uiThreadAwareMapChangeListener(listener); observable.addListener(uiListener); return listener; }
protected TransformationMap(@Nonnull ObservableMap<K, ? extends F> source) { this.source = requireNonNull(source, "Argument 'source' must not be null"); source.addListener(new WeakMapChangeListener<>(getListener())); }
public DelegatingObservableMap(@Nonnull ObservableMap<K, V> delegate) { this.delegate = requireNonNull(delegate, "Argument 'delegate' must not be null"); this.delegate.addListener(new WeakMapChangeListener<>(getListener())); }
/** * Constructs a new adjuster control with a default horizontal orientation. */ public PlusMinusSlider() { getStyleClass().add(DEFAULT_STYLE_CLASS); setOrientation(Orientation.HORIZONTAL); /* * We are "abusing" the properties map to pass the new value of the * slider from the skin to the control. It has to be done this way * because the value property of this control is "read-only". */ getProperties().addListener(new MapChangeListener<Object, Object>() { @Override public void onChanged(MapChangeListener.Change<? extends Object, ? extends Object> change) { if (change.getKey().equals("plusminusslidervalue")) { //$NON-NLS-1$ if (change.getValueAdded() != null) { Double valueAdded = (Double) change.getValueAdded(); value.set(valueAdded); change.getMap().remove("plusminusslidervalue"); //$NON-NLS-1$ } } }; }); }
public static <K,T> Observable<ObservableMap<K,T>> fromObservableMap(final ObservableMap<K,T> source) { return Observable.create((ObservableOnSubscribe<ObservableMap<K,T>>) subscriber -> { MapChangeListener<K,T> listener = c -> subscriber.onNext(source); source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).startWith(source).subscribeOn(JavaFxScheduler.platform()); }
public static <K,T> Observable<Entry<K,T>> fromObservableMapRemovals(final ObservableMap<K,T> source) { return Observable.create((ObservableOnSubscribe<Entry<K,T>>) subscriber -> { MapChangeListener<K,T> listener = c -> { if (c.wasRemoved()) { subscriber.onNext(new SimpleEntry<K,T>(c.getKey(),c.getValueRemoved())); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
public static <K,T> Observable<Entry<K,T>> fromObservableMapAdds(final ObservableMap<K,T> source) { return Observable.create((ObservableOnSubscribe<Entry<K,T>>) subscriber -> { MapChangeListener<K,T> listener = c -> { if (c.wasAdded()) { subscriber.onNext(new SimpleEntry<K,T>(c.getKey(),c.getValueAdded())); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
public static <K,T> Observable<Entry<K,T>> fromObservableMapRemovals(final ObservableMap<K,T> source) { return Observable.create((ObservableOnSubscribe<Entry<K,T>>) subscriber -> { MapChangeListener<K,T> listener = c -> { if (c.wasRemoved()) { subscriber.onNext(new SimpleEntry<K,T>(c.getKey(),c.getValueRemoved())); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
public static <K,T> Observable<ObservableMap<K,T>> fromObservableMap(final ObservableMap<K,T> source) { return Observable.create((ObservableOnSubscribe<ObservableMap<K,T>>) subscriber -> { MapChangeListener<K,T> listener = c -> subscriber.onNext(source); source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).startWith(source).subscribeOn(JavaFxScheduler.platform()); }
public static <K,T> Observable<Entry<K,T>> fromObservableMapAdds(final ObservableMap<K,T> source) { return Observable.create((ObservableOnSubscribe<Entry<K,T>>) subscriber -> { MapChangeListener<K,T> listener = c -> { if (c.wasAdded()) { subscriber.onNext(new SimpleEntry<K,T>(c.getKey(),c.getValueAdded())); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
/** * {@inheritDoc} */ @Override protected Node createContent() { final GridPane informationContentPane = new GridPane(); informationContentPane.getStyleClass().add("grid"); engineUserData.addListener((Observable invalidation) -> updateUserData(informationContentPane)); updateUserData(informationContentPane); final HBox buttonBox = createEngineButtons(); final Region informationContentSpacer = new Region(); informationContentSpacer.getStyleClass().add("engineSpacer"); final Region buttonBoxSpacer = new Region(); buttonBoxSpacer.getStyleClass().add("engineSpacer"); return new VBox(informationContentPane, informationContentSpacer, buttonBox, buttonBoxSpacer); }
/** * * @param node */ private static void init(Node node) { ObservableMap<Object, Object> nodeProperties = getProperties(node); if(nodeProperties.get(P_INPUTMAP) == null) { nodeProperties.put(P_INPUTMAP, InputMap.empty()); nodeProperties.put(P_HANDLERS, new ArrayList<Map.Entry<?, ?>>()); MapChangeListener<Object, Object> listener = ch -> { if(!P_INPUTMAP.equals(ch.getKey())) { return; } getHandlers(node).forEach(entry -> { node.removeEventHandler(entry.getKey(), (EventHandler<Event>) entry.getValue()); }); getHandlers(node).clear(); InputMap<?> inputMap = (InputMap<?>) ch.getValueAdded(); inputMap.forEachEventType(new HandlerConsumer<Event>() { @Override public <E extends Event> void accept( EventType<? extends E> t, InputHandler<? super E> h) { node.addEventHandler(t, h); getHandlers(node).add(new SimpleEntry<>(t, h)); }}); }; nodeProperties.addListener(listener); } }
/** * Creates validation support instance. <br> * If initial decoration is desired invoke {@link #initInitialDecoration()}. */ public ValidationSupport() { validationResultProperty().addListener( (o, oldValue, validationResult) -> { invalidProperty.set(!validationResult.getErrors().isEmpty()); redecorate(); }); // notify validation result observers validationResults.addListener( (MapChangeListener.Change<? extends Control, ? extends ValidationResult> change) -> validationResultProperty.set(ValidationResult.fromResults(validationResults.values())) ); }
/** * Creates a new {@link GridPane} containing the properties of the selected shortcut * * @return a new {@link GridPane} containing the properties of the selected shortcut */ private GridPane createPropertiesGrid() { final GridPane propertiesGrid = new GridPane(); propertiesGrid.getStyleClass().add("grid"); ColumnConstraints titleColumn = new ColumnConstraintsWithPercentage(30); ColumnConstraints valueColumn = new ColumnConstraintsWithPercentage(70); propertiesGrid.getColumnConstraints().addAll(titleColumn, valueColumn); // ensure that changes to the shortcutProperties map result in updates to the GridPane shortcutProperties.addListener((Observable invalidation) -> updateProperties(propertiesGrid)); // initialize the properties grid correctly updateProperties(propertiesGrid); return propertiesGrid; }
/** * Creates a new {@link GridPane} containing the properties of the selected shortcut * * @return a new {@link GridPane} containing the properties of the selected shortcut */ private GridPane createPropertiesGrid() { final GridPane propertiesGrid = new GridPane(); propertiesGrid.getStyleClass().add("grid"); ColumnConstraints titleColumn = new ColumnConstraintsWithPercentage(30); ColumnConstraints valueColumn = new ColumnConstraintsWithPercentage(70); propertiesGrid.getColumnConstraints().addAll(titleColumn, valueColumn); // ensure that changes to the shortcutProperties map result in updates to the GridPane shortcutProperties.addListener((Observable invalidation) -> updateProperties(propertiesGrid)); // initialize the properties grid correctly updateProperties(propertiesGrid); return propertiesGrid; }
public static <K,T> Observable<MapChange<K,T>> fromObservableMapChanges(final ObservableMap<K,T> source) { return Observable.create((ObservableOnSubscribe<MapChange<K,T>>) subscriber -> { MapChangeListener<K,T> listener = c -> { if (c.wasRemoved()) { subscriber.onNext(new MapChange<K,T>(c.getKey(),c.getValueRemoved(),Flag.REMOVED)); } if (c.wasAdded()) { subscriber.onNext(new MapChange<K,T>(c.getKey(),c.getValueAdded(),Flag.ADDED)); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); } }
public static <K,T> Observable<MapChange<K,T>> fromObservableMapChanges(final ObservableMap<K,T> source) { return Observable.create((ObservableOnSubscribe<MapChange<K,T>>) subscriber -> { MapChangeListener<K,T> listener = c -> { if (c.wasRemoved()) { subscriber.onNext(new MapChange<K,T>(c.getKey(),c.getValueRemoved(),Flag.REMOVED)); } if (c.wasAdded()) { subscriber.onNext(new MapChange<K,T>(c.getKey(),c.getValueAdded(),Flag.ADDED)); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); } }