Project

General

Profile

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

    
3
import java.util.UUID;
4

    
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;
20

    
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;
31

    
32
public class CreateDerivateContextMenu extends CompoundContributionItem {
33

    
34
    private final IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
35

    
36
    /* (non-Javadoc)
37
     * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
38
     */
39
    @Override
40
    protected IContributionItem[] getContributionItems() {
41
        IContributionItem[] contributionItems = new IContributionItem[] {
42
                new ContributionItem() {
43
                    @Override
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() {
54

    
55
                                    @Override
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);
64

    
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.doSave(new NullProgressMonitor());
77
                                        }
78
                                    }
79

    
80
                                    @Override
81
                                    public void widgetDefaultSelected(SelectionEvent e) {
82
                                        // TODO Auto-generated method stub
83

    
84
                                    }
85
                                });
86
                                MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
87
                                createLivingPlantPhoto.setText("Living Plant Photo");
88
                            }
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");
101
                            }
102
                            else{
103
                                MenuItem menuItem = new MenuItem(menu, SWT.None);
104
                                menuItem.setText("No child derivates");
105
                                menuItem.setEnabled(false);
106
                            }
107
                        }
108
                    }
109
                }
110
        };
111
        return contributionItems;
112
    }
113

    
114
}
(1-1/5)