package de.bht.fpa.icashbox.mvp;
import java.util.Observable;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
public abstract class PassiveViewPart extends ViewPart {
private final ObservableImpl uiAvailableObservable = new ObservableImpl();
private final ObservableImpl uiDisposeObservable = new ObservableImpl();
private class ObservableImpl extends Observable {
@Override
public synchronized void setChanged() {
super.setChanged();
}
}
public Observable getUiAvailableObservable() {
return uiAvailableObservable;
}
public Observable getUiDisposeObservable() {
return uiDisposeObservable;
}
@Override
public final void createPartControl(Composite parent) {
basicCreatePartControl(parent);
parent.addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
uiDisposeObservable.setChanged();
uiDisposeObservable.notifyObservers();
}
});
uiAvailableObservable.setChanged();
uiAvailableObservable.notifyObservers();
}
@Override
public final void dispose() {
uiAvailableObservable.deleteObservers();
uiDisposeObservable.deleteObservers();
super.dispose();
}
protected abstract void basicCreatePartControl(Composite parent);
}