.
authorp.ciardelli <p.ciardelli@localhost>
Tue, 27 Oct 2009 16:40:06 +0000 (16:40 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Tue, 27 Oct 2009 16:40:06 +0000 (16:40 +0000)
20 files changed:
.gitattributes
taxeditor-bulkeditor/.settings/org.eclipse.jdt.core.prefs
taxeditor-bulkeditor/META-INF/MANIFEST.MF
taxeditor-bulkeditor/plugin.xml
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineDocumentProvider.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/ILineDisplayStrategy.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorLineDisplay.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorMarkerPreferenceComposite.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSourceViewerConfiguration.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorViewerConfiguration.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorPropertyTester.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/SetMarkerContributionItems.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/RemoveMergeCandidateHandler.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagFalseHandler.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagTrueHandler.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeCandidateHandler.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ToggleMergeCandidateHandler.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInput.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/ReferenceEditorInput.java

index 52fc9c82b34f1f128d6375de463bcf76d2591c94..c365190ca2010f7e621b647a19726fe8f1c95365 100644 (file)
@@ -682,10 +682,11 @@ taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/ha
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorEntityCreatorService.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorLineDisplay.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorMarkerPreferenceComposite.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorPersistenceService.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSearchComposite.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSortMenuProvider.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSourceViewerConfiguration.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorViewerConfiguration.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorConstants.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorQuery.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorSortMenuProvider.java -text
@@ -697,11 +698,15 @@ taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/Bul
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DeleteObjectContributionItem.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DynamicNewObjectMenu.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/SetMarkerContributionItems.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/MergeGroupHandler.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/RemoveMergeCandidateHandler.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagFalseHandler.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagTrueHandler.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeCandidateHandler.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeTargetHandler.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ShowReferencingObjectsHandler.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ToggleMergeCandidateHandler.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInput.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java -text
index ec2cdbc3d9ec84eebe008daf1f90f549b9d0f8ce..2276516ea5babd9bd4b44ce34c55d18d73a0bd44 100644 (file)
@@ -1,8 +1,8 @@
-#Fri Oct 16 18:08:11 CEST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+#Mon Oct 19 17:20:23 CEST 2009\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
+org.eclipse.jdt.core.compiler.compliance=1.5\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.5\r
index 15911d3b9c78e2c2f9547483d4ffa9f338315472..c9c52fddf740b79018b7f50d20cd24ae8620eea7 100644 (file)
@@ -6,14 +6,7 @@ Bundle-Version: 2.1.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
 Bundle-Vendor: EDIT
-Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,
- eu.etaxonomy.taxeditor.annotatedlineeditor.handler,
- eu.etaxonomy.taxeditor.bulkeditor,
- eu.etaxonomy.taxeditor.bulkeditor.command,
- eu.etaxonomy.taxeditor.bulkeditor.handler,
- eu.etaxonomy.taxeditor.bulkeditor.input,
- eu.etaxonomy.taxeditor.bulkeditor.internal,
- eu.etaxonomy.taxeditor.bulkeditor.referencingobjects
+Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,eu.etaxonomy.taxeditor.annotatedlineeditor.handler,eu.etaxonomy.taxeditor.bulkeditor,eu.etaxonomy.taxeditor.bulkeditor.command,eu.etaxonomy.taxeditor.bulkeditor.handler,eu.etaxonomy.taxeditor.bulkeditor.input,eu.etaxonomy.taxeditor.bulkeditor.internal,eu.etaxonomy.taxeditor.bulkeditor.referencingobjects
 Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,org.eclipse.jface.text;bundle-version="3.4.2",org.eclipse.ui.editors,org.eclipse.ui.ide,org.eclipse.core.resources;bundle-version="3.4.2",eu.etaxonomy.cdmlib;bundle-version="2.1.0",eu.etaxonomy.taxeditor.editor;bundle-version="2.0.0",eu.etaxonomy.taxeditor.store;bundle-version="2.0.0",org.eclipse.core.expressions
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
index 6dec69d0c8555d41cc0f6d57080c41e1059dcc1b..6b9b7a04524d74f2775863e2d1082b7e2a0cb96e 100644 (file)
          </command>\r
          <command\r
                commandId="bulkeditor.commands.setmergecandidate"\r
-               label="Toggle Current Line as Candidate for Duplicate Removal"\r
+               label="Set as Candidate(s) for Duplicate Removal"\r
+               style="push">\r
+            <visibleWhen>\r
+               <reference\r
+                     definitionId="isMergeEnabled">\r
+               </reference>\r
+            </visibleWhen>\r
+         </command>\r
+         <command\r
+               commandId="bulkeditor.commands.removemergecandidate"\r
+               label="Remove as Candidate(s) for Duplicate Removal"\r
                style="push">\r
             <visibleWhen>\r
                <reference\r
             name="Dynamic Delete Object">\r
       </command>\r
       <command\r
-            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.ToggleMergeCandidateHandler"\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.SetMergeCandidateHandler"\r
             id="bulkeditor.commands.setmergecandidate"\r
-            name="Toggle as Candidate for Group Merge">\r
+            name="Set as Candidate for Group Merge">\r
+      </command>\r
+      <command\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.RemoveMergeCandidateHandler"\r
+            id="bulkeditor.commands.removemergecandidate"\r
+            name="Remove as Candidate for Group Merge">\r
       </command>\r
    </extension>\r
    <extension\r
             properties="isMergingEnabled"\r
             type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">\r
       </propertyTester>\r
-   </extension>   \r
-   <!-- NAME EDITOR STUFF ONLY BELOW THIS POINT -->\r
-   <!--extension\r
+   </extension>\r
+   <extension\r
          point="org.eclipse.ui.menus">\r
-               <menuContribution\r
-            locationURI="menu:eu.etaxonomy.taxeditor.menu.showView">\r
-         <command\r
-               commandId="eu.etaxonomy.taxeditor.editor.command.showProblemsView"\r
-               label="Problems View"\r
-               style="push">\r
-         </command>\r
-         <command\r
-               commandId="eu.etaxonomy.taxeditor.editor.commands.showNameRelationsView"\r
-               label="Name Relations"\r
-               style="push">\r
-         </command>    \r
-      </menuContribution>\r
-          <menuContribution\r
-                locationURI="popup:#TaxonNameEditorContext">\r
-         <command\r
-               commandId="taxeditor-nameditor.command.changeToMisapplication"\r
-               label="Change to Misapplication"\r
-               style="push">\r
-         </command>\r
+      <menuContribution\r
+            locationURI="popup:#BulkEditorContext?after=taxeditor-bulkeditor.separator2">\r
+         <dynamic\r
+               class="eu.etaxonomy.taxeditor.bulkeditor.command.SetMarkerContributionItems"\r
+               id="taxeditor-bulkeditor.dynamic1">\r
+         </dynamic>\r
       </menuContribution>\r
-    <menuContribution\r
-          locationURI="popup:eu.etaxonomy.taxeditor.navigation.navigatorpopup">\r
-       <command\r
-             commandId="taxeditor-nameeditor.commands.opentaxon"\r
-             label="Open Taxon"\r
-             style="push">\r
-       </command>\r
-    </menuContribution>\r
    </extension>\r
    <extension\r
          point="org.eclipse.ui.commands">\r
       <command\r
-            defaultHandler="eu.etaxonomy.taxeditor.nameditor.ShowProblemsHandler"\r
-            id="eu.etaxonomy.taxeditor.editor.command.showProblemsView"\r
-            name="Show Problems View">\r
-      </command>\r
-      <command\r
-            defaultHandler="eu.etaxonomy.taxeditor.nameditor.ChangeToMisapplicationHandler"\r
-            id="taxeditor-nameditor.command.changeToMisapplication"\r
-            name="Change to Misapplication">\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.SetMarkerFlagTrueHandler"\r
+            id="taxeditor-bulkeditor.command.setMarkerFlagTrue"\r
+            name="Set Marker Flag True">\r
       </command>\r
       <command\r
-            defaultHandler="eu.etaxonomy.taxeditor.nameditor.OpenTaxonNameEditorHandler"\r
-            id="taxeditor-nameeditor.commands.opentaxon"\r
-            name="Open Taxon Name Editor">\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.SetMarkerFlagFalseHandler"\r
+            id="taxeditor-bulkeditor.command.setMarkerFlagFalse"\r
+            name="Set Marker Flag False">\r
       </command>\r
-      <command\r
-            defaultHandler="eu.etaxonomy.taxeditor.nameditor.OpenNameEditorHandler"\r
-            id="taxeditor-nameeditor.commands.open"\r
-            name="Open Name Editor">\r
-      </command>\r
-   </extension>\r
-   <extension\r
-         point="org.eclipse.ui.ide.markerResolution">\r
-      <markerResolutionGenerator\r
-            class="eu.etaxonomy.taxeditor.nameditor.MarkerResolutionGenerator"\r
-            markerType="org.eclipse.core.resources.problemmarker">\r
-      </markerResolutionGenerator>\r
-   </extension>\r
-         <extension\r
-         point="org.eclipse.ui.perspectiveExtensions">\r
-      <perspectiveExtension\r
-            targetID="eu.etaxonomy.taxeditor.application.perspective">\r
-         <view\r
-               closeable="true"\r
-               id="org.eclipse.ui.views.ContentOutline"\r
-               minimized="false"\r
-               moveable="true"\r
-               ratio="0.7"\r
-               relationship="right"\r
-               relative="org.eclipse.ui.editorss"\r
-               showTitle="false"\r
-               visible="true">\r
-         </view>\r
-      </perspectiveExtension>\r
-   </extension-->
+   </extension>   \r
+<!-- start set marker -->\r
+
 </plugin>\r
index f853dbd6b419403105aa2db5c625498ec3ce1ad6..f08a8bf7e473e1a0d33b15bd3071165b6b2d0fa1 100644 (file)
@@ -187,6 +187,26 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                                \r
                return annotation;\r
        }\r
