-// $Id$
/**
* Copyright (C) 2007 EDIT
* European Distributed Institute of Taxonomy
package eu.etaxonomy.taxeditor.editor.key;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.forms.editor.FormEditor;
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
+import eu.etaxonomy.cdm.api.application.ICdmChangeListener;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput;
import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyGraphEditor;
import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyListEditor;
import eu.etaxonomy.taxeditor.model.DataChangeBridge;
* @version 1.0
*/
public class KeyEditor extends FormEditor implements IConversationEnabled,
- IDirtyMarkable, IPartContentHasDetails {
+ IDirtyMarkable, IPartContentHasDetails, ICdmChangeListener {
public static final String ID = "eu.etaxonomy.taxeditor.editor.key";
private KeyEditorDataChangeBehaviour dataChangeBehavior;
+ private PolytomousKeyEditorInput polytomousKeyEditorInput;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite,
+ * org.eclipse.ui.IEditorInput)
+ */
+ @Override
+ public void init(IEditorSite site, IEditorInput input)
+ throws PartInitException {
+ polytomousKeyEditorInput = (PolytomousKeyEditorInput)input;
+ CdmApplicationState.getCurrentDataChangeService().register(this);
+ super.init(site, input);
+ }
+
/*
* (non-Javadoc)
*
monitor.beginTask("Saving Editor", 1);
getConversationHolder().bind();
getConversationHolder().commit(true);
+ polytomousKeyEditorInput.merge();
setDirty(false);
monitor.worked(1);
} finally {
public void setFocus() {
getConversationHolder().commit(true);
getConversationHolder().bind();
+ polytomousKeyEditorInput.bind();
super.setFocus();
}
/*
public void dispose() {
conversation.unregisterForDataStoreChanges(this);
conversation.close();
+ polytomousKeyEditorInput.dispose();
+ CdmApplicationState.getCurrentDataChangeService().unregister(this);
super.dispose();
}
*/
@Override
protected void addPages() {
- AbstractIdentificationEditorInput input = (AbstractIdentificationEditorInput) getEditorInput();
- conversation = input.getConversationHolder();
+ conversation = polytomousKeyEditorInput.getConversationHolder();
conversation.registerForDataStoreChanges(this);
try {
- addPage(0, new PolytomousKeyListEditor(this), input);
+ addPage(0, new PolytomousKeyListEditor(this), polytomousKeyEditorInput);
setPageText(0, "List");
- addPage(1, new PolytomousKeyGraphEditor(this), input);
+ addPage(1, new PolytomousKeyGraphEditor(this), polytomousKeyEditorInput);
setPageText(1, "Graph");
} catch (PartInitException e) {
MessagingUtils.error(getClass(), e);
*
*/
public void setPartName() {
- AbstractIdentificationEditorInput input = (AbstractIdentificationEditorInput) getEditorInput();
- PolytomousKey key = (PolytomousKey) input.getKey();
+ PolytomousKey key = polytomousKeyEditorInput.getKey();
setPartName(key.getTitleCache());
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.application.ICdmChangeListener#onChange(eu.etaxonomy.cdm.api.application.CdmChangeEvent)
+ */
+ @Override
+ public void onChange(CdmChangeEvent event) {
+ editorDirtyStateChanged();
+ IEditorPart activeEditor = getActiveEditor();
+ if (activeEditor instanceof IDirtyMarkable) {
+ for(CdmBase cdmBase : event.getChangedObjects()) {
+ ((IDirtyMarkable) activeEditor).changed(cdmBase);
+ }
+ }
+ }
}