package de.bht.fpa.icashbox.mvp; import java.util.Observable; import java.util.Observer; import com.google.inject.Inject; public abstract class BasePresenter<View extends PassiveViewPart, Model> { private Model model; private View view; private final UIObserver uiObserver = new UIObserver(); private class UIObserver implements Observer { @Override public void update(Observable o, Object arg) { if (o.equals(view.getUiAvailableObservable())) { uiAvailable(view); } else if (o.equals(view.getUiDisposeObservable())) { view.getUiAvailableObservable().deleteObserver(uiObserver); view.getUiDisposeObservable().deleteObserver(uiObserver); uiDispose(view); } } } protected void uiAvailable(View view) { } protected void uiDispose(View view) { } @Inject public void setView(View view) { this.view = view; view.getUiAvailableObservable().addObserver(uiObserver); view.getUiDisposeObservable().addObserver(uiObserver); } @Inject public void setModel(Model model) { this.model = model; } public View getView() { return view; } public Model getModel() { return model; } }