+       \r
+       public void updateLineFromAnnotation(Object element, LineAnnotation annotation, String text) {\r
+               IAnnotationModel model = getAnnotationModel(element);\r
+               IDocument document = getDocument(element);\r
+               try {\r
+                       if (model.getPosition(annotation) == null) {\r
+                               return;\r
+                       }\r
+                       int offset = model.getPosition(annotation).getOffset();                 \r
+                       int line = document.getLineOfOffset(offset);\r
+                       int lineLength = document.getLineLength(document.getLineOfOffset(offset));\r
+                       if (document.getLineDelimiter(line) != null) {\r
+                               lineLength -= document.getLineDelimiter(line).length();\r
+                       }\r
+                       document.replace(offset, lineLength, text);\r
+               } catch (BadLocationException e) {\r
+                       // TODO Auto-generated catch block\r
+                       e.printStackTrace();\r
+               }\r
+       }\r
 \r
        class EntityListenerImpl extends EntityListener {\r
 \r
@@ -207,31 +227,15 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                        \r
                        annotation.setDirty(true);\r
                        \r
-                       IAnnotationModel model = getAnnotationModel(element);\r
-                       IDocument document = getDocument(element);\r
-                       \r
                        Object entity = annotation.getEntity();\r
                        String text;\r
                        if (lineDisplay.isEntityCacheEmpty(entity)) {\r
                                text = lineDisplay.getEmptyCacheMessage(entity);\r
                        } else {\r
                                text = lineDisplay.getText(entity);\r
-                       } \r
-                       try {\r
-                               if (model.getPosition(annotation) == null) {\r
-                                       return;\r
-                               }\r
-                               int offset = model.getPosition(annotation).getOffset();                 \r
-                               int line = document.getLineOfOffset(offset);\r
-                               int lineLength = document.getLineLength(document.getLineOfOffset(offset));\r
-                               if (document.getLineDelimiter(line) != null) {\r
-                                       lineLength -= document.getLineDelimiter(line).length();\r
-                               }\r
-                               document.replace(offset, lineLength, text);\r
-                       } catch (BadLocationException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
                        }\r
+\r
+                       updateLineFromAnnotation(element, annotation, text);\r
                }\r
        }\r
        \r
index 4bae713c9e671af08c3cef66111c9a156b097fec..ffdc0488e8606b43b9875b4a6ddfb70c578bfb2e 100644 (file)
@@ -10,6 +10,7 @@
 \r
 package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
 \r
