tabbed_properties branch merged into trunk completely
authorn.hoffmann <n.hoffmann@localhost>
Wed, 9 Jun 2010 17:03:12 +0000 (17:03 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 9 Jun 2010 17:03:12 +0000 (17:03 +0000)
38 files changed:
.gitattributes
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/AnnotatedLineEditor.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineEditorPartitioner.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/IEntityPersistenceService.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/ILineDisplayStrategy.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineAnnotation.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelection.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelectionSource.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelectionViewer.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/handler/NewObjectHandler.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
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorPersistenceService.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSearchComposite.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorUtil.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ReferenceCreator.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorInputTypeValues.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorPropertyTester.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DeleteObjectContributionItem.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DynamicNewObjectMenu.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/SetMarkerContributionItems.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/MergeGroupHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagTrueHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeCandidateHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeTargetHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ShowReferencingObjectsHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInput.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/ReferenceEditorInput.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/internal/TaxeditorBulkeditorPlugin.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java

index 1f3e52b744f2c6f2724ff7244e88e80375bd26e1..de50b22b51aa8297b0b3d500e7eafbd490f57b28 100644 (file)
@@ -53,7 +53,6 @@ taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/IL
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/IdentifiableEntityComparator.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineAnnotation.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineAnnotationModel.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelection.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelectionSource.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelectionViewer.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/SupplementalTextScanner.java -text
@@ -63,9 +62,9 @@ taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.
 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/BulkEditorUtil.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
@@ -87,8 +86,8 @@ taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/Set
 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/input/AbstractBulkEditorInput.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
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/ReferenceEditorInput.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/internal/TaxeditorBulkeditorPlugin.java -text
index e7804fccd61f5d437a42973dacfea52d4d0a3da4..b08c59139e7bd8217b0de129fa97306521f895cb 100644 (file)
@@ -2,16 +2,16 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: EDIT Taxonomic Editor - Bulk Editor Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
-Bundle-Version: 2.1.1.qualifier
+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
 Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime;bundle-version="3.5.0",
  org.eclipse.ui.editors;bundle-version="3.5.0",
  org.eclipse.core.expressions,
  eu.etaxonomy.cdmlib;bundle-version="2.3.0",
- eu.etaxonomy.taxeditor.editor;bundle-version="2.1.0",
  eu.etaxonomy.taxeditor.store;bundle-version="2.1.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
index 1f102cc39350a94fb1016900140d2135a0d0fb00..13b35afac3036a32598e71268f1bac8c4da99285 100644 (file)
       </menuContribution>\r
       <menuContribution\r
             locationURI="popup:#BulkEditorContext">\r
-         <menu\r
-               label="New">\r
-            <dynamic\r
-                  class="eu.etaxonomy.taxeditor.bulkeditor.command.DynamicNewObjectMenu"\r
-                  id="taxeditor-bulkeditor.dynamicNewObjectMenu">\r
-            </dynamic>\r
-         </menu>\r
+         <command\r
+               commandId="taxeditor-bulkeditor.dynamicnewobjectcommand"\r
+               label="New"\r
+               style="push">\r
+         </command>\r
          <separator\r
                name="taxeditor-bulkeditor.separator1"\r
                visible="true">\r
                label="Show Referencing Objects"\r
                style="push">\r
          </command>\r
+         <command\r
+               commandId="eu.etaxonomy.taxeditor.editor.commands.showDetailsView"\r
+               label="Show Details"\r
+               style="push">\r
+         </command>\r
          <separator\r
-               name="taxeditor-bulkeditor.separator2"\r
+               name="taxeditor-bulkeditor.separator3"\r
                visible="true">\r
          </separator>\r
       </menuContribution>\r
             id="bulkeditor.commands.removemergecandidate"\r
             name="Remove as Candidate for Group Merge">\r
       </command>\r
+      <command\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.NewEntityHandler"\r
+            id="eu.etaxonomy.taxeditor.bulkeditor.command.new"\r
+            name="New Entity">\r
+      </command>\r
    </extension>\r
    <extension\r
          point="org.eclipse.ui.editors.markerAnnotationSpecification">\r
          point="org.eclipse.ui.views">\r
       <view\r
             class="eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView"\r
-            id="taxeditor-bulkeditor.referencingobjectsview"\r
+            id="eu.etaxonomy.taxeditor.bulkeditor.referencingobjectsview"\r
             name="Referencing Objects"\r
             restorable="false">\r
       </view>\r
    <extension\r
          point="org.eclipse.ui.perspectiveExtensions">\r
       <perspectiveExtension\r
-            targetID="eu.etaxonomy.taxeditor.application.perspective">\r
+            targetID="bulkeditor.perspective">\r
+         <view\r
+               closeable="true"\r
+               id="eu.etaxonomy.taxeditor.editor.forms.detailsView"\r
+               minimized="false"\r
+               moveable="true"\r
+               ratio="0.8"\r
+               relationship="right"\r
+               relative="org.eclipse.ui.editorss"\r
+               showTitle="true"\r
+               standalone="false"\r
+               visible="true">\r
+         </view>\r
          <view\r
-               id="eu.etaxonomy.taxeditor.store.datasource.datasourceView"\r
+               closeable="true"\r
+               id="eu.etaxonomy.taxeditor.bulkeditor.referencingobjectsview"\r
                minimized="false"\r
+               moveable="true"\r
                ratio="0.8"\r
-               relationship="bottom"\r
+               relationship="stack"\r
                relative="org.eclipse.ui.editorss"\r
-               visible="false">\r
+               showTitle="true"\r
+               visible="true">\r
          </view>\r
       </perspectiveExtension>\r
    </extension>\r
             </with>\r
          </activeWhen>\r
       </handler>\r
-   </extension>\r
+   </extension>
 <!-- start set marker -->\r
-
+\r
 </plugin>\r
index 4749617da0e5e75eaa9a6f3f82ee598151b60d91..282973093315d0dfe32d604e69804f73fe4d7a54 100644 (file)
@@ -9,7 +9,6 @@
 */\r
 package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
 \r
-import java.util.ArrayList;\r
 import java.util.HashMap;\r
 import java.util.Iterator;\r
 import java.util.List;\r
@@ -23,23 +22,15 @@ import org.eclipse.jface.operation.IRunnableContext;
 import org.eclipse.jface.text.BadLocationException;\r
 import org.eclipse.jface.text.Document;\r
 import org.eclipse.jface.text.IDocument;\r
-import org.eclipse.jface.text.IDocumentPartitioner;\r
-import org.eclipse.jface.text.IRegion;\r
-import org.eclipse.jface.text.ITypedRegion;\r
 import org.eclipse.jface.text.Position;\r
-import org.eclipse.jface.text.TypedRegion;\r
-import org.eclipse.jface.text.rules.FastPartitioner;\r
-import org.eclipse.jface.text.rules.IPartitionTokenScanner;\r
-import org.eclipse.jface.text.rules.IToken;\r
-import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;\r
-import org.eclipse.jface.text.rules.Token;\r
 import org.eclipse.jface.text.source.Annotation;\r
 import org.eclipse.jface.text.source.IAnnotationModel;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.StyleRange;\r
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.texteditor.AbstractDocumentProvider;\r
 \r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;\r
+\r
 \r
 \r
 /**\r
@@ -71,10 +62,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
 \r
        private Map<IEditorInput, IEntityCreator<?>> entityCreators = \r
                new HashMap<IEditorInput, IEntityCreator<?>>();\r
-\r
-       private Map<IEditorInput, IEntityPersistenceService> persistenceServices = \r
-               new HashMap<IEditorInput, IEntityPersistenceService>();\r
-\r
+       \r
        private Map<IEditorInput, ILineDisplayStrategy> lineDisplayStrategies = \r
                new HashMap<IEditorInput, ILineDisplayStrategy>();\r
        \r
@@ -120,14 +108,17 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                        IAnnotationModel model = getAnnotationModel(element);\r
                        documents.put(input, document);\r
                                        \r
-                       for (Object entity : getEntityList(element)) {\r
-                               try {\r
-                                       createAnnotatedLine(input, entity);\r
-                               } catch (BadLocationException e) {\r
-                                       // TODO Auto-generated catch block\r
-                                       e.printStackTrace();\r
-                               }\r
-                       }       \r
+                       List<?> entityList = getEntityList(element);\r
+                       \r
+                       if(entityList != null){\r
+                               for (Object entity : entityList) {\r
+                                       try {\r
+                                               createAnnotatedLine(input, entity);\r
+                                       } catch (BadLocationException e) {\r
+                                               logger.error("Problems creating annotated line: ", e);\r
+                                       }\r
+                               }       \r
+                       }\r
                        \r
                        return document;\r
                }\r
@@ -208,8 +199,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                        }\r
                        document.replace(offset, lineLength, text);\r
                } catch (BadLocationException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
+                       logger.error("Problem updating annotated line: " ,e);\r
                }\r
        }\r
 \r
@@ -239,8 +229,8 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
         * @return\r
         */\r
        private List<?> getEntityList(Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       return getPersistenceService(element).getEntityList(element);\r
+               if (element instanceof AbstractBulkEditorInput) {\r
+                       return ((AbstractBulkEditorInput)element).listEntities();\r
                }\r
                return null;\r
        }\r
@@ -248,9 +238,9 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
        @Override\r
        protected void doSaveDocument(IProgressMonitor monitor, Object element,\r
                        IDocument document, boolean overwrite) throws CoreException {\r
-               if (element instanceof IEditorInput) {\r
+               if (element instanceof AbstractBulkEditorInput) {\r
                        \r
-                       IEntityPersistenceService persistenceService = getPersistenceService(element);\r
+                       IEntityPersistenceService persistenceService = (AbstractBulkEditorInput) element;\r
                        \r
                        // Get new containers from annotation model\r
                        LineAnnotationModel model = (LineAnnotationModel) getAnnotationModel(element);\r
@@ -260,7 +250,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                                if (annotation instanceof IEntityContainer<?>) {\r
                                        IEntityContainer<?> container = (IEntityContainer<?>) annotation;\r
                                        if (container.isMarkedAsNew() || container.isDirty()) {\r
-                                               persistenceService.save(container.getEntity(), element); // save\r
+                                               persistenceService.save(container.getEntity()); // save\r
                                                container.setDirty(false);\r
                                                container.markAsNew(false);\r
                                        }\r
@@ -271,10 +261,10 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                                        continue;\r
                                }\r
                                if (annotation.isMarkedAsMerged()) {\r
-                                       persistenceService.merge(annotation.getEntity(), annotation.getMergeTarget(), element); //  merge                                       \r
+                                       persistenceService.merge(annotation.getEntity(), annotation.getMergeTarget()); //  merge                                        \r
                                } else {\r
                                        // TODO clarify w AM whether this needs to be executed on merged objects\r
-                                       persistenceService.delete(annotation.getEntity(), element); // delete\r
+                                       persistenceService.delete(annotation.getEntity()); // delete\r
                                }\r
                        }\r
                        model.clearDeletedAnnotations();\r
@@ -320,26 +310,6 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                return null;\r
        }\r
 \r
-       /**\r
-        * @param persistenceService\r
-        * @param input\r
-        */\r
-       public void setPersistenceService(\r
-                       IEntityPersistenceService persistenceService, Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       persistenceServices.put((IEditorInput) element, persistenceService);\r
-               }\r
-       }\r
-       \r
-       public IEntityPersistenceService getPersistenceService(Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       IEntityPersistenceService persistenceService = persistenceServices.get((IEditorInput) element);\r
-                       Assert.isNotNull(persistenceService, "No IEntityPersistenceService set for this element.");\r
-                       return persistenceService;\r
-               }\r
-               return null;\r
-       }\r
-\r
        /**\r
         * @param lineDisplayStrategy\r
         * @param input\r
@@ -395,15 +365,13 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                                        length += 2;\r
                                }\r
                        } catch (BadLocationException e1) {\r
-                               // TODO Auto-generated catch block\r
-                               e1.printStackTrace();\r
+                               logger.error("Problems removing annotated line", e1);\r
                        }\r
                        \r
                        try {\r
                                document.replace(offset, length, "");\r
                        } catch (BadLocationException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
+                               logger.error("Problems removing annotated line", e);\r
                        }\r
                }               \r
        }\r
index a5d4674806e9676a305d5b5cec14246578035359..87e32f6a234a99cc9ee14b1f2a8018e229a99316 100644 (file)
@@ -74,7 +74,6 @@ public class AnnotatedLineEditor extends TextEditor implements IConversationEnab
                } else {\r
                        provider.setEntityCreator(entityCreator, input);\r
                }\r
-               provider.setPersistenceService(persistenceService, input);\r
                provider.setLineDisplayStrategy(lineDisplayStrategy, input);\r
                setDocumentProvider(provider);\r
                \r
index b22569a119feb7efd87ef540ac19fe0538b22496..70fc8cbe081be16e6f3a0c083079757892cc6cf8 100644 (file)
@@ -11,8 +11,6 @@
 package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
 \r
 import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.Collections;\r
 import java.util.List;\r
 \r
 import org.apache.log4j.Logger;\r
index ecc478f23016fbe1d5da989b5406bf5c7cc3083a..d5338a14909b689305baf4a6c33b29cd77fcd685 100644 (file)
@@ -24,13 +24,13 @@ import java.util.List;
  */\r
 public interface IEntityPersistenceService {\r
        \r
-       List<?> getEntityList(Object element);\r
+       List<?> listEntities(); \r
        \r
-       boolean create(Object entity, Object element);\r
+       boolean create(Object entity);\r
        \r
-       boolean save(Object entity, Object element);\r
+       boolean save(Object entity);\r
        \r
-       boolean merge(Object entity, Object mergeTarget, Object element);\r
+       boolean merge(Object entity, Object mergeTarget);\r
        \r
-       boolean delete(Object entity, Object element);\r
+       boolean delete(Object entity);\r
 }\r
