package uihelpers; import helpers.IObservableCollection; import helpers.Observable.IObserver; import helpers.StatusObject; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.Viewer; public class ObservableCollectionContentProvider implements IStructuredContentProvider { private final IObserver<StatusObject> observer; public ObservableCollectionContentProvider(IObserver<StatusObject> observer) { super(); this.observer = observer; } @Override public void dispose() {} @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { if (oldInput instanceof IObservableCollection) { ((IObservableCollection)oldInput).deleteObserver(observer); } if (newInput instanceof IObservableCollection) { ((IObservableCollection)newInput).addObserver(observer); } } @Override public Object[] getElements(Object inputElement) { if (inputElement instanceof IObservableCollection) { return ((IObservableCollection)inputElement).values().toArray(); } return new Object[]{}; } }