protected void fireCollectionChanged(Operation operation, List<T> items) { if (listenersSuspended) { if (!suspendedEvents.isEmpty() && suspendedEvents.getFirst().getOperation().equals(operation)) { suspendedEvents.getFirst().getItems().addAll(items); } else { suspendedEvents.addFirst(new CollectionChangeEvent<>(this, operation, new ArrayList<>(items))); } return; } if (collectionChangeListeners != null && !collectionChangeListeners.isEmpty()) { CollectionChangeEvent event = new CollectionChangeEvent<>(this, operation, items); for (CollectionChangeListener<? super T, K> listener : new ArrayList<>(collectionChangeListeners)) { //noinspection unchecked listener.collectionChanged(event); } } }
@Override public void resumeListeners() { listenersSuspended = false; while(!suspendedEvents.isEmpty()) { CollectionChangeEvent<T,K> suspendedEvent = suspendedEvents.removeLast(); fireCollectionChanged(suspendedEvent.getOperation(), Collections.unmodifiableList(suspendedEvent.getItems())); } }
@Override public void resumeListeners() { listenersSuspended = false; while(!suspendedEvents.isEmpty()) { CollectionChangeEvent<T,K> suspendedEvent = suspendedEvents.removeLast(); fireCollectionChanged(suspendedEvent.getOperation(), Collections.unmodifiableList(suspendedEvent.getItems())); } }
regionsTable.setSelected((Collection) e.getItems());
@SuppressWarnings("unchecked") public EntityDataProvider(CollectionDatasource datasource) { CollectionDsHelper.autoRefreshInvalid(datasource, true); this.datasource = datasource; collectionChangeListener = e -> { DataChangeOperation operation = null; switch (e.getOperation()) { case ADD: operation = DataChangeOperation.ADD; break; case REMOVE: operation = DataChangeOperation.REMOVE; break; case UPDATE: operation = DataChangeOperation.UPDATE; break; case REFRESH: case CLEAR: operation = DataChangeOperation.REFRESH; break; } fireDataChanged(operation, e.getItems()); }; this.datasource.addCollectionChangeListener(new WeakCollectionChangeListener(datasource, collectionChangeListener)); }
protected void fireCollectionChanged(Operation operation, List<T> items) { if (listenersSuspended) { if (!suspendedEvents.isEmpty() && suspendedEvents.getFirst().getOperation().equals(operation)) { suspendedEvents.getFirst().getItems().addAll(items); } else { suspendedEvents.addFirst(new CollectionChangeEvent<>(this, operation, new ArrayList<>(items))); } return; } CollectionChangeEvent<T, K> collectionChangeEvent = new CollectionChangeEvent<>(this, operation, items); //noinspection unchecked getEventRouter().fireEvent(CollectionChangeListener.class, CollectionChangeListener::collectionChanged, collectionChangeEvent); }