package com.teotigraphix.caustk.application; import org.androidtransfuse.event.EventObserver; import com.teotigraphix.caustic.core.Dispatcher; import com.teotigraphix.caustic.core.IDispatcher; import com.teotigraphix.caustk.controller.ICaustkController; import com.teotigraphix.caustk.project.IProjectManager.OnProjectManagerChange; import com.teotigraphix.caustk.project.IProjectManager.ProjectManagerChangeKind; public class ModelBase { private ICaustkController controller; private IDispatcher dispatcher; public final ICaustkController getController() { return controller; } // protected IDispatcher getDispatcher() { // return controller.getDispatcher(); // } /** * The model's {@link IDispatcher} for local event dispatching. */ public IDispatcher getDispatcher() { return dispatcher; } //-------------------------------------------------------------------------- // Constructor //-------------------------------------------------------------------------- // @Inject public ModelBase(ICaustkApplicationProvider provider) { controller = provider.get().getController(); dispatcher = new Dispatcher(); controller.getDispatcher().register(OnProjectManagerChange.class, new EventObserver<OnProjectManagerChange>() { @Override public void trigger(OnProjectManagerChange object) { if (object.getKind() == ProjectManagerChangeKind.CREATE) { onProjectCreate(); } else if (object.getKind() == ProjectManagerChangeKind.LOAD) { onProjectLoad(); } else if (object.getKind() == ProjectManagerChangeKind.SAVE) { onProjectSave(); } else if (object.getKind() == ProjectManagerChangeKind.SAVE_COMPLETE) { } } }); } public void onRegister() { } protected void onProjectSave() { } protected void onProjectLoad() { } protected void onProjectCreate() { } }