Add support for "Open in..." for taxon association detail view
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 24 Aug 2016 08:27:04 +0000 (10:27 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 24 Aug 2016 08:27:19 +0000 (10:27 +0200)
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenSpecimenEditorForTypeSpecimenHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailElement.java

index 0bb691ff25cab3f3fe257f41f159fa93d724f4ee..3ef7f17258296aacef53ee1647b2371160e0478f 100644 (file)
             id="eu.etaxonomy.taxeditor.editor.derivative.toggleLinkWithTaxonSelection"
             name="%command.name.TOGGLE_LINK_WITH_TAXON_SELECTION">
       </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.editor.handler.defaultHandler.DefaultOpenSpecimenEditorForTypeSpecimenHandler"
+            id="eu.etaxonomy.taxeditor.openSpecimenEditorForTypeSpecimen"
+            name="Open specimen editor for type specimen">
+      </command>
         
    </extension>
    <extension
             selection="eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode"
             viewerName="%viewCommandMapping.viewerName.CHECKLIST_EDITOR">
       </viewCommandMapping>
+      <viewCommandMapping
+            commandId="eu.etaxonomy.taxeditor.openSpecimenEditorForTypeSpecimen"
+            selection="eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation"
+            viewerName="Specimen Editor">
+      </viewCommandMapping>
     </extension>
 </plugin>
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenSpecimenEditorForTypeSpecimenHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenSpecimenEditorForTypeSpecimenHandler.java
new file mode 100644 (file)
index 0000000..3cbc0a4
--- /dev/null
@@ -0,0 +1,32 @@
+package eu.etaxonomy.taxeditor.editor.handler.defaultHandler;
+import java.util.UUID;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
+import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+
+public class DefaultOpenSpecimenEditorForTypeSpecimenHandler extends
+               DefaultOpenHandlerBase<SpecimenTypeDesignation> {
+
+       @Override
+       protected SpecimenTypeDesignation getEntity(UUID uuid) {
+               return CdmStore.getCommonService().find(SpecimenTypeDesignation.class, uuid);
+       }
+
+       @Override
+       protected void open(ExecutionEvent event, SpecimenTypeDesignation entity) {
+        try {
+            EditorUtil.open(new DerivateViewEditorInput(entity.getUuid()));
+        } catch (PartInitException e) {
+            MessagingUtils.error(DefaultOpenSpecimenEditorForTypeSpecimenHandler.class, "Derivative Editor could not be opened", e);
+        }              
+       }
+
+}
index 95dc3613ac66ba117a10df5ae58692a96874bb74..994e326d6d3f18b1bf89d7e2375d80bfff4cadf8 100644 (file)
@@ -30,6 +30,7 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
@@ -87,6 +88,7 @@ public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<Deri
             //TODO add context menu for deleting associations
             //context menu
             Menu menu = new Menu(styledTextWidget);
+            //copy menu
             MenuItem copyItem = new MenuItem(menu, SWT.PUSH);
             copyItem.setText("Copy");
             copyItem.addSelectionListener(new SelectionListener() {
@@ -97,11 +99,27 @@ public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<Deri
                     Clipboard clipboard = new Clipboard(styledTextWidget.getDisplay());
                     clipboard.setContents(data, new Transfer[]{TextTransfer.getInstance()});
                 }
-
                 @Override
                 public void widgetDefaultSelected(SelectionEvent e) {
                 }
             });
+            //"Open in..." menu
+            MenuItem openInItem = new MenuItem(menu, SWT.PUSH);
+            openInItem.setText("Open");
+            if(cdmBase.isInstanceOf(SpecimenTypeDesignation.class)){
+               openInItem.setData(HibernateProxyHelper.deproxy(cdmBase, SpecimenTypeDesignation.class));
+            }
+            openInItem.setData(cdmBase);
+            openInItem.addSelectionListener(new SelectionListener() {
+               
+               @Override
+               public void widgetSelected(SelectionEvent e) {
+                       new CdmViewerChooser(TaxonAssociationDetailElement.this.getLayoutComposite().getShell()).chooseViewer(e.widget.getData());
+               }
+               @Override
+               public void widgetDefaultSelected(SelectionEvent e) {
+               }
+            });
             styledTextWidget.setMenu(menu);
         }
     }