package org.nightlabs.jfire.scripting.admin.ui.editor; import javax.jdo.FetchPlan; import org.eclipse.ui.IEditorInput; import org.nightlabs.base.ui.entity.editor.EntityEditor; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.base.ui.entity.editor.ActiveEntityEditorPageController; import org.nightlabs.jfire.scripting.Script; import org.nightlabs.jfire.scripting.ScriptParameterSet; import org.nightlabs.jfire.scripting.ScriptRegistryItem; import org.nightlabs.jfire.scripting.dao.ScriptRegistryItemDAO; import org.nightlabs.jfire.scripting.id.ScriptRegistryItemID; import org.nightlabs.progress.ProgressMonitor; /** * * @author vince - vince at guinaree dot com * */ public class ScriptEditorPageController extends ActiveEntityEditorPageController<Script> { public ScriptEditorPageController(EntityEditor editor){ super(editor); } @Override protected IEditorInput createNewInstanceEditorInput() { return new ScriptEditorInput(getScriptID(), true); } @Override protected String[] getEntityFetchGroups() { return new String[]{ FetchPlan.DEFAULT, Script.FETCH_GROUP_NAME, Script.FETCH_GROUP_DESCRIPTION, ScriptRegistryItem.FETCH_GROUP_PARAMETER_SET, ScriptParameterSet.FETCH_GROUP_PARAMETERS}; } @Override protected Script retrieveEntity(ProgressMonitor monitor) { ScriptEditorInput input = (ScriptEditorInput)getEntityEditor().getEditorInput(); ScriptRegistryItem item = ScriptRegistryItemDAO.sharedInstance().getScriptRegistryItem( input.getJDOObjectID(), getEntityFetchGroups(), NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); return (Script)item; } @Override protected Script storeEntity(Script controllerObject, ProgressMonitor monitor) { return (Script) ScriptRegistryItemDAO.sharedInstance().storeRegistryItem( controllerObject, true, getEntityFetchGroups(), getEntityMaxFetchDepth(), monitor ); } protected ScriptRegistryItemID getScriptID() { ScriptEditorInput input = (ScriptEditorInput) getEntityEditor().getEditorInput(); return input.getJDOObjectID(); } public Script getScript() { return getControllerObject(); } @Override public void fireModifyEvent(Object oldObject, Object newObject, boolean resetDirtyState) { super.fireModifyEvent(oldObject, newObject, resetDirtyState); } @Override public void markDirty() { super.markDirty(); if (getEntityEditor().getActivePageInstance() instanceof ScriptEditorContentPage) { ScriptEditorContentPage contentPage = (ScriptEditorContentPage) getEntityEditor().getActivePageInstance(); contentPage.getManagedForm().dirtyStateChanged(); } } @Override public void markUndirty() { super.markUndirty(); if (getEntityEditor().getActivePageInstance() instanceof ScriptEditorContentPage) { ScriptEditorContentPage contentPage = (ScriptEditorContentPage) getEntityEditor().getActivePageInstance(); contentPage.getManagedForm().dirtyStateChanged(); } } }