Project

General

Profile

« Previous | Next » 

Revision e44f328b

Added by Patrick Plitzner over 10 years ago

  • implemented context menu functionality (create specimen)

View differences:

eu.etaxonomy.taxeditor.editor/plugin.xml
545 545
      <menuContribution
546 546
            locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
547 547
         <menu
548
               label="New">
548
               label="New Derivate">
549 549
            <dynamic
550
                  class="eu.etaxonomy.taxeditor.bulkeditor.command.DynamicNewObjectMenu"
551
                  id="eu.etaxonomy.taxeditor.bulkeditor.dynamicNewMenu">
550
                  class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"
551
                  id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu">
552 552
            </dynamic>
553 553
            <visibleWhen
554 554
                  checkEnabled="true">
555
               <or>
556
                  <reference
557
                        definitionId="isFieldUnit">
558
                  </reference>
559
                  <reference
560
                        definitionId="isDerivedUnit">
561
                  </reference>
562
               </or>
555
               <reference
556
                     definitionId="isSpecimenOrObservation">
557
               </reference>
563 558
            </visibleWhen>
564 559
         </menu>
565
         <separator
566
               name="eu.etaxonomy.taxeditor.editor.separator1"
567
               visible="true">
568
         </separator>
569
         <dynamic
570
               class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"
571
               id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu">
572
         </dynamic>
573 560
      </menuContribution>
574 561
      
575 562
      
......
1215 1202
         </with>
1216 1203
      </definition>
1217 1204
      <definition
1218
            id="isFieldUnit">
1219
         <with
1220
               variable="selection">
1221
            <test
1222
                  property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isFieldUnit">
1223
            </test>
1224
         </with>
1225
      </definition>
1226
      <definition
1227
            id="isDerivedUnit">
1205
            id="isSpecimenOrObservation">
1228 1206
         <with
1229 1207
               variable="selection">
1230 1208
            <test
1231
                  property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isSpecimen">
1209
                  property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isSpecimenOrObservation">
1232 1210
            </test>
1233 1211
         </with>
1234 1212
      </definition>
......
1260 1238
            class="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
1261 1239
            id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
1262 1240
            namespace="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
1263
            properties="isFieldUnit,isSpecimen"
1241
            properties="isSpecimenOrObservation"
1264 1242
            type="org.eclipse.jface.viewers.TreeSelection">
1265 1243
      </propertyTester>
