1 package eu
.etaxonomy
.taxeditor
.editor
.view
.derivate
;
3 import org
.eclipse
.jface
.action
.ContributionItem
;
4 import org
.eclipse
.jface
.action
.IContributionItem
;
5 import org
.eclipse
.jface
.viewers
.ISelection
;
6 import org
.eclipse
.jface
.viewers
.TreeSelection
;
7 import org
.eclipse
.swt
.SWT
;
8 import org
.eclipse
.swt
.events
.SelectionEvent
;
9 import org
.eclipse
.swt
.events
.SelectionListener
;
10 import org
.eclipse
.swt
.widgets
.Menu
;
11 import org
.eclipse
.swt
.widgets
.MenuItem
;
12 import org
.eclipse
.ui
.IWorkbenchPart
;
13 import org
.eclipse
.ui
.IWorkbenchWindow
;
14 import org
.eclipse
.ui
.PlatformUI
;
15 import org
.eclipse
.ui
.actions
.CompoundContributionItem
;
17 import eu
.etaxonomy
.cdm
.api
.facade
.DerivedUnitFacadeCacheStrategy
;
18 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
19 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEventType
;
20 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
21 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
22 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
23 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationType
;
24 import eu
.etaxonomy
.taxeditor
.model
.AbstractUtility
;
27 * Context menu for the creation of sub-derivates.
30 public class CreateDerivateContextMenu
extends CompoundContributionItem
{
33 * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
36 protected IContributionItem
[] getContributionItems() {
37 IContributionItem
[] contributionItems
= new IContributionItem
[] {
38 new ContributionItem() {
40 public void fill(Menu menu
, int index
) {
41 final IWorkbenchWindow window
= PlatformUI
.getWorkbench().getActiveWorkbenchWindow();
42 final ISelection selection
= window
.getActivePage().getSelection();
43 if(selection
instanceof TreeSelection
){
44 final Object selectedElement
= ((TreeSelection
) selection
).getFirstElement();
45 //context menu for FieldUnit
46 if(selectedElement
instanceof FieldUnit
){
47 MenuItem createSpecimen
= new MenuItem(menu
, SWT
.None
);
48 createSpecimen
.setText("Specimen");
49 FieldUnit fieldUnit
= (FieldUnit
) selectedElement
;
50 createSpecimen
.addSelectionListener(new WidgetSelectionListener(fieldUnit
, DerivedUnit
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
)));
52 MenuItem createLivingPlantPhoto
= new MenuItem(menu
, SWT
.None
);
53 createLivingPlantPhoto
.setText("Living Plant Photo");
54 createLivingPlantPhoto
.addSelectionListener(new WidgetSelectionListener(fieldUnit
, DerivedUnit
.NewInstance(SpecimenOrObservationType
.StillImage
)));
56 //context menu for Specimen
57 else if(selectedElement
instanceof DerivedUnit
&& ((DerivedUnit
)selectedElement
).getRecordBasis()==SpecimenOrObservationType
.PreservedSpecimen
){
58 DerivedUnit derivedUnit
= (DerivedUnit
) selectedElement
;
59 MenuItem createTissueSample
= new MenuItem(menu
, SWT
.None
);
60 createTissueSample
.setText("Tissue Sample");
61 createTissueSample
.addSelectionListener(new WidgetSelectionListener(derivedUnit
, DerivedUnit
.NewInstance(SpecimenOrObservationType
.TissueSample
)));
63 MenuItem createDNASample
= new MenuItem(menu
, SWT
.None
);
64 createDNASample
.setText("DNA Sample");
65 createDNASample
.addSelectionListener(new WidgetSelectionListener(derivedUnit
, DerivedUnit
.NewInstance(SpecimenOrObservationType
.DnaSample
)));
67 MenuItem createSpecimenScan
= new MenuItem(menu
, SWT
.None
);
68 createSpecimenScan
.setText("Specimen Scan");
69 createSpecimenScan
.addSelectionListener(new WidgetSelectionListener(derivedUnit
, DerivedUnit
.NewInstance(SpecimenOrObservationType
.StillImage
)));
71 MenuItem createArtwork
= new MenuItem(menu
, SWT
.None
);
72 createArtwork
.setText("Artwork");
73 createArtwork
.addSelectionListener(new WidgetSelectionListener(derivedUnit
, DerivedUnit
.NewInstance(SpecimenOrObservationType
.StillImage
)));
75 MenuItem createLivingPlantPhoto
= new MenuItem(menu
, SWT
.None
);
76 createLivingPlantPhoto
.setText("Living Plant Photo");
77 createLivingPlantPhoto
.addSelectionListener(new WidgetSelectionListener(derivedUnit
, DerivedUnit
.NewInstance(SpecimenOrObservationType
.StillImage
)));
80 MenuItem menuItem
= new MenuItem(menu
, SWT
.None
);
81 menuItem
.setText("No child derivates");
82 menuItem
.setEnabled(false);
88 return contributionItems
;
91 private class WidgetSelectionListener
implements SelectionListener
{
93 private final SpecimenOrObservationBase
<?
> parent
;
94 private final DerivedUnit derivate
;
99 public WidgetSelectionListener(SpecimenOrObservationBase
<?
> parent
, DerivedUnit derivate
) {
100 this.parent
= parent
;
101 this.derivate
= derivate
;
105 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
108 public void widgetSelected(SelectionEvent e
) {
109 parent
.addDerivationEvent(DerivationEvent
.NewSimpleInstance(parent
, derivate
, DerivationEventType
.GATHERING_IN_SITU()));
110 derivate
.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
111 derivate
.getTitleCache(); //update title cache
112 IWorkbenchPart activePart
= AbstractUtility
.getActivePart();
113 if(activePart
instanceof DerivateView
){
114 DerivateView derivateView
= (DerivateView
)activePart
;
115 derivateView
.changed(derivate
);
116 derivateView
.viewer
.refresh();
121 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
124 public void widgetDefaultSelected(SelectionEvent e
) {
125 // TODO Auto-generated method stub