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;
* @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";
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
polytomousKeyEditorInput = (PolytomousKeyEditorInput)input;
+ CdmApplicationState.getCurrentDataChangeService().register(this);
super.init(site, input);
}
conversation.unregisterForDataStoreChanges(this);
conversation.close();
polytomousKeyEditorInput.dispose();
+ CdmApplicationState.getCurrentDataChangeService().unregister(this);
super.dispose();
}
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);
+ }
+ }
+ }
}