Project

General

Profile

Download (5.9 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.view.derivate;
2

    
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.IEditorPart;
13
import org.eclipse.ui.IWorkbenchPart;
14
import org.eclipse.ui.IWorkbenchWindow;
15
import org.eclipse.ui.PlatformUI;
16
import org.eclipse.ui.actions.CompoundContributionItem;
17
import org.eclipse.ui.handlers.IHandlerService;
18

    
19
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
20
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
21
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
22
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
23
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
24
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
25
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
26
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
27
import eu.etaxonomy.taxeditor.editor.EditorUtil;
28
import eu.etaxonomy.taxeditor.model.AbstractUtility;
29
import eu.etaxonomy.taxeditor.store.CdmStore;
30

    
31
public class CreateDerivateContextMenu extends CompoundContributionItem {
32

    
33
    private final IHandlerService handlerService = (IHandlerService) EditorUtil.getService(IHandlerService.class);
34

    
35
    /* (non-Javadoc)
36
     * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
37
     */
38
    @Override
39
    protected IContributionItem[] getContributionItems() {
40
        IContributionItem[] contributionItems = new IContributionItem[] {
41
                new ContributionItem() {
42
                    @Override
43
                    public void fill(Menu menu, int index) {
44
                        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
45
                        final ISelection selection = window.getActivePage().getSelection();
46
                        if(selection instanceof TreeSelection){
47
                            final Object selectedElement = ((TreeSelection) selection).getFirstElement();
48
                            //context menu for FieldUnit
49
                            if(selectedElement instanceof FieldUnit){
50
                                MenuItem createSpecimen = new MenuItem(menu, SWT.None);
51
                                createSpecimen.setText("Specimen");
52
                                createSpecimen.addSelectionListener(new SelectionListener() {
53

    
54
                                    @Override
55
                                    public void widgetSelected(SelectionEvent e) {
56
                                        FieldUnit fieldUnit = HibernateProxyHelper.deproxy(selectedElement, FieldUnit.class);
57
                                        DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
58
                                        fieldUnit.addDerivationEvent(DerivationEvent.NewSimpleInstance(fieldUnit, specimen, DerivationEventType.GATHERING_IN_SITU()));
59
                                        specimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
60
                                        specimen.getTitleCache(); //update title cache
61
                                        IEditorPart activeEditor = AbstractUtility.getActiveEditor();
62
                                        IWorkbenchPart activePart = AbstractUtility.getActivePart();
63
                                        CdmStore.getService(IOccurrenceService.class).saveOrUpdate(fieldUnit);
64
                                        if(activePart instanceof DerivateView){
65
                                            DerivateView derivateView = (DerivateView)activePart;
66
                                            derivateView.viewer.refresh();
67
                                        }
68
                                    }
69

    
70
                                    @Override
71
                                    public void widgetDefaultSelected(SelectionEvent e) {
72
                                        // TODO Auto-generated method stub
73

    
74
                                    }
75
                                });
76
                                MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
77
                                createLivingPlantPhoto.setText("Living Plant Photo");
78
                            }
79
                            //context menu for Specimen
80
                            else if(selectedElement instanceof DerivedUnit && ((DerivedUnit)selectedElement).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
81
                                MenuItem createTissueSample = new MenuItem(menu, SWT.None);
82
                                createTissueSample.setText("Tissue Sample");
83
                                MenuItem createDNASample = new MenuItem(menu, SWT.None);
84
                                createDNASample.setText("DNA Sample");
85
                                MenuItem createSpecimenScan = new MenuItem(menu, SWT.None);
86
                                createSpecimenScan.setText("Specimen Scan");
87
                                MenuItem createArtwork = new MenuItem(menu, SWT.None);
88
                                createArtwork.setText("Artwork");
89
                                MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
90
                                createLivingPlantPhoto.setText("Living Plant Photo");
91
                            }
92
                            else{
93
                                MenuItem menuItem = new MenuItem(menu, SWT.None);
94
                                menuItem.setText("No child derivates");
95
                                menuItem.setEnabled(false);
96
                            }
97
                        }
98
                    }
99
                }
100
        };
101
        return contributionItems;
102
    }
103

    
104
}
(1-1/5)