merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / DerivateMenuPropertyTester.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.editor.view.derivate;
5
6 import org.eclipse.core.expressions.PropertyTester;
7 import org.eclipse.jface.viewers.IStructuredSelection;
8
9 import eu.etaxonomy.cdm.model.molecular.Amplification;
10 import eu.etaxonomy.cdm.model.molecular.Sequence;
11 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
12
13 /**
14 * Property tester used by the DerivateView tree menu.
15 *
16 */
17 public class DerivateMenuPropertyTester extends PropertyTester {
18
19 private static final String IS_SPECIMEN_OR_OBSERVATION = "isSpecimenOrObservation";
20
21 /* (non-Javadoc)
22 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
23 */
24 /** {@inheritDoc} */
25 @Override
26 public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
27 //TODO: these simple instanceof-checks can be unified in one class because there are several
28 // PropertyTesters that do the same, that is just checking which class the selection is of
29
30 Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
31
32 if(selectedElements.length == 0){
33 // nothing selected so all tests should fail
34 return false;
35 }
36
37 if(IS_SPECIMEN_OR_OBSERVATION.equals(property)){
38 return isSpecimenOrObservation(selectedElements);
39 }
40 else{
41 return false;
42 }
43 }
44
45 private boolean isSpecimenOrObservation(Object[] selectedElements) {
46 for (Object object : selectedElements){
47 if(!(object instanceof SpecimenOrObservationBase || object instanceof Amplification || object instanceof Sequence)){
48 return false;
49 }
50 }
51 return true;
52 }
53
54 }