/** * Registers a {@code SetChangeListener} 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 SetChangeListener}. */ public static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(@Nonnull final ObservableSet<E> observable, @Nonnull final Consumer<SetChangeListener.Change<? extends E>> consumer) { requireNonNull(observable, ERROR_OBSERVABLE_NULL); SetChangeListener<E> listener = uiThreadAwareSetChangeListener(consumer); observable.addListener(listener); return listener; }
/** * Registers a {@code SetChangeListener} that always handles notifications inside the UI thread. * * @param observable the observable on which the listener will be registered. * @param listener the wrapped set change listener. * * @return a {@code SetChangeListener}. */ public static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(@Nonnull final ObservableSet<E> observable, @Nonnull SetChangeListener<E> listener) { requireNonNull(observable, ERROR_OBSERVABLE_NULL); SetChangeListener<E> uiListener = uiThreadAwareSetChangeListener(listener); observable.addListener(uiListener); return listener; }
/** * Registers a {@code SetChangeListener} 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 SetChangeListener}. */ public static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(@Nonnull final ObservableSet<E> observable, @Nonnull final Runnable runnable) { requireNonNull(observable, ERROR_OBSERVABLE_NULL); SetChangeListener<E> listener = uiThreadAwareSetChangeListener(runnable); observable.addListener(listener); return listener; }
public DelegatingObservableSet(@Nonnull ObservableSet<E> delegate) { this.delegate = requireNonNull(delegate, "Argument 'delegate' must not be null"); this.delegate.addListener(new WeakSetChangeListener<>(getListener())); }
protected TransformationSet(@Nonnull ObservableSet<? extends F> source) { this.source = requireNonNull(source, "Argument 'source' must not be null"); source.addListener(new WeakSetChangeListener<>(getListener())); }
/** * Creates a new instance of this class. * * TODO: support multiple, floating stages * * @param dockingPane the {@link DockingPane} * @param contextManager the {@link ContextManager} */ public DockingManager(DockingPane dockingPane, final ContextManager contextManager) { this.dockingPane = dockingPane; this.contextManager = contextManager; this.dockingPane.activeDockableProperty().addListener(activeDockableListener); // TODO: handle vizualized/ unhandled Dockables this.dockingPane.getDockables().addListener(dockablesListener); }
public static <T> Observable<ObservableSet<T>> fromObservableSet(final ObservableSet<T> source) { return Observable.create((ObservableOnSubscribe<ObservableSet<T>>) subscriber -> { SetChangeListener<T> listener = c -> subscriber.onNext(source); source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).startWith(source).subscribeOn(JavaFxScheduler.platform()); }
public static <T> Observable<ObservableSet<T>> fromObservableSet(final ObservableSet<T> source) { return Observable.create((ObservableOnSubscribe<ObservableSet<T>>) subscriber -> { SetChangeListener<T> listener = c -> subscriber.onNext(source); source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).startWith(source).subscribeOn(JavaFxScheduler.platform()); }
public static <T> Observable<T> fromObservableSetAdds(final ObservableSet<T> source) { return Observable.create((ObservableOnSubscribe<T>) subscriber -> { SetChangeListener<T> listener = c -> { if (c.wasAdded()) { subscriber.onNext(c.getElementAdded()); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
public static <T> Observable<T> fromObservableSetRemovals(final ObservableSet<T> source) { return Observable.create((ObservableOnSubscribe<T>) subscriber -> { SetChangeListener<T> listener = c -> { if (c.wasRemoved()) { subscriber.onNext(c.getElementRemoved()); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
public static <T> Observable<T> fromObservableSetRemovals(final ObservableSet<T> source) { return Observable.create((ObservableOnSubscribe<T>) subscriber -> { SetChangeListener<T> listener = c -> { if (c.wasRemoved()) { subscriber.onNext(c.getElementRemoved()); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
public static <T> Observable<T> fromObservableSetAdds(final ObservableSet<T> source) { return Observable.create((ObservableOnSubscribe<T>) subscriber -> { SetChangeListener<T> listener = c -> { if (c.wasAdded()) { subscriber.onNext(c.getElementAdded()); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); }
/** * Creates a new instance of this class. */ public DockingPane() { getStyleClass().setAll(DEFAULT_STYLE_CLASS); dockingAreaDescriptors.addListener((SetChangeListener.Change<? extends DockingAreaDescriptor> change) -> { if (change.wasAdded()) { dockingAreaIds.add(change.getElementAdded().getId()); } else if (change.wasRemoved()) { dockingAreaIds.remove(change.getElementRemoved().getId()); } }); dockables.addListener((SetChangeListener.Change<? extends FXDockableEntry> change) -> { if (change.wasAdded()) { // if (dockingAreaIds.contains(dockableEntry.getDockablePreferences().getAreaId())) { // TODO: needed? dockableEntryMap.put(change.getElementAdded().getDockable(), change.getElementAdded()); } else if (change.wasRemoved()) { dockableEntryMap.remove(change.getElementRemoved().getDockable()); } }); setFocusTraversable(false); }
public DockingPaneSkin(DockingPane control) { this.control = control; pane.setCenter(rootSplitPane); this.control.getDockingAreaDescriptors().addListener(dockingAreaDescriptorSetChangeListener); this.control.getDockables().addListener(dockableEntrySetChangeListener);
public static <T> Observable<SetChange<T>> fromObservableSetChanges(final ObservableSet<T> source) { return Observable.create((ObservableOnSubscribe<SetChange<T>>) subscriber -> { SetChangeListener<T> listener = c -> { if (c.wasRemoved()) { subscriber.onNext(new SetChange<T>(c.getElementRemoved(), Flag.REMOVED)); } if (c.wasAdded()) { subscriber.onNext(new SetChange<T>(c.getElementAdded(), Flag.ADDED)); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); } }
public static <T> Observable<SetChange<T>> fromObservableSetChanges(final ObservableSet<T> source) { return Observable.create((ObservableOnSubscribe<SetChange<T>>) subscriber -> { SetChangeListener<T> listener = c -> { if (c.wasRemoved()) { subscriber.onNext(new SetChange<T>(c.getElementRemoved(), Flag.REMOVED)); } if (c.wasAdded()) { subscriber.onNext(new SetChange<T>(c.getElementAdded(), Flag.ADDED)); } }; source.addListener(listener); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeListener(listener))); }).subscribeOn(JavaFxScheduler.platform()); } }
public DockingPaneSkin(DockingPane control) { this.control = control; pane.setCenter(rootSplitPane); this.control.getDockingAreaDescriptors().addListener(dockingAreaDescriptorSetChangeListener); this.control.getDockables().addListener(dockableEntrySetChangeListener); this.control.getDockingAreaDescriptors().forEach(dockingAreaDescriptor -> addDockingArea(dockingAreaDescriptor)); this.control.getDockables().forEach(dockableEntry -> addDockable(dockableEntry)); this.control.sceneProperty().addListener((ov, oldValue, newValue) -> { if (oldValue != null) { oldValue.focusOwnerProperty().removeListener(focusOwnerChangeListener); } if (newValue != null) { newValue.focusOwnerProperty().addListener(focusOwnerChangeListener); } }); this.control.getScene().focusOwnerProperty().addListener(focusOwnerChangeListener); }
MonocleApplication() { for (InputDevice device : platform.getInputDeviceRegistry().getInputDevices()) { updateDeviceFlags(device, true); } platform.getInputDeviceRegistry().getInputDevices().addListener( (SetChangeListener<InputDevice>) change -> { if (change.wasAdded()) { InputDevice device = change.getElementAdded(); updateDeviceFlags(device, true); } else if (change.wasRemoved()) { InputDevice device = change.getElementRemoved(); updateDeviceFlags(device, false); } } ); }
/** * @param root * The "checked" state of all the descendants, including the root * itself, will be monitored */ public CheckedTreeItemCollector(CheckBoxTreeItem<T> root) { this.root = root; root.addEventHandler(TreeModificationEvent.ANY, event -> { @SuppressWarnings("unchecked") TreeModificationEvent<T> mod = (TreeModificationEvent<T>) event; T value = mod.getTreeItem().getValue(); boolean checked = mod.getTreeItem().isSelected(); synchronized (this.checkedItems) { if (checked && !this.checkedItems.contains(value)) { this.checkedItems.add(value); } else if (!checked && this.checkedItems.contains(value)) { this.checkedItems.remove(value); } } }); this.checkedItems.addListener((SetChangeListener<T>) change -> { if (change.getElementAdded() != null) { setCheckedStateForValue(root, change.getElementAdded(), true); } if (change.getElementRemoved() != null) { setCheckedStateForValue(root, change.getElementRemoved(), false); } }); }
/** * @param root * The "checked" state of all the descendants, including the root * itself, will be monitored */ public CheckedTreeItemCollector(CheckBoxTreeItem<T> root) { this.root = root; root.addEventHandler(TreeModificationEvent.ANY, event -> { @SuppressWarnings("unchecked") TreeModificationEvent<T> mod = (TreeModificationEvent<T>) event; T value = mod.getTreeItem().getValue(); boolean checked = mod.getTreeItem().isSelected(); synchronized (this.checkedItems) { if (checked && !this.checkedItems.contains(value)) { this.checkedItems.add(value); } else if (!checked && this.checkedItems.contains(value)) { this.checkedItems.remove(value); } } }); this.checkedItems.addListener((SetChangeListener<T>) change -> { if (change.getElementAdded() != null) { setCheckedStateForValue(root, change.getElementAdded(), true); } if (change.getElementRemoved() != null) { setCheckedStateForValue(root, change.getElementRemoved(), false); } }); }