1266 1244
   </extension>
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java
3 3
import org.eclipse.jface.action.ContributionItem;
4 4
import org.eclipse.jface.action.IContributionItem;
5 5
import org.eclipse.jface.viewers.ISelection;
6
import org.eclipse.jface.viewers.TreeSelection;
6 7
import org.eclipse.swt.SWT;
8
import org.eclipse.swt.events.SelectionEvent;
9
import org.eclipse.swt.events.SelectionListener;
7 10
import org.eclipse.swt.widgets.Menu;
8 11
import org.eclipse.swt.widgets.MenuItem;
9 12
import org.eclipse.ui.IWorkbenchWindow;
10 13
import org.eclipse.ui.PlatformUI;
11 14
import org.eclipse.ui.actions.CompoundContributionItem;
15
import org.eclipse.ui.handlers.IHandlerService;
12 16

  
17
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
18
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
19
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
13 20
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
14 21
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
22
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
23
import eu.etaxonomy.taxeditor.editor.EditorUtil;
15 24

  
16 25
public class CreateDerivateContextMenu extends CompoundContributionItem {
17 26

  
27
    private final IHandlerService handlerService = (IHandlerService) EditorUtil.getService(IHandlerService.class);
28
    private final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
29
    private final ISelection selection = window.getActivePage().getSelection();
30

  
18 31
    /* (non-Javadoc)
19 32
     * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
20 33
     */
......
24 37
                new ContributionItem() {
25 38
                    @Override
26 39
                    public void fill(Menu menu, int index) {
27
                        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
28
                        ISelection selection = window.getActivePage().getSelection();
29
                        MenuItem menuItem = new MenuItem(menu, SWT.None);
30
                        menuItem.setText("menuItem");
31
                        //selection is intance of TreeSelection
32
                        if(selection instanceof FieldUnit){
33
                            menuItem.setText("fieldUnit");
34
                        }
35
                        else if(selection instanceof DerivedUnit){
36
                            menuItem.setText("derivedUnit");
40
                        if(selection instanceof TreeSelection){
41
                            final Object selectedElement = ((TreeSelection) selection).getFirstElement();
42
                            //context menu for FieldUnit
43
                            if(selectedElement instanceof FieldUnit){
44
                                MenuItem createSpecimen = new MenuItem(menu, SWT.None);
45
                                createSpecimen.setText("Specimen");
46
                                createSpecimen.addSelectionListener(new SelectionListener() {
47

  
48
                                    @Override
49
                                    public void widgetSelected(SelectionEvent e) {
50
                                        FieldUnit fieldUnit = HibernateProxyHelper.deproxy(selectedElement, FieldUnit.class);
51
                                        DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
52
                                        fieldUnit.addDerivationEvent(DerivationEvent.NewSimpleInstance(fieldUnit, specimen, DerivationEventType.GATHERING_IN_SITU()));
53
                                    }
54

  
55
                                    @Override
56
                                    public void widgetDefaultSelected(SelectionEvent e) {
57
                                        // TODO Auto-generated method stub
58

  
59
                                    }
60
                                });
61
                                MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
62
                                createLivingPlantPhoto.setText("Living Plant Photo");
63
                            }
64
                            //context menu for Specimen
65
                            else if(selectedElement instanceof DerivedUnit && ((DerivedUnit)selectedElement).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
66
                                MenuItem createTissueSample = new MenuItem(menu, SWT.None);
67
                                createTissueSample.setText("Tissue Sample");
68
                                MenuItem createDNASample = new MenuItem(menu, SWT.None);
69
                                createDNASample.setText("DNA Sample");
70
                                MenuItem createSpecimenScan = new MenuItem(menu, SWT.None);
71
                                createSpecimenScan.setText("Specimen Scan");
72
                                MenuItem createArtwork = new MenuItem(menu, SWT.None);
73
                                createArtwork.setText("Artwork");
74
                                MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
75
                                createLivingPlantPhoto.setText("Living Plant Photo");
76
                            }
77
                            else{
78
                                MenuItem menuItem = new MenuItem(menu, SWT.None);
79
                                menuItem.setText("No child derivates");
80
                                menuItem.setEnabled(false);
81
                            }
37 82
                        }
38 83
                    }
39 84
                }
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java
3 3
 */
4 4
package eu.etaxonomy.taxeditor.editor.view.derivate;
5 5

  
6
import java.util.Arrays;
7

  
8 6
import org.eclipse.core.expressions.PropertyTester;
9 7
import org.eclipse.jface.viewers.IStructuredSelection;
10 8

  
11
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
12
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
9
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
13 10

  
14 11
/**
15 12
 * Property tester used by the DerivateView tree menu.
......
17 14
 */
18 15
public class DerivateMenuPropertyTester extends PropertyTester {
19 16

  
20
	private static final String IS_FIELD_UNIT = "isFieldUnit";
21
	private static final String IS_SPECIMEN = "isSpecimen";
17
	private static final String IS_SPECIMEN_OR_OBSERVATION = "isSpecimenOrObservation";
22 18

  
23 19
	/* (non-Javadoc)
24 20
	 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
......
26 22
	/** {@inheritDoc} */
27 23
	@Override
28 24
    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
29
        System.out.println(receiver.toString() + receiver.getClass().toString());
30
        System.out.println(property);
31
        System.out.println(Arrays.asList(args));
32
        System.out.println(expectedValue);
25
	    //TODO: these simple instanceof-checks can be unified in one class because there are several
26
	    // PropertyTesters that do the same, that is just checking which class the selection is of
33 27

  
34
		Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
28
	    Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
35 29

  
36 30
		if(selectedElements.length == 0){
37 31
			// nothing selected so all tests should fail
38 32
			return false;
39 33
		}
40 34

  
41
		if(IS_FIELD_UNIT.equals(property)){
42
			return isFieldUnit(selectedElements);
43
		}
44
		else if(IS_SPECIMEN.equals(property)){
45
			return isSpecimen(selectedElements);
35
		if(IS_SPECIMEN_OR_OBSERVATION.equals(property)){
36
		    return isSpecimenOrObservation(selectedElements);
46 37
		}
47 38
		else{
48 39
			return false;
49 40
		}
50 41
	}
51 42

  
52
	private boolean isFieldUnit(Object[] selectedElements) {
53
		for (Object object : selectedElements){
54
			if(!(object instanceof FieldUnit)){
55
				return false;
56
			}
57
		}
58
		return true;
59
	}
60

  
61
	private boolean isSpecimen(Object[] selectedElements) {
43
	private boolean isSpecimenOrObservation(Object[] selectedElements) {
62 44
	    for (Object object : selectedElements){
63
	        if(!(object instanceof DerivedUnit)){
45
	        if(!(object instanceof SpecimenOrObservationBase)){
64 46
	            return false;
65 47
	        }
66 48
	    }
67 49
	    return true;
68 50
	}
51

  
69 52
}

Also available in: Unified diff