ref #5616 "Open in bulke editor" for taxa in taxon search view
authorPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 8 Aug 2016 14:25:29 +0000 (16:25 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 8 Aug 2016 14:25:29 +0000 (16:25 +0200)
eu.etaxonomy.taxeditor.bulkeditor/plugin.xml
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/defaultHandler/OpenBulkEditorForIdentifiableEntity.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerContextMenu.java

index 9d2bf6586965827cbd470531f0bde97a56cf50c0..f72a7b25eb896ba15ad30bbd8d1844f702ce14bd 100644 (file)
@@ -99,8 +99,8 @@
             </visibleWhen>
          </menu>
          <separator
-               name="taxeditor-bulkeditor.separator4"\r
-               visible="true">\r
+               name="taxeditor-bulkeditor.separator4"
+               visible="true">
          </separator>
          <command
                commandId="bulkeditor.commands.setmergetarget"
                </reference>
             </visibleWhen>
          </command>
-         <separator\r
-               name="eu.etaxonomy.taxeditor.bulkeditor.separator1"\r
-               visible="true">\r
-         </separator>\r
+         <separator
+               name="eu.etaxonomy.taxeditor.bulkeditor.separator1"
+               visible="true">
+         </separator>
          <command
                commandId="eu.etaxonomy.taxeditor.bulkeditor.convertTeam2Person"
                label="%command.label.5"
             id="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForTaxonNode"
             name="%command.name.OPEN_BULK_EDITOR_FOR_TAXON_NODE">
       </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.defaultHandler.OpenBulkEditorForIdentifiableEntity"
+            id="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity"
+            name="Open bulk editor for identifiable entity">
+         <commandParameter
+               id="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity.uuid"
+               name="Identifiable Entity UUID"
+               optional="true"
+               typeId="eu.etaxonomy.taxeditor.uuidParameterType">
+         </commandParameter>
+      </command>
       <!--command
             defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.NewEntityHandler"
             id="eu.etaxonomy.taxeditor.bulkeditor.command.new"
             selection="eu.etaxonomy.cdm.model.taxon.TaxonNode"
             viewerName="%viewCommandMapping.viewerName.BULK_EDITOR">
       </viewCommandMapping>
+      <viewCommandMapping
+            commandId="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity"
+            selection="eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache"
+            viewerName="%viewCommandMapping.viewerName.BULK_EDITOR">
+      </viewCommandMapping>
+      <viewCommandMapping
+            commandId="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity"
+            selection="eu.etaxonomy.cdm.model.common.IdentifiableEntity"
+            viewerName="%viewCommandMapping.viewerName.BULK_EDITOR">
+      </viewCommandMapping>
    </extension>
 <!-- start set marker -->
 
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/defaultHandler/OpenBulkEditorForIdentifiableEntity.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/defaultHandler/OpenBulkEditorForIdentifiableEntity.java
new file mode 100644 (file)
index 0000000..6910f3d
--- /dev/null
@@ -0,0 +1,31 @@
+package eu.etaxonomy.taxeditor.bulkeditor.handler.defaultHandler;
+
+import java.util.UUID;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
+import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class OpenBulkEditorForIdentifiableEntity extends DefaultOpenHandlerBase<IdentifiableEntity> {
+
+       @Override
+       protected IdentifiableEntity getEntity(UUID uuid) {
+               return CdmStore.getCommonService().find(IdentifiableEntity.class, uuid);
+       }
+
+       @Override
+       protected void open(ExecutionEvent event, IdentifiableEntity entity) {
+               try {
+                       BulkEditorUtil.openEditor(entity);
+               } catch (PartInitException e) {
+            MessagingUtils.error(this.getClass(), "Bulk Editor could not be opened for "+entity, e);
+               }
+       }
+
+
+}
index 13591957a9a668dfe9d63e7c16aae24fe1843f9f..b73d604d5bf7fc35156d3777c4cff8a9dcb89d02 100644 (file)
@@ -22,12 +22,8 @@ import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 import org.eclipse.ui.handlers.IHandlerService;
 
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.Messages;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
@@ -98,14 +94,7 @@ public class CdmViewerContextMenu extends CompoundContributionItem {
             Map<String, UUID> params = new HashMap<String, UUID>();
             //for generic UuidAndTitleCache objects try to load the object
             if (selectedObject instanceof UuidAndTitleCache){
-                UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache)selectedObject;
-                Class type = uuidAndTitleCache.getType();
-                if(type == Taxon.class || type == Synonym.class){
-                    selectedObject = CdmStore.getService(ITaxonService.class).load(uuidAndTitleCache.getUuid());
-                }
-                else if(SpecimenOrObservationBase.class.isAssignableFrom(type)){
-                    selectedObject = CdmStore.getService(IOccurrenceService.class).load(uuidAndTitleCache.getUuid());
-                }
+                selectedObject = CdmStore.getCommonService().find(CdmBase.class, ((UuidAndTitleCache)selectedObject).getUuid());
             }
             if(selectedObject instanceof ICdmBase){
                 params.put(command.getId()+".uuid", ((ICdmBase) selectedObject).getUuid()); //$NON-NLS-1$