+import org.eclipse.swt.custom.StyleRange;\r
 import org.eclipse.swt.graphics.Font;\r
 import org.eclipse.swt.graphics.Image;\r
 \r
@@ -37,6 +38,8 @@ public interface ILineDisplayStrategy {
         */\r
        String getText(Object entity);\r
        \r
+       StyleRange[] getTextStyleRanges(Object entity);\r
+       \r
        String getEmptyCacheMessage(Object entity);\r
        \r
        void setText(String text, Object entity);\r
index 973ab0982d87982b1b6119262ab0ef47f5436121..88851325fe9e15468f321da8652263bc6e82ef56 100644 (file)
@@ -12,6 +12,7 @@ package eu.etaxonomy.taxeditor.bulkeditor;
 \r
 import java.beans.PropertyChangeEvent;\r
 import java.beans.PropertyChangeListener;\r
+import java.util.Iterator;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.eclipse.jface.action.IMenuManager;\r
@@ -23,8 +24,10 @@ import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.text.IDocument;\r
 import org.eclipse.jface.text.source.Annotation;\r
 import org.eclipse.jface.text.source.AnnotationModel;\r
+import org.eclipse.jface.text.source.IAnnotationModel;\r
 import org.eclipse.jface.text.source.ISourceViewer;\r
 import org.eclipse.jface.text.source.IVerticalRuler;\r
+import org.eclipse.jface.util.IPropertyChangeListener;\r
 import org.eclipse.jface.window.Window;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.custom.StyledText;\r
@@ -37,17 +40,21 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IEditorSite;\r
 import org.eclipse.ui.PartInitException;\r
+import org.eclipse.ui.texteditor.IDocumentProvider;\r
 import org.eclipse.ui.views.properties.IPropertySheetEntry;\r
 import org.eclipse.ui.views.properties.IPropertySheetPage;\r
 import org.eclipse.ui.views.properties.PropertySheetPage;\r
 import org.eclipse.ui.views.properties.PropertySheetSorter;\r
 \r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineDocumentProvider;\r
 import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;\r
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
 import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -66,7 +73,15 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
         */\r
        public BulkEditor() {\r
                super(CdmStore.NewTransactionalConversation());\r
-               \r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.editors.text.TextEditor#initializeEditor()\r
+        */\r
+       @Override\r
+       protected void initializeEditor() {\r
+               super.initializeEditor();\r
+                               \r
                /**\r
                 * see AbstractTextEditor javadoc for explanation of context menu ids\r
                 */\r
@@ -77,8 +92,10 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
                setPersistenceService(new BulkEditorPersistenceService());\r
                \r
                setLineDisplayStrategy(new BulkEditorLineDisplay(this));\r
+               \r
+               setSourceViewerConfiguration(new BulkEditorViewerConfiguration(lineDisplayStrategy));\r
        }\r
-\r
+       \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.taxeditor.bulkeditor.ListEditor#createSourceViewer(org.eclipse.swt.widgets.Composite, org.eclipse.jface.text.source.IVerticalRuler, int)\r
         */\r
@@ -118,17 +135,71 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
                \r
                BulkEditorSearchComposite searchBar = new BulkEditorSearchComposite(this, parent, SWT.NONE);\r
                searchBar.getParent().setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));\r
+\r
+               if (isEditableMarkerTypes()) {\r
+                       createMarkerEditing(parent);\r
+               }\r
                \r
                super.createPartControl(parent);\r
                \r
                // Set viewer composite to fill grid\r
                for (Control control : parent.getChildren()) {\r
-                       if (control instanceof Composite && !(control instanceof BulkEditorSearchComposite)) {\r
+                       if (control instanceof Composite && \r
+                                               !(control instanceof BulkEditorSearchComposite || control instanceof BulkEditorMarkerPreferenceComposite)) {\r
                                control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
                        }\r
                }\r
        }\r
        \r
+       /**\r
+        * @param parent \r
+        * \r
+        */\r
+       private void createMarkerEditing(Composite parent) {\r
+               final BulkEditorMarkerPreferenceComposite markerPreferenceBar = \r
+                               new BulkEditorMarkerPreferenceComposite((BulkEditorInput) getEditorInput(), parent, SWT.NONE);\r
+               PreferencesUtil.getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {\r
+                       public void propertyChange(\r
+                                       org.eclipse.jface.util.PropertyChangeEvent event) {\r
+                               if (event.getProperty().contains(PreferencesUtil.EDIT_MARKER_TYPE_PREFIX)) {\r
+                                       refreshLineDisplay();\r
+                               }\r
+                       }\r
+               });\r
+       }\r
+       \r
+       /**\r
+        * Can this input type edit any markers?\r
+        * \r
+        * @return\r
+        */\r
+       private boolean isEditableMarkerTypes() { \r
+               for (MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
+                       if (((BulkEditorInput) getEditorInput()).isMarkerTypeEditingEnabled(markerType)) {\r
+                               return true;\r
+                       }\r
+               }\r
+               return false;\r
+       }\r
+\r
+       /**\r
+        * Refreshes text in all lines.\r
+        */\r
+       protected void refreshLineDisplay() {\r
+               IDocumentProvider provider = getDocumentProvider();\r
+               IEditorInput input = getEditorInput();\r
+               IAnnotationModel model = provider.getAnnotationModel(input);\r
+               Iterator iter = getDocumentProvider().getAnnotationModel(getEditorInput()).getAnnotationIterator();\r
+               while (iter.hasNext()) {\r
+                       Object next = iter.next();\r
+                       if (next instanceof LineAnnotation) {\r
+                               LineAnnotation annotation = (LineAnnotation) next;\r
+                               ((AnnotatedLineDocumentProvider) getDocumentProvider()).\r
+                                               updateLineFromAnnotation(getEditorInput(), annotation, lineDisplayStrategy.getText(annotation.getEntity()));\r
+                       }\r
+               }\r
+       }\r
+\r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#isEditable()\r
         */\r