index 30a992e2b77b007098da8e61e1e714ab0cbfd9f1..dd67e132ab1bdb45b3ecf62a5ae7883aff055573 100644 (file)
@@ -54,6 +54,7 @@ public interface ILineDisplayStrategy {
        \r
        void setText(String text, Object entity);\r
        \r
+       @Deprecated\r
        Object getPropertySource(Object entity);\r
        \r
        String getHoverText(Object entity);\r
index 8ae66fbe85b2b8d310afd8260a4882b9d71129a9..1ee63c5533c18dded3d0c075495cc9bf87ea0c49 100644 (file)
@@ -162,6 +162,7 @@ public class LineAnnotation extends Annotation implements IEntityContainer {
        /**\r
         * @return\r
         */\r
+       @Deprecated\r
        public Object getPropertySource() {\r
                return lineDisplayStrategy.getPropertySource(entity);\r
        }\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelection.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelection.java
deleted file mode 100644 (file)
index ae94a8f..0000000
+++ /dev/null
@@ -1,83 +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
-\r
-package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
-\r
-import java.util.Iterator;\r
-import java.util.List;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.jface.text.IDocument;\r
-import org.eclipse.jface.text.TextSelection;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
-import org.eclipse.jface.viewers.StructuredSelection;\r
-\r
-/**\r
- * Extending <code>TextSelection</code> allows us to keep using Eclipse's text selection, while\r
- * <code>IStructuredSelection</code> can be used to send an object associated with the selection,\r
- * i.e. a property source, to the workbench selection service.\r
- *   \r
- * @author p.ciardelli\r
- * @created 03.07.2009\r
- * @version 1.0\r
- */\r
-public class LineSelection extends TextSelection implements IStructuredSelection {\r
-       @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger.getLogger(LineSelection.class);\r
-\r
-       private StructuredSelection structuredSelection;\r
-       \r
-       /**\r
-        * \r
-        */\r
-       public LineSelection(TextSelection selection, IDocument document, Object selectedObject) {\r
-               super(document, selection.getOffset(), selection.getLength());\r
-               if (selectedObject != null) {\r
-                       this.structuredSelection = new StructuredSelection(selectedObject);\r
-               } else {\r
-                       this.structuredSelection = StructuredSelection.EMPTY;\r
-               }\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.viewers.IStructuredSelection#getFirstElement()\r
-        */\r
-       public Object getFirstElement() {\r
-               return structuredSelection.getFirstElement();\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.viewers.IStructuredSelection#iterator()\r
-        */\r
-       public Iterator<?> iterator() {\r
-               return structuredSelection.iterator();\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.viewers.IStructuredSelection#size()\r
-        */\r
-       public int size() {\r
-               return structuredSelection.size();\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.viewers.IStructuredSelection#toArray()\r
-        */\r
-       public Object[] toArray() {\r
-               return structuredSelection.toArray();\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.viewers.IStructuredSelection#toList()\r
-        */\r
-       public List<?> toList() {\r
-               return structuredSelection.toList();\r
-       }\r
-}\r
index 9ea10a4ddb2735ba929f3433285bbcbea59dbd95..9999134a4cad46f7dbe405434c8ddb0d94230fcd 100644 (file)
@@ -43,7 +43,7 @@ public class LineSelectionSource implements ILineSelectionSource {
                        Annotation annotation = ((LineAnnotationModel) model).\r
                                                                                getAnnotationAtLine(line, viewer.getDocument());\r
                        if (annotation != null) { \r
-                               return ((LineAnnotation) annotation).getPropertySource();\r
+                               return ((LineAnnotation) annotation).getEntity();//getPropertySource();\r
                        }\r
                }\r
                return null;\r
index 927edab4b585a0fd67757bdfd894786078281ea4..5417fb0119dceb2d7da5603bcfcc07256b54bb14 100644 (file)
 package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.jface.text.IRegion;\r
+import org.eclipse.jface.text.ITextSelection;\r
+import org.eclipse.jface.text.Region;\r
 import org.eclipse.jface.text.TextSelection;\r
 import org.eclipse.jface.text.source.IOverviewRuler;\r
 import org.eclipse.jface.text.source.IVerticalRuler;\r
 import org.eclipse.jface.text.source.SourceViewer;\r
 import org.eclipse.jface.viewers.ISelection;\r
 import org.eclipse.jface.viewers.SelectionChangedEvent;\r
-import org.eclipse.swt.events.KeyAdapter;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.MouseAdapter;\r
-import org.eclipse.swt.events.MouseEvent;\r
 import org.eclipse.swt.widgets.Composite;\r
 \r
+import eu.etaxonomy.taxeditor.model.LineSelection;\r
+\r
 /**\r
  * Notifies selection service every time the user changes focus to a new line.\r
  * \r
@@ -50,7 +51,7 @@ public class LineSelectionViewer extends SourceViewer {
                        int styles) {\r
                super(parent, verticalRuler, overviewRuler, showAnnotationsOverview, styles);\r
 \r
-               createLineChangeListeners();\r
+//             createLineChangeListeners();\r
                setLineSelectionSource(new LineSelectionSource(this));\r
        }\r
        \r
@@ -72,56 +73,30 @@ public class LineSelectionViewer extends SourceViewer {
        public void setLineSelectionSource(ILineSelectionSource lineSelectionSource) {\r
                this.lineSelectionSource = lineSelectionSource;\r
        }\r
-       \r
-       /**\r
-        * \r
-        */\r
-       private void createLineChangeListeners() {\r
-               getTextWidget().addKeyListener(new KeyAdapter() {\r
-                       @Override\r
-                       public void keyReleased(KeyEvent e) {\r
-                               checkLineChange();\r
-                       }\r
-               });\r
-               getTextWidget().addMouseListener(new MouseAdapter() {\r
-                       @Override\r
-                       public void mouseUp(MouseEvent e) {\r
-                               checkLineChange();      \r
-                       }\r
-               });\r
-       }\r
 \r
-       /**\r
-        * If the user has put the cursor on a new line, change the selection\r
-        */\r
-       private void checkLineChange() {\r
-               ISelection selection = getSelection();\r
-               if (selection instanceof TextSelection) {\r
-                       int line = ((TextSelection) selection).getStartLine();\r
-                       if (line != lastLine) {                         \r
-                               fireLineSelection();\r
-                               lastLine = line;\r
-                       }\r
-               }\r
-       }\r
 \r
-       /**\r
-        * \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.text.TextViewer#firePostSelectionChanged(int, int)\r
         */\r
-       private void fireLineSelection() {\r
-               if (lineSelectionSource == null) {\r
-                       return;\r
-               }\r
-               ISelection selection = getSelection();\r
-               if (selection instanceof TextSelection) {\r
-                       selection = createLineSelection((TextSelection) selection);\r
-                       SelectionChangedEvent event= new SelectionChangedEvent(this, selection);\r
+       @Override\r
+       protected void firePostSelectionChanged(int offset, int length) {\r
+               if (redraws()) {\r
+                       IRegion r= widgetRange2ModelRange(new Region(offset, length));\r
+                       ITextSelection textSelection= r != null ? new TextSelection(getDocument(), r.getOffset(), r.getLength()) : TextSelection.emptySelection();\r
+                       LineSelection lineSelection = createLineSelection(textSelection);\r
+                       SelectionChangedEvent event= new SelectionChangedEvent(this, lineSelection);\r
                        fireSelectionChanged(event);\r
                }\r
        }\r
        \r
-       private LineSelection createLineSelection(TextSelection textSelection) {\r
-               if (textSelection instanceof LineSelection) {\r
+       /**\r
+        * Creates a new instance of a LineSelection based on a given ITextSelection\r
+        * \r
+        * @param textSelection\r
+        * @return\r
+        */\r
+       private LineSelection createLineSelection(ITextSelection textSelection) {\r
+               if (textSelection instanceof LineSelection ) {\r
                        return (LineSelection) textSelection;\r
                }\r
                int line = textSelection.getStartLine();\r
index 4203ca581f7d8439e5dab8650671df734c42b8b4..4330af9074c701060827fab805c92d50e33fe511 100644 (file)
@@ -39,6 +39,7 @@ public class NewObjectHandler extends AbstractHandler {
                \r
                IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
                IEditorInput input = editor.getEditorInput();\r
+               \r
                if (editor instanceof AnnotatedLineEditor) {\r
                        \r
                        Object key = ((Event)event.getTrigger()).data;\r
index 2800682cd1ff8f7c0921e611684a1e713f828545..5e57b77bd8172e8e883695dbddc2d84390931325 100644 (file)
@@ -15,9 +15,6 @@ import java.beans.PropertyChangeListener;
 import java.util.Iterator;\r
 \r
 import org.apache.log4j.Logger;\r
-import org.eclipse.jface.action.IMenuManager;\r
-import org.eclipse.jface.action.IStatusLineManager;\r
-import org.eclipse.jface.action.IToolBarManager;\r
 import org.eclipse.jface.dialogs.MessageDialog;\r
 import org.eclipse.jface.dialogs.MessageDialogWithToggle;\r
 import org.eclipse.jface.preference.IPreferenceStore;\r
@@ -40,20 +37,15 @@ 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.PlatformUI;\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.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
+import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;\r
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
@@ -63,7 +55,7 @@ import eu.etaxonomy.taxeditor.store.VocabularyStore;
  * @created 07.07.2009\r
  * @version 1.0\r
  */\r
-public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeListener {\r
+public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeListener, IPartContentHasDetails{\r
        private static final Logger logger = Logger.getLogger(BulkEditor.class);\r
 \r
        public static final String ID = "bulkeditor.editor";\r
@@ -73,12 +65,12 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
        private BulkEditorSearchComposite searchBar = null;\r
        \r
        private IPropertyChangeListener markerPreferenceListener;\r
-       \r
+\r
        /**\r
         * \r
         */\r
        public BulkEditor() {\r
-               super(CdmStore.NewTransactionalConversation());\r
+               super(CdmStore.createConversation());\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -95,8 +87,6 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
 \r
                setEntityCreatorService(new BulkEditorEntityCreatorService());\r
                \r
-               setPersistenceService(new BulkEditorPersistenceService());\r
-               \r
                setLineDisplayStrategy(new BulkEditorLineDisplay(this));\r
                \r
                setSourceViewerConfiguration(new BulkEditorViewerConfiguration(lineDisplayStrategy));\r
@@ -108,7 +98,7 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
        protected ISourceViewer createSourceViewer(Composite parent,\r
                        IVerticalRuler ruler, int styles) {\r
                ISourceViewer viewer = super.createSourceViewer(parent, ruler, styles);\r
-               if (((BulkEditorInput) getEditorInput()).isMergingEnabled()) {\r
+               if (((AbstractBulkEditorInput) getEditorInput()).isMergingEnabled()) {\r
                        addToggleMergeCandidateListener(ruler.getControl());\r
                }\r
                return viewer;\r
@@ -121,13 +111,13 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
        public void init(IEditorSite site, IEditorInput input)\r
                        throws PartInitException {\r
                \r
-               if (!(input instanceof BulkEditorInput)) {\r
+               if (!(input instanceof AbstractBulkEditorInput)) {\r
                        throw new PartInitException("Invalid Input: Must be BulkEditorInput");\r
                }\r
                \r
                super.init(site, input);\r
                \r
-               ((BulkEditorInput) input).addPropertyChangeListener(this);\r
+               ((AbstractBulkEditorInput) input).addPropertyChangeListener(this);\r
        }\r
        \r
        /* (non-Javadoc)\r
@@ -136,22 +126,27 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
        @Override\r
        public void createPartControl(Composite parent) {\r
                \r
-               GridLayout gridLayout = new GridLayout();\r
-               parent.setLayout(gridLayout);\r
+               parent.setLayout(new GridLayout());\r
                \r
-               searchBar = new BulkEditorSearchComposite(this, parent, SWT.NONE);\r
-               searchBar.getParent().setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));\r
+               Composite layoutComposite = new Composite(parent, SWT.TOP);\r
+               layoutComposite.setLayout(new GridLayout());\r
+               \r
+               searchBar = new BulkEditorSearchComposite(this, layoutComposite, SWT.NONE);\r
+               layoutComposite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));\r
 \r
                if (isEditableMarkerTypes()) {\r
-                       createMarkerEditing(parent);\r
+                       // TODO this will be obsolete\r
+//                     createMarkerEditing(layoutComposite);\r
                }\r
                \r
+               searchBar.setEnabled(! getEditorInput().isSingleEntityMode());\r
+                               \r
                super.createPartControl(parent);\r
                \r
-               // Set viewer composite to fill grid\r
+               // Set viewer composite to fill grid. Unfortunately it is private and we have to do a little hack here.\r
                for (Control control : parent.getChildren()) {\r
                        if (control instanceof Composite && \r
-                                               !(control instanceof BulkEditorSearchComposite || control instanceof BulkEditorMarkerPreferenceComposite)) {\r
+                                               !(control.equals(layoutComposite))) {\r
                                control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
                        }\r
                }\r
@@ -163,7 +158,7 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
         */\r
        private void createMarkerEditing(Composite parent) {\r
                final BulkEditorMarkerPreferenceComposite markerPreferenceBar = \r
-                               new BulkEditorMarkerPreferenceComposite((BulkEditorInput) getEditorInput(), parent, SWT.NONE);\r
+                               new BulkEditorMarkerPreferenceComposite((AbstractBulkEditorInput) getEditorInput(), parent, SWT.NONE);\r
                markerPreferenceListener = new IPropertyChangeListener() {\r
                        public void propertyChange(\r
                                        org.eclipse.jface.util.PropertyChangeEvent event) {\r
@@ -193,7 +188,7 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
         */\r
        private boolean isEditableMarkerTypes() { \r
                for (MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
-                       if (((BulkEditorInput) getEditorInput()).isMarkerTypeEditingEnabled(markerType)) {\r
+                       if (((AbstractBulkEditorInput) getEditorInput()).isMarkerTypeEditingEnabled(markerType)) {\r
                                return true;\r
                        }\r
                }\r
@@ -307,11 +302,18 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
                }\r
        }\r
        \r
+       public void changed(Object element) {\r
+//             this.dirty = dirty;\r
+               AnnotatedLineDocumentProvider p = (AnnotatedLineDocumentProvider) getDocumentProvider();\r
+               p.changed(getEditorInput());\r
+               firePropertyChange(PROP_DIRTY);\r
+       }\r
+       \r
        /* (non-Javadoc)\r
         * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)\r
         */\r
        public void propertyChange(PropertyChangeEvent evt) {\r
-               if (evt.getPropertyName().equals(BulkEditorInput.QUERY_CHANGED)) {\r
+               if (evt.getPropertyName().equals(AbstractBulkEditorInput.QUERY_CHANGED)) {\r
                        \r
                        // TODO check if dirty, prompt save\r
                        if (isDirty()) {\r
@@ -327,42 +329,17 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
                        setInput(getEditorInput());\r
                }\r
        }\r
-       \r
-       @SuppressWarnings("unchecked")\r
-       public Object getAdapter(Class type) {\r
-           if (type == IPropertySheetPage.class) {\r
-               PropertySheetPage page = new EditorPropertySheetPage();\r
-               return page;            \r
-           }\r
-           return super.getAdapter(type);\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor#getContributorId()\r
+        */\r
+       public String getContributorId() {\r
+               return BulkEditor.ID;\r
        }\r
        \r
-       class EditorPropertySheetPage extends PropertySheetPage {\r
-               \r
-               EditorPropertySheetPage() {\r
-                       super();\r
-                       \r
-                       // Override sorter to simply display names as first-in-first-out\r
-                       setSorter(new PropertySheetSorter() {\r
-                               public int compare(IPropertySheetEntry entryA, IPropertySheetEntry entryB) {\r
-                                       return 0;\r
-                               }\r
-                               public int compareCategories(String categoryA, String categoryB) {\r
-                                       return 0;\r
-                               }\r
-                               public void sort(IPropertySheetEntry[] entries) {\r
-                                       // do nothing\r
-                               }\r
-                       });\r
-               }\r
-               \r
-        public void makeContributions(IMenuManager menuManager,\r
-                IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {\r
-               super.makeContributions(menuManager, toolBarManager, statusLineManager);\r
-        \r
-               // Remove "Show categories", "Show advanced properties", "Restore default value"\r
-               toolBarManager.removeAll();\r
-               menuManager.removeAll();\r
-        }\r
+       @Override\r
+       public AbstractBulkEditorInput getEditorInput() {\r
+               // TODO Auto-generated method stub\r
+               return (AbstractBulkEditorInput) super.getEditorInput();\r
        }\r
 }
\ No newline at end of file
index 7ebc3a327da376f9314b4cd247596fa9634f2277..a07a0a236964506cf60baf47df778ec1202c6a66 100644 (file)
@@ -23,16 +23,11 @@ import eu.etaxonomy.cdm.model.agent.Institution;
 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
-import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -69,19 +64,20 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#getPropertySource(java.lang.Object)\r
         */\r
+       @Deprecated\r
        public Object getPropertySource(Object entity) {\r
-               if (entity instanceof ReferenceBase) {\r
-                       return new ReferencePropertySource((ReferenceBase) entity);                     \r
-               }\r
-               if (entity instanceof NonViralName) {\r
-                       return new NonViralNamePropertySource((NonViralName) entity);\r
-               }\r
-               if (entity instanceof Team) {\r
-                       return new AuthorTeamPropertySource((Team) entity);\r
-               }\r
-               if (entity instanceof Person) {\r
-                       return new PersonPropertySource((Person) entity);\r
-               }\r
+//             if (entity instanceof ReferenceBase) {\r
+//                     return new ReferencePropertySource((ReferenceBase) entity);                     \r
+//             }\r
+//             if (entity instanceof NonViralName) {\r
+//                     return new NonViralNamePropertySource((NonViralName) entity);\r
+//             }\r
+//             if (entity instanceof Team) {\r
+//                     return new AuthorTeamPropertySource((Team) entity);\r
+//             }\r
+//             if (entity instanceof Person) {\r
+//                     return new PersonPropertySource((Person) entity);\r
+//             }\r
                return null;\r
        }\r
 \r
index 9e5995f40acaa0de5621cca3914dfb584171ff79..dc448a10920f86028bef98e624956ef4d1b97263 100644 (file)
@@ -22,7 +22,7 @@ import org.eclipse.swt.widgets.Button;
 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.bulkeditor.input.AbstractBulkEditorInput;\r
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
 \r
@@ -34,7 +34,7 @@ import eu.etaxonomy.taxeditor.store.VocabularyStore;
 public class BulkEditorMarkerPreferenceComposite extends Composite {\r
        private static final Logger logger = Logger.getLogger(BulkEditorMarkerPreferenceComposite.class);\r
        \r
-       private BulkEditorInput editorInput;\r
+       private AbstractBulkEditorInput editorInput;\r
        \r
        Map<Button, MarkerType> markerTypeButtons = new HashMap<Button, MarkerType>();\r
                \r
@@ -42,7 +42,7 @@ public class BulkEditorMarkerPreferenceComposite extends Composite {
         * @param parent\r
         * @param style\r
         */\r
-       public BulkEditorMarkerPreferenceComposite(BulkEditorInput editorInput, Composite parent, int style) {\r
+       public BulkEditorMarkerPreferenceComposite(AbstractBulkEditorInput editorInput, Composite parent, int style) {\r
                super(parent, style);\r
                this.editorInput = editorInput;\r
                createControl();\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorPersistenceService.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorPersistenceService.java
deleted file mode 100644 (file)
index ed4d1e1..0000000
+++ /dev/null
@@ -1,134 +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
-\r
-package eu.etaxonomy.taxeditor.bulkeditor;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.Comparator;\r
-import java.util.List;\r
-\r
-import org.apache.log4j.Logger;\r
-\r
-import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
-import eu.etaxonomy.cdm.model.agent.AgentBase;\r
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.strategy.merge.MergeException;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.IdentifiableEntityComparator;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.AgentEditorInput;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.NameEditorInput;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;\r
-import eu.etaxonomy.taxeditor.store.CdmStore;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 07.07.2009\r
- * @version 1.0\r
- */\r
-public class BulkEditorPersistenceService implements IEntityPersistenceService {\r
-       private static final Logger logger = Logger\r
-                       .getLogger(BulkEditorPersistenceService.class);\r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#getEntityList(java.lang.Object)\r
-        */\r
-       public List<?> getEntityList(Object element) {\r
-               List entityList = new ArrayList();\r
-               \r
-               if (element instanceof BulkEditorInput) {\r
-                       IBulkEditorQuery query = ((BulkEditorInput) element).getQuery();\r
-                       \r
-                       Comparator queryComparator = null;\r
-                       if (query != null) {\r
-                               String queryString = query.getSearchString();\r
-                               IIdentifiableEntityServiceConfigurator configurator = query.getSearchConfigurator();\r
-                               queryComparator = query.getComparator();\r
-                               if (element instanceof ReferenceEditorInput) {\r
-                                       entityList = CdmStore.findReferences(configurator);\r
-                               }\r
-                               if (element instanceof NameEditorInput) {\r
-                                       entityList = CdmStore.findNames(configurator);\r
-                               }\r
-                               if (element instanceof AgentEditorInput){\r
-                                       entityList = CdmStore.findTeamOrPersons(configurator);\r
-                                       \r
-                               }\r
-                               if (queryComparator != null) {\r
-                                       Collections.sort(entityList, queryComparator);                          \r
-                               } else {\r
-                                       Collections.sort(entityList, new IdentifiableEntityComparator());\r
-                               }\r
-                               ((BulkEditorInput) element).setQuery(null);\r
-                       }\r
-               }\r
-               return entityList;\r
-       }\r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#create(java.lang.Object, java.lang.Object)\r
-        */\r
-       public boolean create(Object entity, Object element) {\r
-               logger.info("Create "  + entity);\r
-               return save(entity, element);\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#delete(java.lang.Object, java.lang.Object)\r
-        */\r
-       public boolean delete(Object entity, Object element) {\r
-               logger.info("Delete "  + entity);\r
-               if (entity instanceof ReferenceBase) {\r
-                       CdmStore.getReferenceService().delete((ReferenceBase) entity);\r
-               }\r
-               if (entity instanceof TaxonNameBase) {\r
-                       CdmStore.getNameService().delete((TaxonNameBase) entity);                       \r
-               }\r
-               if (entity instanceof AgentBase) {\r
-                       CdmStore.getAgentService().delete((AgentBase) entity);                  \r
-               }\r
-               return true;\r
-       }\r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#merge(java.lang.Object, java.lang.Object, java.lang.Object)\r
-        */\r
-       public boolean merge(Object entity, Object mergeTarget, Object element) {\r
-               logger.info("Merge "  + entity + " into " + mergeTarget);\r
-               if (entity instanceof ReferenceBase) {\r
-                       try {\r
-                               CdmStore.getCommonService().merge((ReferenceBase) mergeTarget, (ReferenceBase) entity, null);\r
-                       } catch (MergeException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-               return true;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#save(java.lang.Object, java.lang.Object)\r
-        */\r
-       public boolean save(Object entity, Object element) {\r
-               logger.info("Save "  + entity);\r
-               if (entity instanceof ReferenceBase) {\r
-                       CdmStore.getReferenceService().saveOrUpdate((ReferenceBase) entity);                    \r
-               }\r
-               if (entity instanceof TaxonNameBase) {\r
-                       CdmStore.getNameService().saveOrUpdate((TaxonNameBase) entity);                         \r
-               }\r
-               if (entity instanceof AgentBase) {\r
-                       CdmStore.getAgentService().saveOrUpdate((AgentBase) entity);                            \r
-               }\r
-               return true;\r
-       }\r
-}\r
index 0c333dc2de2eb3cdeca1fe00e6cc5bf5b463141a..080dab26f899e232014929e7e64ad8ab9c2994ce 100644 (file)
@@ -38,8 +38,8 @@ import org.eclipse.ui.swt.IFocusService;
 \r
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
 import eu.etaxonomy.cdm.api.service.config.impl.IdentifiableServiceConfiguratorImpl;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
-import eu.etaxonomy.taxeditor.model.Resources;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
+import eu.etaxonomy.taxeditor.preference.Resources;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -114,12 +114,12 @@ public class BulkEditorSearchComposite extends Composite {
        private void createSearchTextField() {\r
                text = new Text(this, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);\r
                text.setText(DEFAULT_TEXT);\r
-               text.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));\r
+               text.setForeground(BulkEditorUtil.getColor(Resources.SEARCH_VIEW_FOREGROUND));\r
                \r
                text.addFocusListener(new FocusListener() {\r
 \r
                        public void focusGained(FocusEvent e) {\r
-                               text.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOCUS));\r
+                               text.setForeground(BulkEditorUtil.getColor(Resources.SEARCH_VIEW_FOCUS));\r
                                if (DEFAULT_TEXT.equals(text.getText())) {\r
                                        text.setText("");\r
                                }\r
@@ -127,7 +127,7 @@ public class BulkEditorSearchComposite extends Composite {
 \r
                        public void focusLost(FocusEvent e) {\r
                                if (text.getText() == "") {\r
-                                       text.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));\r
+                                       text.setForeground(BulkEditorUtil.getColor(Resources.SEARCH_VIEW_FOREGROUND));\r
                                        text.setText(DEFAULT_TEXT);                     \r
                                    setSearchEnabled(false);            \r
                                } else {\r
@@ -181,8 +181,8 @@ public class BulkEditorSearchComposite extends Composite {
                if(!DEFAULT_TEXT.equals(searchString.trim()) && searchString.length() > 0){\r
                        // update query in IEditorInput\r
                        IEditorInput input = editor.getEditorInput();\r
-                       if (input instanceof BulkEditorInput) {\r
-                               ((BulkEditorInput) input).setQuery(new BulkEditorQuery(getSearchString(), getComparator()));\r
+                       if (input instanceof AbstractBulkEditorInput) {\r
+                               ((AbstractBulkEditorInput) input).setQuery(new BulkEditorQuery(getSearchString(), getComparator()));\r
                        }\r
                }\r
        }\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorUtil.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorUtil.java
new file mode 100644 (file)
index 0000000..0d8eea7
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.bulkeditor;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+/**
+ * @author n.hoffmann
+ * @created Mar 12, 2010
+ * @version 1.0
+ */
+public class BulkEditorUtil extends AbstractUtility{
+       private static final Logger logger = Logger.getLogger(BulkEditorUtil.class);
+       
+       /**
+        * Opens a new editor window with the given input
+        * 
+        * @param input
+        * @param editorId
+        * @return 
+        * @throws PartInitException
+        */
+       private static IEditorPart open(IEditorInput input, String editorId)
+                       throws PartInitException {
+               return getActivePage().openEditor(input, editorId);
+       }
+       
+       public static void openEmptyEditor(BulkEditorInputType inputType) throws PartInitException{
+               AbstractBulkEditorInput editorInput = AbstractBulkEditorInput.NewInstance(inputType);
+               open(editorInput, BulkEditor.ID);
+       }
+       
+       public static void openEditor(IdentifiableEntity entity) throws PartInitException{
+               Assert.isNotNull(entity, "Entity must not be null");
+               AbstractBulkEditorInput editorInput = AbstractBulkEditorInput.NewInstance(entity);
+               open(editorInput, BulkEditor.ID);
+       }
+}
index 4c5f6a098ad816a6ec95feb96833467020aaf76b..5cc179d8a57d819ee3df8c9951e75bbbd4aee8ab 100644 (file)
@@ -47,8 +47,7 @@ public class ReferenceCreator implements IEntityCreator<ReferenceBase> {
         * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityCreator#createEntity(java.lang.String)\r
         */\r
        public ReferenceBase createEntity(String text) {\r
-               // TODO configure default reference type\r
-               return createEntity(Book.class, text);\r
+               return createEntity(Generic.class, text);\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -56,6 +55,7 @@ public class ReferenceCreator implements IEntityCreator<ReferenceBase> {
         */\r
        public ReferenceBase createEntity(Object key, String text) {\r
                ReferenceBase reference = null;\r
+               \r
                // TODO replace w more generic method when cdmlib matures accordingly\r
                if  (ReferenceType.Article.getMessage().equals(key)) {\r
                        reference = Article.NewInstance();\r
@@ -107,7 +107,7 @@ public class ReferenceCreator implements IEntityCreator<ReferenceBase> {
                }\r
                if (reference == null) {\r
                        logger.warn("Reference type " + key + " not found. Creating reference with default type.");\r
-                       reference = Book.NewInstance();\r
+                       reference = Generic.NewInstance();\r
                }\r
                reference.setTitleCache(text);\r
                return reference;\r
index f04ddad130b4806520fad4441501f771b9b3c61e..f611adeea19dc4178d76c3d86e18c42c3dfa412e 100644 (file)
@@ -17,6 +17,9 @@ import org.apache.log4j.Logger;
 import org.eclipse.core.commands.IParameterValues;\r
 import org.eclipse.ui.IEditorInput;\r
 \r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
 import eu.etaxonomy.taxeditor.bulkeditor.input.AgentEditorInput;\r
 import eu.etaxonomy.taxeditor.bulkeditor.input.NameEditorInput;\r
 import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;\r
@@ -30,6 +33,57 @@ public class BulkEditorInputTypeValues implements IParameterValues {
        private static final Logger logger = Logger\r
                        .getLogger(BulkEditorInputTypeValues.class);\r
 \r
+       public enum BulkEditorInputType{\r
+               REFERENCE("Reference", ReferenceEditorInput.ID),\r
+               NAME("Name", NameEditorInput.ID),\r
+               AGENT("Authors and Author Teams", AgentEditorInput.ID);\r
+               \r
+               String id;\r
+               String label;\r
+               \r
+               BulkEditorInputType(String label, String id){\r
+                       this.id = id;\r
+                       this.label = label;\r
+               }\r
+               \r
+               public static BulkEditorInputType getById(String id){\r
+                       if(id.equals(REFERENCE.id)){\r
+                               return REFERENCE;\r
+                       }else if(id.equals(NAME.id)){\r
+                               return NAME;\r
+                       }else if(id.equals(AGENT.id)){\r
+                               return AGENT;\r
+                       }\r
+                       return null;\r
+               }\r
+               \r
+               public static BulkEditorInputType getByType(Class clazz){\r
+                       if (ReferenceBase.class.isAssignableFrom(clazz)) {\r
+                               return REFERENCE;\r
+                       }\r
+                       if (TaxonNameBase.class.isAssignableFrom(clazz)) {\r
+                               return NAME;\r
+                       }\r
+                       if (AgentBase.class.isAssignableFrom(clazz)) {\r
+                               return AGENT;\r
+                       }\r
+                       return null;\r
+               }\r
+               \r
+               public static BulkEditorInputType getByInput(IEditorInput input) {\r
+                       if (input instanceof ReferenceEditorInput) {\r
+                               return REFERENCE;\r
+                       }\r
+                       if (input instanceof NameEditorInput) {\r
+                               return NAME;\r
+                       }\r
+                       if (input instanceof AgentEditorInput) {\r
+                               return AGENT;\r
+                       }\r
+                       return null;\r
+               }\r
+       }\r
+       \r
        /* (non-Javadoc)\r
         * @see org.eclipse.core.commands.IParameterValues#getParameterValues()\r
         */\r
@@ -37,26 +91,10 @@ public class BulkEditorInputTypeValues implements IParameterValues {
                final Map values = new HashMap();\r
                \r
                // TODO user role determines which editor inputs are returned\r
-               values.put("Reference", ReferenceEditorInput.getID());\r
-               values.put("Name", NameEditorInput.getID());\r
-               values.put("Authors and Author Teams", AgentEditorInput.getID());\r
+               for (BulkEditorInputType inputType : BulkEditorInputType.values()){\r
+                       values.put(inputType.label, inputType.id);\r
+               }               \r
                \r
                return values;\r
        }\r
-\r
-       /**\r
-        * @param input\r
-        */\r
-       public String getLabelByInputInstance(IEditorInput input) {\r
-               if (input instanceof ReferenceEditorInput) {\r
-                       return "Reference";\r
-               }\r
-               if (input instanceof NameEditorInput) {\r
-                       return "Name";\r
-               }\r
-               if (input instanceof AgentEditorInput) {\r
-                       return "Authors and Author Teams";\r
-               }\r
-               return "";\r
-       }\r
 }\r
index c4914feb6f30410d8e319aaf164402caed169409..4883940078c51d9a3f2838144a88fc88c9838b31 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.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -34,8 +34,8 @@ public class BulkEditorPropertyTester extends PropertyTester {
                BulkEditor bulkEditor = (BulkEditor) receiver;\r
                if ("isMergingEnabled".equals(property)) {                      \r
                        IEditorInput input = bulkEditor.getEditorInput();\r
-                       if (input instanceof BulkEditorInput) {\r
-                               return ((BulkEditorInput) input).isMergingEnabled();\r
+                       if (input instanceof AbstractBulkEditorInput) {\r
+                               return ((AbstractBulkEditorInput) input).isMergingEnabled();\r
                        }\r
                }\r
 //             if (("isPublishFlagEditingEnabled").equals(property)) {\r
index 27ed2f66e48472f56b9ade58e58a268cb0db518f..8da95c914727aafc35a318e35fed649f2126fdd7 100644 (file)
@@ -19,9 +19,9 @@ import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;\r
 import org.eclipse.ui.menus.CommandContributionItem;\r
 import org.eclipse.ui.menus.CommandContributionItemParameter;\r
-import org.eclipse.ui.texteditor.GotoLineAction;\r
 \r
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
+import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -70,7 +70,7 @@ public class DeleteObjectContributionItem extends CompoundContributionItem {
        private String getEditorInputLabel(IWorkbenchWindow window) {\r
                IEditorInput input = window.getActivePage().getActiveEditor().getEditorInput();\r
                \r
-               BulkEditorInputTypeValues inputValues = new BulkEditorInputTypeValues();\r
-               return inputValues.getLabelByInputInstance(input);\r
+               BulkEditorInputType inputType = BulkEditorInputType.getByInput(input);\r
+               return (inputType != null) ? inputType.label : "";\r
        }\r
 }\r
index 60c6aa8f4a3e22b3d8f398a075534fe3f0a80adf..70e1ff2a80e86cff4c9e08928a32141862735f19 100644 (file)
@@ -20,26 +20,22 @@ import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 import org.eclipse.ui.handlers.IHandlerService;
 
-import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineDocumentProvider;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;
-import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
 /**
  * @author n.hoffmann
  * @created 17.04.2009
  * @version 1.0
  */
+@Deprecated // remove this
 public class DynamicNewObjectMenu extends CompoundContributionItem {
        private static final Logger logger = Logger
                        .getLogger(DynamicNewObjectMenu.class);
@@ -74,6 +70,7 @@ public class DynamicNewObjectMenu extends CompoundContributionItem {
                                                                                handlerService.executeCommand(IBulkEditorConstants.DYNAMIC_OPEN_OBJECT_ID, event);
                                                                        } catch (Exception e) {
                                                                                logger.error("Error executing command", e);
+                                                                               throw new RuntimeException("Error executing command", e);
                                                                        }
                                                                }                               
                                                        });
index a64de7097dd07b5c4fdff979291a65eb253183f2..d75f0bd14fbfea336d6c33c65fd9ea51d5568466 100644 (file)
@@ -28,7 +28,7 @@ import org.eclipse.ui.actions.CompoundContributionItem;
 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.bulkeditor.input.AbstractBulkEditorInput;\r
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
 \r
@@ -50,8 +50,8 @@ public class SetMarkerContributionItems extends CompoundContributionItem {
                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
+               if (editor.getEditorInput() instanceof AbstractBulkEditorInput) {\r
+                       AbstractBulkEditorInput input = (AbstractBulkEditorInput) editor.getEditorInput();              \r
                        for (final MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
                                if (input.isMarkerTypeEditingEnabled(markerType) && PreferencesUtil.getEditMarkerTypePreference(input, markerType)) {\r
                                        contributions.add(new ContributionItem() {\r
index 02511eb5bcffa940b375f56169afb9c45ecfd1b2..83691476c50615ba426cd54aff5d30d03b0b61ce 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
 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
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -45,7 +45,7 @@ public class MergeGroupHandler extends AbstractHandler {
                                \r
                IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
                IEditorInput input = editor.getEditorInput();\r
-               if (editor instanceof BulkEditor && input instanceof BulkEditorInput) {\r
+               if (editor instanceof BulkEditor && input instanceof AbstractBulkEditorInput) {\r
 \r
                        IDocumentProvider provider = ((BulkEditor) editor).getDocumentProvider();\r
                        LineAnnotationModel model = \r
index 62d200d482fed4d3b9bf04b3270a07b05883d6f4..90df2cbe504112f0ae6e780340b693158fe5c528 100644 (file)
@@ -17,7 +17,8 @@ import org.eclipse.ui.handlers.HandlerUtil;
 \r
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -31,10 +32,10 @@ public class OpenBulkEditorHandler extends AbstractHandler {
         * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
         */\r
        public Object execute(ExecutionEvent event) throws ExecutionException {\r
-               String inputType = event.getParameter(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID);\r
+               BulkEditorInputType inputType = BulkEditorInputType.getById(event.getParameter(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID));\r
                try {\r
                        HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().\r
-                                       openEditor(BulkEditorInput.NewInstance(inputType), BulkEditor.ID);\r
+                                       openEditor(AbstractBulkEditorInput.NewInstance(inputType), BulkEditor.ID);\r
                } catch (PartInitException e) {\r
                        new RuntimeException(e);\r
                        logger.error("Error opening bulk editor", e);\r
index c3860abadad3c67e622944db9b279d0f806d4886..e33c9cc47cd5de87ab3a66a1adc3f88ba61ddeb5 100644 (file)
@@ -28,8 +28,8 @@ import eu.etaxonomy.cdm.model.common.Marker;
 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
+import eu.etaxonomy.taxeditor.model.LineSelection;\r
 \r
 /**\r
  * @author p.ciardelli\r
index 6c68c95ff249ce61c69824e822558889678e50f7..d739d0b28a9d861a7640617925333b9d50b03108 100644 (file)
@@ -19,9 +19,9 @@ import org.eclipse.ui.handlers.HandlerUtil;
 \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
+import eu.etaxonomy.taxeditor.model.LineSelection;\r
 \r
 /**\r
  * @author p.ciardelli\r
index 6a217ee36350607a7f84bae368d1db88fe3acea0..e34e3f01131458c6f4d6d09752635e72844d1bd2 100644 (file)
@@ -24,7 +24,7 @@ import org.eclipse.ui.texteditor.IDocumentProvider;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;\r
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -41,7 +41,7 @@ public class SetMergeTargetHandler extends AbstractHandler {
                IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
                IEditorInput input = editor.getEditorInput();\r
                \r
-               if (editor instanceof AnnotatedLineEditor && input instanceof BulkEditorInput) {\r
+               if (editor instanceof AnnotatedLineEditor && input instanceof AbstractBulkEditorInput) {\r
                        \r
                        IDocumentProvider provider = ((AnnotatedLineEditor) editor).getDocumentProvider();\r
                        LineAnnotationModel model = \r
index 7c39a9ffd1f0ad17cd7bc4e3b43dbe5d21eac849..f5506aad8ef3228c4d401715de4ae553b6666b9a 100644 (file)
@@ -35,10 +35,9 @@ public class ShowReferencingObjectsHandler extends AbstractHandler {
                try {\r
                        ReferencingObjectsView view = (ReferencingObjectsView) HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().\r
                                                showView(ReferencingObjectsView.ID);\r
-                       view.updateReferencingObjects();\r
+//                     view.updateReferencingObjects();\r
                } catch (PartInitException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
+                       logger.error("PartInitException when updating referncing objects view", e);\r
                }\r
                return null;\r
        }\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java
new file mode 100644 (file)
index 0000000..c270f7c
--- /dev/null
@@ -0,0 +1,219 @@
+// $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.input;\r
+\r
+import java.beans.PropertyChangeSupport;\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.Comparator;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.IPersistableElement;\r
+\r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.strategy.merge.MergeException;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.IdentifiableEntityComparator;\r
+import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery;\r
+import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 25.06.2009\r
+ * @version 1.0\r
+ * @param <T>\r
+ */\r
+public abstract class AbstractBulkEditorInput<T extends IdentifiableEntity> extends PropertyChangeSupport implements IEditorInput, IEntityPersistenceService {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(AbstractBulkEditorInput.class);\r
+       /**\r
+        * \r
+        */\r
+       private static final long serialVersionUID = 416414530232743735L;\r
+       private String mode;\r
+       private UUID entityUuid;\r
+\r
+       /**\r
+        * @param sourceBean\r
+        */\r
+       public AbstractBulkEditorInput(Object sourceBean) {\r
+               super(sourceBean);\r
+       }\r
+       \r
+       public static final String QUERY_CHANGED = "query_changed";\r
+       \r
+       static public AbstractBulkEditorInput NewInstance(BulkEditorInputType inputType) {\r
+                               \r
+               switch (inputType) {\r
+               case REFERENCE:\r
+                       return new ReferenceEditorInput();\r
+               case NAME:\r
+                       return new NameEditorInput();\r
+               case AGENT:\r
+                       return new AgentEditorInput();\r
+               default:\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       public static AbstractBulkEditorInput NewInstance(IdentifiableEntity entity) {\r
+               \r
+               \r
+               BulkEditorInputType inputType = BulkEditorInputType.getByType(entity.getClass());\r
+               \r
+               AbstractBulkEditorInput editorInput = NewInstance(inputType);\r
+               \r
+               editorInput.setEntityUuid(entity.getUuid());\r
+               \r
+               return editorInput;\r
+       }\r
+       \r
+       /**\r
+        * Queries the service for entities that match the criterias defined in the given \r
+        * search configurator\r
+        * \r
+        * @param configurator\r
+        * @return\r
+        */\r
+       public List<T> listEntities(){\r
+               if(getEntityUuid() != null){\r
+                       List<T> entityList = new ArrayList<T>();\r
+                       T entity = loadEntity(getEntityUuid());\r
+                       entityList.add(entity);\r
+                       return entityList;\r
+               }\r
+               \r
+               if(query != null){\r
+                       \r
+                       String queryString = query.getSearchString();\r
+                       IIdentifiableEntityServiceConfigurator configurator = query.getSearchConfigurator();\r
+                       Comparator queryComparator = (query.getComparator() != null) ? query.getComparator() : new IdentifiableEntityComparator();\r
+                       \r
+                       List<T> entityList = listEntities(configurator);\r
+                       \r
+                       Collections.sort(entityList, queryComparator);                  \r
+                       \r
+                       // reset query\r
+                       setQuery(null);\r
+                       \r
+                       return entityList;\r
+               }\r
+               return null;\r
+       }\r
+       \r
+       protected abstract List<T> listEntities(IIdentifiableEntityServiceConfigurator configurator);\r
+       \r
+       protected abstract T loadEntity(UUID entityUuid);\r
+\r
+       private void setEntityUuid(UUID entityUuid){\r
+               this.entityUuid = entityUuid;\r
+       }\r
+       \r
+       public UUID getEntityUuid() {\r
+               return entityUuid;\r
+       }\r
+\r
+       private IBulkEditorQuery query;\r
+                       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.IEditorInput#exists()\r
+        */\r
+       public boolean exists() {\r
+               // TODO Auto-generated method stub\r
+               return false;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.IEditorInput#getImageDescriptor()\r
+        */\r
+       public ImageDescriptor getImageDescriptor() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.IEditorInput#getPersistable()\r
+        */\r
+       public IPersistableElement getPersistable() {\r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)\r
+        */\r
+       @SuppressWarnings("unchecked")\r
+       public Object getAdapter(Class adapter) {\r
+               return null;\r
+       }\r
+\r
+       /**\r
+        * @param bulkEditorQuery\r
+        */\r
+       public void setQuery(IBulkEditorQuery bulkEditorQuery) {\r
+                               \r
+               this.query = bulkEditorQuery;\r
+               \r
+               if (query != null) {\r
+                       firePropertyChange(QUERY_CHANGED, null, null);\r
+               }\r
+       }\r
+       \r
+       public IBulkEditorQuery getQuery() {\r
+               return query;\r
+       }\r
+       \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
+       \r
+       public boolean isSingleEntityMode(){\r
+               return getEntityUuid() != null;\r
+       }\r
+       \r
+       /*\r
+        * (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#merge(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
+        */\r
+       public boolean merge(Object entity, Object mergeTarget) {\r
+               logger.info("Merge "  + entity + " into " + mergeTarget);\r
+               if (entity instanceof ReferenceBase) {\r
+                       try {\r
+                               CdmStore.getCommonService().merge((ReferenceBase) mergeTarget, (ReferenceBase) entity, null);\r
+                       } catch (MergeException e) {\r
+                               logger.error("Problems merging objects", e);\r
+                       }\r
+               }\r
+               return true;\r
+       };\r
+       \r
+       /*\r
+        * (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#create(eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
+        */\r
+       public boolean create(Object entity) {\r
+               return save(entity);            \r
+       };\r
+}
\ No newline at end of file
index f8d3d11f7766310b920dce9f873a68be1af649fa..39f863122c6ac9ca3552be30bd7df893c6d9fb60 100644 (file)
@@ -9,13 +9,21 @@
 */\r
 package eu.etaxonomy.taxeditor.bulkeditor.input;\r
 \r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
 \r
 /**\r
  * @author p.ciardelli\r
  * @created 25.06.2009\r
  * @version 1.0\r
  */\r
-public class AgentEditorInput extends BulkEditorInput {\r
+public class AgentEditorInput extends AbstractBulkEditorInput<AgentBase> {\r
 \r
        public static final String ID = "bulkeditor.input.author";\r
        \r
@@ -52,7 +60,7 @@ public class AgentEditorInput extends BulkEditorInput {
        /**\r
         * @return\r
         */\r
-       public static BulkEditorInput getInstance() {\r
+       public static AbstractBulkEditorInput getInstance() {\r
                if (instance == null) {\r
                        instance = new AgentEditorInput();\r
                }\r
@@ -66,4 +74,23 @@ public class AgentEditorInput extends BulkEditorInput {
        public boolean isMergingEnabled() {\r
                return false;\r
        }\r
+\r
+       @Override\r
+       public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {\r
+               return CdmStore.findTeamOrPersons(configurator);\r
+       }\r
+\r
+       @Override\r
+       public AgentBase loadEntity(UUID uuid) {\r
+               List<String> propertyPaths = Arrays.asList(new String[]{}); \r
+               return CdmStore.getAgentService().load(uuid, propertyPaths);\r
+       }\r
+\r
+       public boolean delete(Object entity) {\r
+               return CdmStore.getAgentService().delete((AgentBase) entity) != null;                   \r
+       }\r
+\r
+       public boolean save(Object entity) {\r
+               return CdmStore.getAgentService().saveOrUpdate((AgentBase) entity) != null;\r
+       }\r
 }
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInput.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInput.java
deleted file mode 100644 (file)
index 299e59b..0000000
+++ /dev/null
@@ -1,115 +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.input;\r
-\r
-import java.beans.PropertyChangeSupport;\r
-\r
-import org.eclipse.jface.resource.ImageDescriptor;\r
-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
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- * @param <T>\r
- */\r
-abstract public class BulkEditorInput extends PropertyChangeSupport implements IEditorInput {\r
-\r
-       /**\r
-        * @param sourceBean\r
-        */\r
-       public BulkEditorInput(Object sourceBean) {\r
-               super(sourceBean);\r
-       }\r
-       \r
-       public static final String QUERY_CHANGED = "query_changed";\r
-       \r
-       static public BulkEditorInput NewInstance(String inputType) {\r
-                               \r
-               if (ReferenceEditorInput.getID().equals(inputType)) {\r
-                       return new ReferenceEditorInput();\r
-               }\r
-\r
-               if (NameEditorInput.getID().equals(inputType)) {\r
-                       return new NameEditorInput();\r
-               }\r
-\r
-               if (AgentEditorInput.getID().equals(inputType)) {\r
-                       return new AgentEditorInput();\r
-               }\r
-               \r
-               return null;\r
-       }\r
-\r
-       private IBulkEditorQuery query;\r
-                       \r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.ui.IEditorInput#exists()\r
-        */\r
-       public boolean exists() {\r
-               // TODO Auto-generated method stub\r
-               return false;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.ui.IEditorInput#getImageDescriptor()\r
-        */\r
-       public ImageDescriptor getImageDescriptor() {\r
-               // TODO Auto-generated method stub\r
-               return null;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.ui.IEditorInput#getPersistable()\r
-        */\r
-       public IPersistableElement getPersistable() {\r
-               return null;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)\r
-        */\r
-       @SuppressWarnings("unchecked")\r
-       public Object getAdapter(Class adapter) {\r
-               return null;\r
-       }\r
-\r
-       /**\r
-        * @param bulkEditorQuery\r
-        */\r
-       public void setQuery(IBulkEditorQuery bulkEditorQuery) {\r
-                               \r
-               this.query = bulkEditorQuery;\r
-               \r
-               if (query != null) {\r
-                       firePropertyChange(QUERY_CHANGED, null, null);\r
-               }\r
-       }\r
-       \r
-       public IBulkEditorQuery getQuery() {\r
-               return query;\r
-       }\r
-       \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 bf3850c92b418b162c15251eae99ae3bb89ae02f..1c9486f798cdf040ff44a793a3e56a69a4652e54 100644 (file)
 \r
 package eu.etaxonomy.taxeditor.bulkeditor.input;\r
 \r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
 import org.apache.log4j.Logger;\r
 \r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
 /**\r
  * @author p.ciardelli\r
  * @created 20.08.2009\r
  * @version 1.0\r
  */\r
-public class NameEditorInput extends BulkEditorInput {\r
+public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {\r
        private static final Logger logger = Logger\r
                        .getLogger(NameEditorInput.class);\r
        \r
@@ -32,7 +40,7 @@ public class NameEditorInput extends BulkEditorInput {
 \r
        public static final String ID = "bulkeditor.input.name";\r
        \r
-       public static BulkEditorInput getInstance() {\r
+       public static AbstractBulkEditorInput getInstance() {\r
                if (instance == null) {\r
                        instance = new NameEditorInput();\r
                }\r
@@ -67,4 +75,24 @@ public class NameEditorInput extends BulkEditorInput {
        public boolean isMergingEnabled() {\r
                return false;\r
        }\r
+\r
+       @Override\r
+       public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {\r
+               return CdmStore.findNames(configurator);\r
+       }\r
+\r
+       @Override\r
+       public TaxonNameBase loadEntity(UUID uuid) {\r
+               List<String> propertyPaths = Arrays.asList(new String[]{}); \r
+               return CdmStore.getNameService().load(uuid, propertyPaths);\r
+       }\r
+\r
+       public boolean delete(Object entity) {\r
+               return CdmStore.getNameService().delete((TaxonNameBase) entity) != null;\r
+       }\r
+\r
+       public boolean save(Object entity) {\r
+               return CdmStore.getNameService().saveOrUpdate((TaxonNameBase) entity) != null;\r
+       }\r
+\r
 }\r
index b21b48cab0f54ab155cf5330156004350befea52..8ee2eb8a71f92406124e68f902da622992f4cc67 100644 (file)
@@ -9,7 +9,14 @@
 */\r
 package eu.etaxonomy.taxeditor.bulkeditor.input;\r
 \r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
 \r
 /**\r
@@ -17,7 +24,12 @@ import eu.etaxonomy.cdm.model.common.MarkerType;
  * @created 25.06.2009\r
  * @version 1.0\r
  */\r
-public class ReferenceEditorInput extends BulkEditorInput {\r
+public class ReferenceEditorInput extends AbstractBulkEditorInput<ReferenceBase> {\r
+\r
+       /**\r
+        * \r
+        */\r
+       private static final long serialVersionUID = 3806243517765126749L;\r
 \r
        public static final String ID = "bulkeditor.input.reference";\r
        \r
@@ -54,7 +66,7 @@ public class ReferenceEditorInput extends BulkEditorInput {
        /**\r
         * @return\r
         */\r
-       public static BulkEditorInput getInstance() {\r
+       public static AbstractBulkEditorInput getInstance() {\r
                if (instance == null) {\r
                        instance = new ReferenceEditorInput();\r
                }\r
@@ -79,4 +91,25 @@ public class ReferenceEditorInput extends BulkEditorInput {
                }\r
                return super.isMarkerTypeEditingEnabled(markerType);\r
        }\r
+\r
+       // Entity persistence\r
+       \r
+       @Override\r
+       public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {\r
+               return CdmStore.findReferences(configurator);\r
+       }\r
+\r
+       @Override\r
+       public ReferenceBase loadEntity(UUID entityUuid) {\r
+               List<String> propertyPaths = Arrays.asList(new String[]{"*", "inReference.*", "authorTeam.*"}); \r
+               return CdmStore.getReferenceService().load(entityUuid, propertyPaths);\r
+       }\r
+\r
+       public boolean delete(Object entity) {\r
+               return CdmStore.getReferenceService().delete((ReferenceBase) entity) != null;\r
+       }\r
+\r
+       public boolean save(Object entity) {\r
+               return CdmStore.getReferenceService().saveOrUpdate((ReferenceBase) entity) != null;\r
+       }\r
 }
\ No newline at end of file
index 23cd12913eea7ad94ce78491bb48192e1dcc949d..2c04ff8c5e5079e0a31d318d79da41066e53c142 100644 (file)
@@ -27,6 +27,7 @@ public class TaxeditorBulkeditorPlugin extends AbstractUIPlugin {
        public void start(BundleContext context) throws Exception {\r
                super.start(context);\r
                plugin = this;          \r
+               \r
        }\r
 \r
        /*\r
index ba8ee8248ab83120d08848ae2892272ec8ed3ea0..0dcdb1bf0ec66ac25540919694ec09594a8c5cee 100644 (file)
@@ -15,31 +15,35 @@ import java.util.ArrayList;
 import java.util.Collections;\r
 import java.util.Comparator;\r
 import java.util.List;\r
+import java.util.Set;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.core.runtime.jobs.Job;\r
 import org.eclipse.jface.operation.IRunnableWithProgress;\r
 import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
+import org.eclipse.jface.viewers.StructuredSelection;\r
 import org.eclipse.jface.viewers.TableViewer;\r
 import org.eclipse.jface.viewers.TableViewerColumn;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.ui.IEditorPart;\r
-import org.eclipse.ui.IWorkbench;\r
-import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.ISelectionListener;\r
+import org.eclipse.ui.ISelectionService;\r
+import org.eclipse.ui.IWorkbenchPart;\r
 import org.eclipse.ui.part.ViewPart;\r
-import org.eclipse.ui.progress.IProgressService;\r
 \r
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;\r
 import eu.etaxonomy.taxeditor.model.DescriptionHelper;\r
-import eu.etaxonomy.taxeditor.propertysheet.AgentBasePropertySource;\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
-import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
+import eu.etaxonomy.taxeditor.model.LineSelection;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
 /**\r
@@ -47,17 +51,20 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created 08.07.2009\r
  * @version 1.0\r
  */\r
-public class ReferencingObjectsView extends ViewPart {\r
+public class ReferencingObjectsView extends ViewPart implements ISelectionListener{\r
        private static final Logger logger = Logger\r
                        .getLogger(ReferencingObjectsView.class);\r
 \r
-       public static final String ID = "taxeditor-bulkeditor.referencingobjectsview";\r
-\r
-       private List<CdmBase> referencingObjects;\r
-       private CdmBase referencedObject;\r
+       public static final String ID = "eu.etaxonomy.taxeditor.bulkeditor.referencingobjectsview";\r
        \r
        private TableViewer referencingObjectsViewer;\r
 \r
+       private ISelectionService selectionService;\r
+\r
+       private CdmBase referencedObject;\r
+\r
+       private ArrayList<CdmBase> referencingObjects;\r
+\r
        \r
        public ReferencingObjectsView() {}\r
        \r
@@ -66,6 +73,9 @@ public class ReferencingObjectsView extends ViewPart {
         */\r
        @Override\r
        public void createPartControl(Composite parent) {\r
+               selectionService = getSite().getWorkbenchWindow().getSelectionService();\r
+               selectionService.addSelectionListener(this);\r
+               \r
                createReferencingObjectsViewer(parent);\r
        }\r
 \r
@@ -111,40 +121,61 @@ public class ReferencingObjectsView extends ViewPart {
        /**\r
         * \r
         */\r
-       public void updateReferencingObjects() {\r
-        IEditorPart editor = getSite().getPage().getActiveEditor();\r
-        ISelection selection = editor.getEditorSite().getSelectionProvider()\r
-                                     .getSelection();\r
-\r
-        if ((selection != null) && selection instanceof LineSelection) {\r
-               final Object entity = ((IStructuredSelection) selection).getFirstElement();\r
+       public void updateReferencingObjects(final IdentifiableEntity entity) {\r
+//        IEditorPart editor = getSite().getPage().getActiveEditor();\r
+//        ISelection selection = editor.getEditorSite().getSelectionProvider()\r
+//                                     .getSelection();\r
+//\r
+//        if ((selection != null) && selection instanceof LineSelection) {\r
+//             final Object entity = ((IStructuredSelection) selection).getFirstElement();\r
                \r
-                       IWorkbench wb = PlatformUI.getWorkbench();\r
-                       IProgressService ps = wb.getProgressService();\r
-                       try {\r
-                               ps.busyCursorWhile(new IRunnableWithProgress() {\r
-                                       public void run(IProgressMonitor pm) {\r
-                                               doUpdateReferencingObjects(entity);\r
-                                       }\r
-                               });\r
-                       } catch (InvocationTargetException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
-                       } catch (InterruptedException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
+               Job job = new Job("Update Referencing Objects") {\r
+                       \r
+                       @Override\r
+                       protected IStatus run(IProgressMonitor monitor) {\r
+                               monitor.beginTask("Calculating referencing objects", 10);\r
+                               ConversationHolder conversation = CdmStore.createConversation();\r
+                               conversation.bind();\r
+                               monitor.worked(3);\r
+                               doUpdateReferencingObjects(entity);\r
+                               monitor.done();\r
+                               conversation.close();\r
+                               return Status.OK_STATUS;\r
                        }\r
-        }\r
+               };\r
+       \r
+       IRunnableWithProgress runnable = new IRunnableWithProgress() {\r
+                       \r
+                       public void run(IProgressMonitor monitor) throws InvocationTargetException,\r
+                                       InterruptedException {\r
+                               monitor.beginTask("Calculating referencing objects", 10);\r
+                               ConversationHolder conversation = CdmStore.createConversation();\r
+                               conversation.bind();\r
+                               monitor.worked(3);\r
+                               doUpdateReferencingObjects(entity);\r
+                               monitor.done();\r
+                               conversation.close();\r
+                       }\r
+               };\r
+               \r
+//                     BulkEditorUtil.busyCursorWhile(runnable);\r
+                       \r
+//                     BulkEditorUtil.runAsynchroneously(runnable);\r
+                       \r
+               job.schedule();\r
+                       \r
                updateView();\r
        }\r
 \r
        private void doUpdateReferencingObjects(Object entity) {\r
-               CdmStore.NewTransactionalConversation().bind();\r
         try {\r
-               referencedObject = getReferencedObject(entity);\r
-               if (referencedObject != null) {\r
-                       referencingObjects = new ArrayList<CdmBase>(CdmStore.getCommonService().getReferencingObjects(referencedObject));\r
-                       Collections.sort(referencingObjects, new ReferencingClassComparator());\r
+               if(entity instanceof CdmBase){\r
+                       referencedObject = (CdmBase) entity;\r
+                       Set<CdmBase> setOfReferencingObjects = CdmStore.getCommonService().getReferencingObjects(referencedObject);\r
+                       \r
+                       referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);\r
+                       \r
+                       Collections.sort(referencingObjects, new ReferencingClassComparator());\r
                }\r
         } catch (Exception e) {\r
             logger.error("Error retrieving referencing objects", e);\r
@@ -168,7 +199,6 @@ public class ReferencingObjectsView extends ViewPart {
                                return classCompare;\r
                        }\r
                }\r
-               \r
        }\r
        \r
        /**\r
@@ -178,20 +208,32 @@ public class ReferencingObjectsView extends ViewPart {
                referencingObjectsViewer.setInput(referencingObjects);\r
                setContentDescription("'" + referencedObject + "' is referenced by:");\r
        }\r
-       \r
-       public CdmBase getReferencedObject(Object entity) {\r
-               if (entity instanceof ReferencePropertySource) {\r
-                       return ((ReferencePropertySource) entity).getReference();\r
+\r
+       public void selectionChanged(IWorkbenchPart part, ISelection selection) {\r
+               if(! (part instanceof BulkEditor)){\r
+                       return;\r
                }\r
-               if (entity instanceof NonViralNamePropertySource) {\r
-                       return ((NonViralNamePropertySource) entity).getName();\r
+               \r
+               if(! (selection instanceof LineSelection)){\r
+                       return;\r
                }\r
-               if (entity instanceof AuthorTeamPropertySource) {\r
-                       return ((AuthorTeamPropertySource) entity).getAuthorTeam();                     \r
+               LineSelection lineSelection = (LineSelection) selection;\r
+               \r
+               if(lineSelection.size() != 1){\r
+                       return;\r
                }\r
-               if (entity instanceof PersonPropertySource) {\r
-                       return ((PersonPropertySource) entity).getPerson();\r
+                       \r
+               if(! (lineSelection.getFirstElement() instanceof IdentifiableEntity)){\r
+                       return;\r
                }\r
-               return null;\r
+               \r
+               updateReferencingObjects((IdentifiableEntity) lineSelection.getFirstElement());\r
        }\r
+       \r
+       @Override\r
+       public void dispose() {\r
+               selectionService.removePostSelectionListener(this);\r
+               super.dispose();\r
+       }\r
+       \r
 }\r