public DatasourceAdapter(CollectionDatasource.SupportsPaging datasource) { this.datasource = datasource; datasourceCollectionChangeListener = e -> { samePage = Operation.REFRESH != e.getOperation() && Operation.CLEAR != e.getOperation(); onCollectionChanged(); }; weakDatasourceCollectionChangeListener = new WeakCollectionChangeListener(datasource, datasourceCollectionChangeListener); //noinspection unchecked datasource.addCollectionChangeListener(weakDatasourceCollectionChangeListener); if (datasource.getState() == Datasource.State.VALID) { onCollectionChanged(); } }
@SuppressWarnings("unchecked") public void bind(CollectionDatasource ds) { ds.addItemChangeListener(new WeakItemChangeListener(ds, this)); ds.addItemPropertyChangeListener(new WeakItemPropertyChangeListener(ds, this)); ds.addStateChangeListener(new WeakStateChangeListener(ds, this)); ds.addCollectionChangeListener(new WeakCollectionChangeListener(ds, this)); } }
@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)); }
@SuppressWarnings("unchecked") public void bind(CollectionDatasource ds) { weakItemChangeListener = new WeakItemChangeListener(ds, this); ds.addItemChangeListener(weakItemChangeListener); weakItemPropertyChangeListener = new WeakItemPropertyChangeListener(ds, this); ds.addItemPropertyChangeListener(weakItemPropertyChangeListener); weakStateChangeListener = new WeakStateChangeListener(ds, this); ds.addStateChangeListener(weakStateChangeListener); weakCollectionChangeListener = new WeakCollectionChangeListener(ds, this); ds.addCollectionChangeListener(weakCollectionChangeListener); }