@@ -188,11 +259,6 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
         * @param line\r
         */\r
        public void toggleMergeCandidateAnnotation(int line) {\r
-               // TODO merge this with duplicate code in SetMergeCandidateHandler\r
-               \r
-               // Set line as selection\r
-               \r
-               // call handler w handler service\r
                \r
                IDocument document = getSourceViewer().getDocument();\r
                LineAnnotationModel model = \r
index eb4a263de2a9182fbdbf532210ff9ee2a4ad6454..fd93ed2b3b01959ea26b4e088889f937f477984c 100644 (file)
@@ -12,6 +12,10 @@ package eu.etaxonomy.taxeditor.bulkeditor;
 \r
 import org.apache.log4j.Logger;\r
 import org.eclipse.jface.action.IStatusLineManager;\r
+import org.eclipse.jface.text.TextPresentation;\r
+import org.eclipse.jface.text.source.DefaultAnnotationHover;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.StyleRange;\r
 import org.eclipse.swt.graphics.Font;\r
 import org.eclipse.swt.graphics.Image;\r
 import org.eclipse.swt.widgets.Display;\r
@@ -22,11 +26,13 @@ import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Institution;\r
 import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
 import eu.etaxonomy.taxeditor.annotatedlineeditor.EntityListener;\r
 import eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy;\r
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 import eu.etaxonomy.taxeditor.propertysheet.authors.AuthorTeamPropertySource;\r
 import eu.etaxonomy.taxeditor.propertysheet.authors.PersonPropertySource;\r
 import eu.etaxonomy.taxeditor.propertysheet.name.NonViralNamePropertySource;\r
@@ -102,6 +108,20 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
 //                     if (date != null) {\r
 //                             text += " [" + date + "]";\r
 //                     }\r
+                       String markerText = null;\r
+                       for (Marker marker : reference.getMarkers()) {\r
+                               if (PreferencesUtil.getEditMarkerTypePreference(editor.getEditorInput(), marker.getMarkerType())) {\r
+                                       if (markerText == null) {\r
+                                               markerText = " [";\r
+                                       } else {\r
+                                               markerText += ", ";\r
+                                       }\r
+                                       markerText += marker.getMarkerType().getLabel() + " = " + marker.getFlag();\r
+                               }\r
+                       }\r
+                       if (markerText != null) {\r
+                               text += markerText + "]";\r
+                       }\r
                        return text;\r
                }\r
                if (entity instanceof TaxonNameBase) {\r
@@ -123,6 +143,28 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
                }\r
                return "";\r
        }\r
+       \r
+\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#addStyleRanges(java.lang.Object, org.eclipse.jface.text.TextPresentation)\r
+        */\r
+       public StyleRange[] getTextStyleRanges(Object entity) {\r
+               if (isEntityCacheEmpty(entity)) {\r
+                       return new StyleRange[] { new StyleRange(0, getEmptyCacheMessage(entity).length(), \r
+                                                                               Display.getCurrent().getSystemColor(SWT.COLOR_GRAY), null) };\r
+               }\r
+               if (entity instanceof ReferenceBase) {\r
+                       ReferenceBase reference = (ReferenceBase) HibernateProxyHelper.deproxy(entity);\r
+                       return new StyleRange[] { new StyleRange(reference.getTitleCache().length(), getText(entity).length(), \r
+                                                                                       Display.getCurrent().getSystemColor(SWT.COLOR_GRAY), null)};\r
+               }\r
+               if (entity instanceof AgentBase) {\r
+                       return new StyleRange[] { new StyleRange(((AgentBase) entity).getTitleCache().length(), getText(entity).length(), \r
+                                                                               Display.getCurrent().getSystemColor(SWT.COLOR_GRAY), null)};\r
+               }\r
+               return new StyleRange[0];\r
+       }\r
 \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#setText(java.lang.String, java.lang.Object)\r
