merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / BulkEditor.java
index 5048cf7fb8abebe0645afd1b0488653b7427b00d..73bf55b4539c60bd16f84dcfbdb85d191291f4a3 100644 (file)
@@ -10,6 +10,7 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor;
 
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.dialogs.MessageDialogWithToggle;
@@ -43,18 +44,21 @@ import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
-import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
- * <p>BulkEditor class.</p>
+ * <p>
+ * BulkEditor class.
+ * </p>
  *
  * @author p.ciardelli
  * @created 07.07.2009
  * @version 1.0
  */
-public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDetails, IDirtyMarkableSelectionProvider{
+public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDetails, IPartContentHasMedia,
+        IDirtyMarkableSelectionProvider {
 
        /** Constant <code>ID="bulkeditor.editor"</code> */
        public static final String ID = "bulkeditor.editor";
@@ -65,6 +69,8 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
 
        private IPropertyChangeListener markerPreferenceListener;
 
+       private boolean isDirty;
+
        /**
         * <p>Constructor for BulkEditor.</p>
         */
@@ -195,15 +201,15 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
         */
        private void displayWarningDialog() {
                IPreferenceStore prefs = PreferencesUtil.getPreferenceStore();
-               if (!prefs.getBoolean(IPreferenceKeys.HIDE_BULKEDITOR_INFO)) {
+               if (!prefs.getBoolean(PreferencesUtil.HIDE_BULKEDITOR_INFO)) {
                        String msg = "The Bulk Editor allows you to edit objects used to reference other objects, such as names, references, and authors.\n\n" +
                                                        "Any changes you make to an object in the Bulk Editor will be displayed wherever the object is used.\n\n" +
                                                        "For instance, a reference may be displayed with both a name and a descriptive element. If the reference name is changed here, the display of both the name and the descriptive element will be affected.";
                        MessageDialogWithToggle dialog = MessageDialogWithToggle.openOkCancelConfirm
                                                                                                (getSite().getShell(), "Bulk Editor", msg, "Do not show this message again",
-                                                                                                               false, null, IPreferenceKeys.HIDE_BULKEDITOR_INFO);
+                                                                                                               false, null, PreferencesUtil.HIDE_BULKEDITOR_INFO);
                        if (dialog.getReturnCode() == Window.OK) {
-                               prefs.setValue(IPreferenceKeys.HIDE_BULKEDITOR_INFO, dialog.getToggleState());
+                               prefs.setValue(PreferencesUtil.HIDE_BULKEDITOR_INFO, dialog.getToggleState());
                        }
                }
        }
@@ -248,6 +254,33 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
                }
        }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor#isDirty()
+        */
+       @Override
+       public boolean isDirty() {
+           if(isDirty){
+               return isDirty;
+           }
+           else{
+               return super.isDirty();
+           }
+       }
+
+       public void forceDirty(){
+           isDirty = true;
+           firePropertyChange(PROP_DIRTY);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor#doSave(org.eclipse.core.runtime.IProgressMonitor)
+        */
+       @Override
+       public void doSave(IProgressMonitor progressMonitor) {
+           isDirty = false;
+           super.doSave(progressMonitor);
+       }
+
        /** {@inheritDoc} */
        @Override
     public void changed(Object object) {