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.occurrence.SpecimenOrObservationBase;
10
11 /**
12 * Property tester used by the DerivateView tree menu.
13 *
14 */
15 public class DerivateMenuPropertyTester extends PropertyTester {
16
17 private static final String IS_SPECIMEN_OR_OBSERVATION = "isSpecimenOrObservation";
18
19 /* (non-Javadoc)
20 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
21 */
22 /** {@inheritDoc} */
23 @Override
24 public boolean test(Object receiver, String property, Object[] args, Object 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
27
28 Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
29
30 if(selectedElements.length == 0){
31 // nothing selected so all tests should fail
32 return false;
33 }
34
35 if(IS_SPECIMEN_OR_OBSERVATION.equals(property)){
36 return isSpecimenOrObservation(selectedElements);
37 }
38 else{
39 return false;
40 }
41 }
42
43 private boolean isSpecimenOrObservation(Object[] selectedElements) {
44 for (Object object : selectedElements){
45 if(!(object instanceof SpecimenOrObservationBase)){
46 return false;
47 }
48 }
49 return true;
50 }
51
52 }