@@ -199,16 +241,26 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#addDisplayListener(java.lang.Object)\r
         */\r
        public void addDisplayListener(Object entity, EntityListener listener) {\r
-               if (entity instanceof ReferenceBase) {\r
-//                     ((ReferenceBase) entity).addPropertyChangeListener("titleCache", listener);\r
-                       ((ReferenceBase) entity).addPropertyChangeListener(listener);\r
-               }\r
+               /* Note: all non-field specific listeners require that corresponding property sheets \r
+                * contain the following:\r
+                * \r
+                * \r
+                *              public void setPropertyValue(Object id, Object value) {\r
+                *              ...\r
+                *                      reference.firePropertyChange(new PropertyChangeEvent(reference, "", null, null));\r
+                *              }\r
+                * \r
+                */\r
                if (entity instanceof TaxonNameBase) {\r
-                       ((TaxonNameBase) entity).addPropertyChangeListener("titleCache", listener);\r
+                       ((TaxonNameBase) entity).addPropertyChangeListener(listener);\r
                }\r
                if (entity instanceof AgentBase) {\r
                        ((AgentBase) entity).addPropertyChangeListener(listener);\r
                }\r
+               if (entity instanceof ReferenceBase) {\r
+//                     ((ReferenceBase) entity).addPropertyChangeListener("titleCache", listener);\r
+                       ((ReferenceBase) entity).addPropertyChangeListener(listener);\r
+               }\r
        }\r
 \r
        /* (non-Javadoc)\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorMarkerPreferenceComposite.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorMarkerPreferenceComposite.java
new file mode 100644 (file)
index 0000000..9e5995f
--- /dev/null
@@ -0,0 +1,87 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Composite;\r
+\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 17.08.2009\r
+ * @version 1.0\r
+ */\r
+public class BulkEditorMarkerPreferenceComposite extends Composite {\r
+       private static final Logger logger = Logger.getLogger(BulkEditorMarkerPreferenceComposite.class);\r
+       \r
+       private BulkEditorInput editorInput;\r
+       \r
+       Map<Button, MarkerType> markerTypeButtons = new HashMap<Button, MarkerType>();\r
+               \r
+       /**\r
+        * @param parent\r
+        * @param style\r
+        */\r
+       public BulkEditorMarkerPreferenceComposite(BulkEditorInput editorInput, Composite parent, int style) {\r
+               super(parent, style);\r
+               this.editorInput = editorInput;\r
+               createControl();\r
+       }\r
+\r
+       /**\r
+        * @param markerType \r
+        * @return \r
+        * \r
+        */\r
+       private boolean getEditMarkerPreference(MarkerType markerType) {\r
+               return PreferencesUtil.getEditMarkerTypePreference(editorInput, markerType);\r
+       }\r
+\r
+       private void setEditMarkerPreference(MarkerType markerType, boolean edit) {\r
+               PreferencesUtil.setEditMarkerTypePreference(editorInput, markerType, edit);\r
+       }\r
+               \r
+       protected void createControl() {\r
+               \r
+               GridLayout gridLayout = new GridLayout();\r
+               gridLayout.numColumns = 3;\r
+               gridLayout.marginHeight = 0;\r
+               gridLayout.marginWidth = 12;\r
+               setLayout(gridLayout);\r
+               \r
+               for (final MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
+                       if (editorInput.isMarkerTypeEditingEnabled(markerType)) {\r
+                               final Button button = new Button(this, SWT.CHECK);\r
+                               button.setText("Edit " + markerType.getLabel() + " markers");\r
+                               button.addSelectionListener(new SelectionAdapter() {\r
+                                       public void widgetSelected(SelectionEvent e) {\r
+                                               setEditMarkerPreference(markerType, button.getSelection());\r
+                                       }\r
+                               });\r
+                               button.setSelection(getEditMarkerPreference(markerType));\r
+                               \r
+                               markerTypeButtons.put(button, markerType);\r
+                       }\r
+               }\r
+       }\r
+}
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSourceViewerConfiguration.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSourceViewerConfiguration.java
deleted file mode 100644 (file)
index 1dc3404..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// $Id$\r
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-package eu.etaxonomy.taxeditor.bulkeditor;\r
-\r
-import org.eclipse.jface.text.reconciler.IReconciler;\r
-import org.eclipse.jface.text.source.ISourceViewer;\r
-\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditorSourceViewerConfiguration;\r
-\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- */\r
-public class BulkEditorSourceViewerConfiguration extends\r
-               AnnotatedLineEditorSourceViewerConfiguration {\r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditorSourceViewerConfiguration#getReconciler(org.eclipse.jface.text.source.ISourceViewer)\r
-        */\r
-       public IReconciler getReconciler(ISourceViewer sourceViewer) {\r
-               return null;\r
-       }\r
-}
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorViewerConfiguration.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorViewerConfiguration.java
new file mode 100644 (file)
index 0000000..7a11c33
--- /dev/null
@@ -0,0 +1,83 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.bulkeditor;\r
+\r
+import java.util.Iterator;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.text.IDocument;\r
+import org.eclipse.jface.text.IRegion;\r
+import org.eclipse.jface.text.TextPresentation;\r
+import org.eclipse.jface.text.presentation.IPresentationReconciler;\r
+import org.eclipse.jface.text.presentation.PresentationReconciler;\r
+import org.eclipse.jface.text.source.ISourceViewer;\r
+import org.eclipse.jface.text.source.SourceViewerConfiguration;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.StyleRange;\r
+\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
+\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 25.06.2009\r
+ * @version 1.0\r
+ */\r
+public class BulkEditorViewerConfiguration extends SourceViewerConfiguration {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(BulkEditorViewerConfiguration.class);\r
+       \r
+       private ILineDisplayStrategy lineDisplayStrategy;\r
+\r
+       /**\r
+        * @param lineDisplayStrategy\r
+        */\r
+       public BulkEditorViewerConfiguration(\r
+                       ILineDisplayStrategy lineDisplayStrategy) {\r
+               this.lineDisplayStrategy = lineDisplayStrategy;\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getPresentationReconciler(org.eclipse.jface.text.source.ISourceViewer)\r
+        */\r
+       @Override\r
+       public IPresentationReconciler getPresentationReconciler(\r
+                       final ISourceViewer sourceViewer) {\r
+               return new PresentationReconciler() {\r
+                       /* (non-Javadoc)\r
+                        * @see org.eclipse.jface.text.presentation.PresentationReconciler#createPresentation(org.eclipse.jface.text.IRegion, org.eclipse.jface.text.IDocument)\r
+                        */\r
+                       @Override\r
+                       protected TextPresentation createPresentation(IRegion damage,\r
+                                       IDocument document) {\r
+                               \r
+                               TextPresentation presentation = super.createPresentation(damage, document);\r
+                               LineAnnotationModel model = (LineAnnotationModel) sourceViewer.getAnnotationModel();\r
+                               \r
+                               // Update all annotated lines in the damage zone\r
+                               Iterator iter = model.getAnnotationIterator(damage.getOffset(), damage.getLength() + 1, true, true);\r
+                               while (iter.hasNext()) {\r
+                                       Object next = iter.next();\r
+                                       if (next instanceof LineAnnotation) {\r
+                                               for (StyleRange styleRange : lineDisplayStrategy.getTextStyleRanges(((LineAnnotation) next).getEntity())) {\r
+                                                       styleRange.start += model.getPosition((LineAnnotation) next).getOffset();\r
+                                                       presentation.addStyleRange(styleRange);\r
+                                               }\r
+                                       }\r
+                               }\r
+                               \r
+                               return presentation;\r
+                       }\r
+               };\r
+       }\r
+       \r
+}
\ No newline at end of file
index b4c2f482fb01e78be705ab95f464d19d976a5861..c4914feb6f30410d8e319aaf164402caed169409 100644 (file)
@@ -15,7 +15,7 @@ import org.eclipse.core.expressions.PropertyTester;
 import org.eclipse.ui.IEditorInput;\r
 \r
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.NameEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -34,12 +34,16 @@ public class BulkEditorPropertyTester extends PropertyTester {
                BulkEditor bulkEditor = (BulkEditor) receiver;\r
                if ("isMergingEnabled".equals(property)) {                      \r
                        IEditorInput input = bulkEditor.getEditorInput();\r
-                       if (input instanceof NameEditorInput) {\r
-                               return false;\r
-                       } else {\r
-                               return true;\r
-                       } \r
+                       if (input instanceof BulkEditorInput) {\r
+                               return ((BulkEditorInput) input).isMergingEnabled();\r
+                       }\r
                }\r
+//             if (("isPublishFlagEditingEnabled").equals(property)) {\r
+//                     IEditorInput input = bulkEditor.getEditorInput();\r
+//                     if (input instanceof NameEditorInput) {\r
+//                             return ((NameEditorInput) input).isPublishFlagEnabled();\r
+//                     }\r
+//             }\r
                return false;\r
        }\r
-}\r
+}
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/SetMarkerContributionItems.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/SetMarkerContributionItems.java
new file mode 100644 (file)
index 0000000..a64de70
--- /dev/null
@@ -0,0 +1,107 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.command;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.action.ContributionItem;\r
+import org.eclipse.jface.action.IContributionItem;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.swt.widgets.Menu;\r
+import org.eclipse.swt.widgets.MenuItem;\r
+import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.actions.CompoundContributionItem;\r
+import org.eclipse.ui.handlers.IHandlerService;\r
+\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 20.10.2009\r
+ * @version 1.0\r
+ */\r
+public class SetMarkerContributionItems extends CompoundContributionItem {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(SetMarkerContributionItems.class);\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()\r
+        */\r
+       @Override\r
+       protected IContributionItem[] getContributionItems() {\r
+                       \r
+               List<IContributionItem> contributions = new ArrayList<IContributionItem>();\r
+               \r
+               IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();\r
+               if (editor.getEditorInput() instanceof BulkEditorInput) {\r
+                       BulkEditorInput input = (BulkEditorInput) editor.getEditorInput();              \r
+                       for (final MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
+                               if (input.isMarkerTypeEditingEnabled(markerType) && PreferencesUtil.getEditMarkerTypePreference(input, markerType)) {\r
+                                       contributions.add(new ContributionItem() {\r
+                                               /* (non-Javadoc)\r
+                                                * @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.Menu, int)\r
+                                                */\r
+                                               @Override\r
+                                               public void fill(Menu menu, int index) {\r
+                                                       MenuItem subMenuItem = new MenuItem(menu, SWT.CASCADE, index);\r
+                                                       subMenuItem.setText("Set Flag - \"" + markerType.getLabel() + "\"");\r
+                                                       Menu subMenu = new Menu(menu.getShell(), SWT.DROP_DOWN);\r
+                                                       subMenuItem.setMenu(subMenu);\r
+                                                       \r
+                                                       MenuItem trueItem = new MenuItem(subMenu, SWT.PUSH);\r
+                                                       trueItem.setText("true");\r
+                                                       trueItem.addSelectionListener(new SelectionAdapter() {\r
+                                                               public void widgetSelected(SelectionEvent e) {\r
+                                                                       doSetFlagCommand(markerType, true);\r
+                                                               }       \r
+                                                       });\r
+                                                       \r
+                                                       MenuItem falseItem = new MenuItem(subMenu, SWT.PUSH);\r
+                                                       falseItem.setText("false");\r
+                                                       falseItem.addSelectionListener(new SelectionAdapter() {\r
+                                                               public void widgetSelected(SelectionEvent e) {\r
+                                                                       doSetFlagCommand(markerType, false);\r
+                                                               }                                               \r
+                                                       });\r
+                                               }\r
+                                       });\r
+                               }\r
+                       }\r
+               }\r
+               return (IContributionItem[]) contributions.toArray(new IContributionItem[contributions.size()]);\r
+       }\r
+\r
+       private void doSetFlagCommand(MarkerType markerType, boolean flag) {\r
+               try {\r
+                       IHandlerService handlerService = \r
+                               (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);\r
+                       Event event = new Event();\r
+                       event.data = markerType;\r
+                       if (flag) {\r
+                               handlerService.executeCommand("taxeditor-bulkeditor.command.setMarkerFlagTrue", event);\r
+                       } else {\r
+                               handlerService.executeCommand("taxeditor-bulkeditor.command.setMarkerFlagFalse", event);\r
+                       }\r
+               } catch (Exception e) {\r
+                       // TODO Auto-generated catch block\r
+                       e.printStackTrace();\r
+               }\r
+       }                                       \r
+}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/RemoveMergeCandidateHandler.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/RemoveMergeCandidateHandler.java
new file mode 100644 (file)
index 0000000..890e479
--- /dev/null
@@ -0,0 +1,88 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.bulkeditor.handler;\r
+\r
+import java.util.Iterator;\r
+\r
+import org.eclipse.core.commands.AbstractHandler;\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 25.06.2009\r
+ * @version 1.0\r
+ */\r
+public class RemoveMergeCandidateHandler extends AbstractHandler {\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
+        */\r
+       public Object execute(ExecutionEvent event) throws ExecutionException {\r
+                               \r
+               if (HandlerUtil.getCurrentSelection(event) instanceof LineSelection \r
+                               && HandlerUtil.getActiveEditor(event) instanceof BulkEditor) {\r
+                       LineSelection selection = (LineSelection) HandlerUtil.getCurrentSelection(event);\r
+                       BulkEditor editor = (BulkEditor) HandlerUtil.getActiveEditor(event);\r
+                       \r
+                       LineAnnotationModel model = (LineAnnotationModel) editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());\r
+                       if (model != null) {\r
+                               Iterator iter = model.getAnnotationIterator(selection.getOffset(), selection.getLength(), true, true);\r
+                               while (iter.hasNext()) {\r
+                                       Object next = iter.next();\r
+                                       if (next instanceof LineAnnotation) {\r
+                                               model.changeAnnotationType(\r
+                                                               (LineAnnotation) next, LineAnnotation.TYPE_GENERIC);\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               \r
+//             \r
+//             \r
+//             \r
+//             IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
+//             IEditorInput input = editor.getEditorInput();\r
+//             \r
+//             if (editor instanceof BulkEditor && input instanceof BulkEditorInput) {\r
+//                     \r
+//                     IDocumentProvider provider = ((AnnotatedLineEditor) editor).getDocumentProvider();\r
+//                     LineAnnotationModel model = \r
+//                                     (LineAnnotationModel) provider.getAnnotationModel(input);\r
+//                     IDocument document = provider.getDocument(input);\r
+//                     \r
+//                     ISelection selection = HandlerUtil.getActiveMenuSelection(event);\r
+//                     if (selection instanceof TextSelection) {\r
+//                             Annotation annotation = null;\r
+//                             \r
+//                             // Get annotation in current line\r
+//                             int line = ((TextSelection) selection).getStartLine();\r
+//                             annotation = model.getAnnotationAtLine(line, document);\r
+//                             \r
+//                             if (annotation != null) {\r
+//                                     if (annotation.getType().equals(IBulkEditorConstants.TYPE_MERGE_CANDIDATE)) {\r
+//                                             model.changeAnnotationType(\r
+//                                                             annotation, LineAnnotation.TYPE_GENERIC);\r
+//                                     } else {\r
+//                                             model.changeAnnotationType(\r
+//                                                             annotation, IBulkEditorConstants.TYPE_MERGE_CANDIDATE);\r
+//                                     }\r
+//                             }\r
+//                     }\r
+//             }               \r
+               return null;\r
+       }\r
+}
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagFalseHandler.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagFalseHandler.java
new file mode 100644 (file)
index 0000000..63b44de
--- /dev/null
@@ -0,0 +1,86 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.handler;\r
+\r
+import java.beans.PropertyChangeEvent;\r
+import java.util.Iterator;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.AbstractHandler;\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 20.10.2009\r
+ * @version 1.0\r
+ */\r
+public class SetMarkerFlagFalseHandler extends AbstractHandler {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(SetMarkerFlagFalseHandler.class);\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
+        */\r
+       public Object execute(ExecutionEvent event) throws ExecutionException {\r
+               \r
+               // TODO merge this w SetMarkerFlagTrueHandler\r
+               \r
+               Object data = ((Event) event.getTrigger()).data;\r
+               \r
+               if (HandlerUtil.getCurrentSelection(event) instanceof LineSelection \r
+                                       && HandlerUtil.getActiveEditor(event) instanceof BulkEditor && data instanceof MarkerType) {\r
+                       LineSelection selection = (LineSelection) HandlerUtil.getCurrentSelection(event);\r
+                       BulkEditor editor = (BulkEditor) HandlerUtil.getActiveEditor(event);\r
+                       \r
+                       LineAnnotationModel model = (LineAnnotationModel) editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());\r
+                       if (model != null) {\r
+                               Iterator iter = model.getAnnotationIterator(selection.getOffset(), selection.getLength(), true, true);\r
+                               while (iter.hasNext()) {\r
+                                       Object next = iter.next();\r
+                                       if (next instanceof LineAnnotation) {\r
+                                               Object entity = ((LineAnnotation) next).getEntity();\r
+                                               createOrUpdateMarker((AnnotatableEntity) entity, (MarkerType) data, false);\r
+                                               ((CdmBase) entity).firePropertyChange(new PropertyChangeEvent(entity, "", null, null));\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               return null;\r
+       }\r
+\r
+       /**\r
+        * @param entity\r
+        * @param publish\r
+        * @param flag\r
+        */\r
+       private void createOrUpdateMarker(AnnotatableEntity entity,\r
+                       MarkerType markerType, boolean flag) {\r
+               for (Marker marker : entity.getMarkers()) {\r
+                       if (markerType.equals(marker.getMarkerType())) {\r
+                               marker.setFlag(flag);\r
+                               return;\r
+                       }\r
+               }\r
+               entity.addMarker(Marker.NewInstance(markerType, flag));\r
+       }\r
+}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagTrueHandler.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagTrueHandler.java
new file mode 100644 (file)
index 0000000..db7ea55
--- /dev/null
@@ -0,0 +1,84 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.handler;\r
+\r
+import java.beans.PropertyChangeEvent;\r
+import java.util.Iterator;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.AbstractHandler;\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 20.10.2009\r
+ * @version 1.0\r
+ */\r
+public class SetMarkerFlagTrueHandler extends AbstractHandler {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(SetMarkerFlagTrueHandler.class);\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
+        */\r
+       public Object execute(ExecutionEvent event) throws ExecutionException {\r
+               \r
+               Object data = ((Event) event.getTrigger()).data;\r
+               \r
+               if (HandlerUtil.getCurrentSelection(event) instanceof LineSelection \r
+                                       && HandlerUtil.getActiveEditor(event) instanceof BulkEditor && data instanceof MarkerType) {\r
+                       LineSelection selection = (LineSelection) HandlerUtil.getCurrentSelection(event);\r
+                       BulkEditor editor = (BulkEditor) HandlerUtil.getActiveEditor(event);\r
+                       \r
+                       LineAnnotationModel model = (LineAnnotationModel) editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());\r
+                       if (model != null) {\r
+                               Iterator iter = model.getAnnotationIterator(selection.getOffset(), selection.getLength(), true, true);\r
+                               while (iter.hasNext()) {\r
+                                       Object next = iter.next();\r
+                                       if (next instanceof LineAnnotation) {\r
+                                               Object entity = ((LineAnnotation) next).getEntity();\r
+                                               createOrUpdateMarker((AnnotatableEntity) entity, (MarkerType) data, true);\r
+                                               ((CdmBase) entity).firePropertyChange(new PropertyChangeEvent(entity, "", null, null));\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               return null;\r
+       }\r
+\r
+       /**\r
+        * @param entity\r
+        * @param publish\r
+        * @param b\r
+        */\r
+       private void createOrUpdateMarker(AnnotatableEntity entity,\r
+                       MarkerType markerType, boolean flag) {\r
+               for (Marker marker : entity.getMarkers()) {\r
+                       if (markerType.equals(marker.getMarkerType())) {\r
+                               marker.setFlag(flag);\r
+                               return;\r
+                       }\r
+               }\r
+               entity.addMarker(Marker.NewInstance(markerType, flag));\r
+       }\r
+}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeCandidateHandler.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeCandidateHandler.java
new file mode 100644 (file)
index 0000000..e40dc44
--- /dev/null
@@ -0,0 +1,89 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.taxeditor.bulkeditor.handler;\r
+\r
+import java.util.Iterator;\r
+\r
+import org.eclipse.core.commands.AbstractHandler;\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
+import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 25.06.2009\r
+ * @version 1.0\r
+ */\r
+public class SetMergeCandidateHandler extends AbstractHandler {\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
+        */\r
+       public Object execute(ExecutionEvent event) throws ExecutionException {\r
+                               \r
+               if (HandlerUtil.getCurrentSelection(event) instanceof LineSelection \r
+                               && HandlerUtil.getActiveEditor(event) instanceof BulkEditor) {\r
+                       LineSelection selection = (LineSelection) HandlerUtil.getCurrentSelection(event);\r
+                       BulkEditor editor = (BulkEditor) HandlerUtil.getActiveEditor(event);\r
+                       \r
+                       LineAnnotationModel model = (LineAnnotationModel) editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());\r
+                       if (model != null) {\r
+                               Iterator iter = model.getAnnotationIterator(selection.getOffset(), selection.getLength(), true, true);\r
+                               while (iter.hasNext()) {\r
+                                       Object next = iter.next();\r
+                                       if (next instanceof LineAnnotation) {\r
+                                               model.changeAnnotationType(\r
+                                                               (LineAnnotation) next, IBulkEditorConstants.TYPE_MERGE_CANDIDATE);\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               \r
+//             \r
+//             \r
+//             \r
+//             IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
+//             IEditorInput input = editor.getEditorInput();\r
+//             \r
+//             if (editor instanceof BulkEditor && input instanceof BulkEditorInput) {\r
+//                     \r
+//                     IDocumentProvider provider = ((AnnotatedLineEditor) editor).getDocumentProvider();\r
+//                     LineAnnotationModel model = \r
+//                                     (LineAnnotationModel) provider.getAnnotationModel(input);\r
+//                     IDocument document = provider.getDocument(input);\r
+//                     \r
+//                     ISelection selection = HandlerUtil.getActiveMenuSelection(event);\r
+//                     if (selection instanceof TextSelection) {\r
+//                             Annotation annotation = null;\r
+//                             \r
+//                             // Get annotation in current line\r
+//                             int line = ((TextSelection) selection).getStartLine();\r
+//                             annotation = model.getAnnotationAtLine(line, document);\r
+//                             \r
+//                             if (annotation != null) {\r
+//                                     if (annotation.getType().equals(IBulkEditorConstants.TYPE_MERGE_CANDIDATE)) {\r
+//                                             model.changeAnnotationType(\r
+//                                                             annotation, LineAnnotation.TYPE_GENERIC);\r
+//                                     } else {\r
+//                                             model.changeAnnotationType(\r
+//                                                             annotation, IBulkEditorConstants.TYPE_MERGE_CANDIDATE);\r
+//                                     }\r
+//                             }\r
+//                     }\r
+//             }               \r
+               return null;\r
+       }\r
+}
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ToggleMergeCandidateHandler.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ToggleMergeCandidateHandler.java
deleted file mode 100644 (file)
index bc2b132..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-// $Id$\r
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-package eu.etaxonomy.taxeditor.bulkeditor.handler;\r
-\r
-import org.eclipse.core.commands.AbstractHandler;\r
-import org.eclipse.core.commands.ExecutionEvent;\r
-import org.eclipse.core.commands.ExecutionException;\r
-import org.eclipse.jface.text.IDocument;\r
-import org.eclipse.jface.text.TextSelection;\r
-import org.eclipse.jface.text.source.Annotation;\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.ui.IEditorInput;\r
-import org.eclipse.ui.IEditorPart;\r
-import org.eclipse.ui.handlers.HandlerUtil;\r
-import org.eclipse.ui.texteditor.IDocumentProvider;\r
-\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
-import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- */\r
-public class ToggleMergeCandidateHandler extends AbstractHandler {\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
-        */\r
-       public Object execute(ExecutionEvent event) throws ExecutionException {\r
-                               \r
-               IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
-               IEditorInput input = editor.getEditorInput();\r
-               \r
-               if (editor instanceof BulkEditor && input instanceof BulkEditorInput) {\r
-                       \r
-                       IDocumentProvider provider = ((AnnotatedLineEditor) editor).getDocumentProvider();\r
-                       LineAnnotationModel model = \r
-                                       (LineAnnotationModel) provider.getAnnotationModel(input);\r
-                       IDocument document = provider.getDocument(input);\r
-                       \r
-                       ISelection selection = HandlerUtil.getActiveMenuSelection(event);\r
-                       if (selection instanceof TextSelection) {\r
-                               Annotation annotation = null;\r
-                               \r
-                               // Get annotation in current line\r
-                               int line = ((TextSelection) selection).getStartLine();\r
-                               annotation = model.getAnnotationAtLine(line, document);\r
-                               \r
-                               if (annotation != null) {\r
-                                       if (annotation.getType().equals(IBulkEditorConstants.TYPE_MERGE_CANDIDATE)) {\r
-                                               model.changeAnnotationType(\r
-                                                               annotation, LineAnnotation.TYPE_GENERIC);\r
-                                       } else {\r
-                                               model.changeAnnotationType(\r
-                                                               annotation, IBulkEditorConstants.TYPE_MERGE_CANDIDATE);\r
-                                       }\r
-                               }\r
-                       }\r
-               }               \r
-               return null;\r
-       }\r
-}
\ No newline at end of file
index cbd1d98d86c74484bb638259da1e3db4157f6ffc..299e59b66816fb89a7a5e629fe5c1eeffb17caa0 100644 (file)
@@ -15,6 +15,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IPersistableElement;\r
 \r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery;\r
 \r
 /**\r
@@ -100,5 +101,15 @@ abstract public class BulkEditorInput extends PropertyChangeSupport implements I
                return query;\r
        }\r
        \r
-       abstract public boolean isMergingEnabled();\r
+       public boolean isMergingEnabled() {\r
+               return false;\r
+       }\r
+\r
+       /**\r
+        * @param markerType\r
+        * @return\r
+        */\r
+       public boolean isMarkerTypeEditingEnabled(MarkerType markerType) {\r
+               return false;\r
+       }\r
 }
\ No newline at end of file
index 2f12a41c8fc8e946c411e88f34184d931f98260f..8ae7af30e0f737f9b8df69fef18f1fc1c7293486 100644 (file)
@@ -9,6 +9,8 @@
 */\r
 package eu.etaxonomy.taxeditor.bulkeditor.input;\r
 \r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -66,4 +68,15 @@ public class ReferenceEditorInput extends BulkEditorInput {
        public boolean isMergingEnabled() {\r
                return true;\r
        }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMarkerTypeEditingEnabled(eu.etaxonomy.cdm.model.common.MarkerType)\r
+        */\r
+       @Override\r
+       public boolean isMarkerTypeEditingEnabled(MarkerType markerType) {\r
+               if (MarkerType.PUBLISH().equals(markerType)) {\r
+                       return true;\r
+               }\r
+               return super.isMarkerTypeEditingEnabled(markerType);\r
+       }\r
 }
\ No newline at end of file