From: Patric Plitzner
Date: Thu, 26 Feb 2015 10:58:30 +0000 (+0000)
Subject: - added context menu optio to create a media specimen with an existing media (fixes...
X-Git-Tag: 3.6.0~202
X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/4a703122a838419dc06c765e60ff624fb5fe35a7
- added context menu optio to create a media specimen with an existing media (fixes #2385)
---
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java
index 2a74174c3..782bd413d 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java
@@ -29,6 +29,7 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
/**
* Context menu for the creation of derivates in the derivate hierarchy.
@@ -97,10 +98,60 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
return contributionItems;
}
- private void createMenuItem(Menu menu, String menuLabel, TreeNode selectedNode, Class> childClass, SpecimenOrObservationType specimenType, DerivationEventType derivationEventType) {
- MenuItem menuItem = new MenuItem(menu, SWT.NONE);
- menuItem.setText(menuLabel);
- menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType, derivationEventType));
+ private void createMenuItem(Menu menu, String menuLabel, final TreeNode selectedNode, Class> childClass, final SpecimenOrObservationType specimenType, final DerivationEventType derivationEventType) {
+ if(specimenType.equals(SpecimenOrObservationType.Media)){
+ //media submenu
+ MenuItem mediaItem = new MenuItem(menu, SWT.CASCADE);
+ mediaItem.setText("Media...");
+ Menu mediaMenu = new Menu(menu);
+ mediaItem.setMenu(mediaMenu);
+
+ //media specimen menu
+ MenuItem menuItem = new MenuItem(mediaMenu, SWT.NONE);
+ menuItem.setText(menuLabel);
+ menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType, derivationEventType));
+
+ //existing media menu
+ MenuItem existingMediaItem = new MenuItem(mediaMenu, SWT.NONE);
+ existingMediaItem.setText("Media Specimen with existing media");
+ existingMediaItem.addSelectionListener(new SelectionAdapter() {
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ //select media
+ Media media = MediaSelectionDialog.select(AbstractUtility.getShell(), null, null);
+ //create MediaSpecimen
+ MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specimenType);
+ mediaSpecimen.setMediaSpecimen(media);
+
+ //attach to parent
+ if(selectedNode.getValue() instanceof SpecimenOrObservationBase){
+ SpecimenOrObservationBase> specimenOrObservationBase = (SpecimenOrObservationBase>)selectedNode.getValue();
+
+ specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, mediaSpecimen, derivationEventType));
+ mediaSpecimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
+ mediaSpecimen.getTitleCache(); //update title cache
+ }
+
+ //refresh view
+ DerivateView derivateView = null;
+ if(AbstractUtility.getActivePart() instanceof DerivateView){
+ derivateView = (DerivateView) AbstractUtility.getActivePart();
+ }
+ if(derivateView!=null){
+ derivateView.getConversationHolder().commit();
+ derivateView.refreshTree(mediaSpecimen);
+ }
+ }
+ });
+ }
+ else{
+ MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+ menuItem.setText(menuLabel);
+ menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType, derivationEventType));
+ }
}
private class WidgetSelectionListener extends SelectionAdapter{