1 package eu
.etaxonomy
.taxeditor
.editor
.view
.derivate
;
5 import org
.eclipse
.core
.runtime
.NullProgressMonitor
;
6 import org
.eclipse
.jface
.action
.ContributionItem
;
7 import org
.eclipse
.jface
.action
.IContributionItem
;
8 import org
.eclipse
.jface
.viewers
.ISelection
;
9 import org
.eclipse
.jface
.viewers
.TreeSelection
;
10 import org
.eclipse
.swt
.SWT
;
11 import org
.eclipse
.swt
.events
.SelectionEvent
;
12 import org
.eclipse
.swt
.events
.SelectionListener
;
13 import org
.eclipse
.swt
.widgets
.Menu
;
14 import org
.eclipse
.swt
.widgets
.MenuItem
;
15 import org
.eclipse
.ui
.IWorkbenchPart
;
16 import org
.eclipse
.ui
.IWorkbenchWindow
;
17 import org
.eclipse
.ui
.PlatformUI
;
18 import org
.eclipse
.ui
.actions
.CompoundContributionItem
;
19 import org
.eclipse
.ui
.handlers
.IHandlerService
;
21 import eu
.etaxonomy
.cdm
.api
.application
.ICdmApplicationConfiguration
;
22 import eu
.etaxonomy
.cdm
.api
.facade
.DerivedUnitFacadeCacheStrategy
;
23 import eu
.etaxonomy
.cdm
.api
.service
.IOccurrenceService
;
24 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
25 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEventType
;
26 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
27 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
28 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationType
;
29 import eu
.etaxonomy
.taxeditor
.model
.AbstractUtility
;
30 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
32 public class CreateDerivateContextMenu
extends CompoundContributionItem
{
34 private final IHandlerService handlerService
= (IHandlerService
) AbstractUtility
.getService(IHandlerService
.class);
37 * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
40 protected IContributionItem
[] getContributionItems() {
41 IContributionItem
[] contributionItems
= new IContributionItem
[] {
42 new ContributionItem() {
44 public void fill(Menu menu
, int index
) {
45 final IWorkbenchWindow window
= PlatformUI
.getWorkbench().getActiveWorkbenchWindow();
46 final ISelection selection
= window
.getActivePage().getSelection();
47 if(selection
instanceof TreeSelection
){
48 final Object selectedElement
= ((TreeSelection
) selection
).getFirstElement();
49 //context menu for FieldUnit
50 if(selectedElement
instanceof FieldUnit
){
51 MenuItem createSpecimen
= new MenuItem(menu
, SWT
.None
);
52 createSpecimen
.setText("Specimen");
53 createSpecimen
.addSelectionListener(new SelectionListener() {
56 public void widgetSelected(SelectionEvent e
) {
57 ICdmApplicationConfiguration currentApplicationConfiguration
= CdmStore
.getCurrentApplicationConfiguration();
58 // TransactionStatus transaction = currentApplicationConfiguration.startTransaction();
59 IOccurrenceService occurrenceService
= currentApplicationConfiguration
.getOccurrenceService();
60 FieldUnit fieldUnit
= (FieldUnit
)selectedElement
;
61 UUID uuid
= fieldUnit
.getUuid();
62 fieldUnit
= (FieldUnit
) occurrenceService
.load(uuid
);
63 // fieldUnit = (FieldUnit)HibernateProxyHelper.deproxy(fieldUnit);
65 DerivedUnit specimen
= DerivedUnit
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
66 fieldUnit
.addDerivationEvent(DerivationEvent
.NewSimpleInstance(fieldUnit
, specimen
, DerivationEventType
.GATHERING_IN_SITU()));
67 specimen
.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
68 specimen
.getTitleCache(); //update title cache
69 IWorkbenchPart activePart
= AbstractUtility
.getActivePart();
70 // occurrenceService.saveOrUpdate(fieldUnit);
71 // occurrenceService.saveOrUpdate(specimen);
72 // currentApplicationConfiguration.commitTransaction(transaction);
73 if(activePart
instanceof DerivateView
){
74 DerivateView derivateView
= (DerivateView
)activePart
;
75 derivateView
.viewer
.refresh();
76 derivateView
.getEditor().doSave(new NullProgressMonitor());
81 public void widgetDefaultSelected(SelectionEvent e
) {
82 // TODO Auto-generated method stub
86 MenuItem createLivingPlantPhoto
= new MenuItem(menu
, SWT
.None
);
87 createLivingPlantPhoto
.setText("Living Plant Photo");
89 //context menu for Specimen
90 else if(selectedElement
instanceof DerivedUnit
&& ((DerivedUnit
)selectedElement
).getRecordBasis()==SpecimenOrObservationType
.PreservedSpecimen
){
91 MenuItem createTissueSample
= new MenuItem(menu
, SWT
.None
);
92 createTissueSample
.setText("Tissue Sample");
93 MenuItem createDNASample
= new MenuItem(menu
, SWT
.None
);
94 createDNASample
.setText("DNA Sample");
95 MenuItem createSpecimenScan
= new MenuItem(menu
, SWT
.None
);
96 createSpecimenScan
.setText("Specimen Scan");
97 MenuItem createArtwork
= new MenuItem(menu
, SWT
.None
);
98 createArtwork
.setText("Artwork");
99 MenuItem createLivingPlantPhoto
= new MenuItem(menu
, SWT
.None
);
100 createLivingPlantPhoto
.setText("Living Plant Photo");
103 MenuItem menuItem
= new MenuItem(menu
, SWT
.None
);
104 menuItem
.setText("No child derivates");
105 menuItem
.setEnabled(false);
111 return contributionItems
;