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{