merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / descriptive / handler / DescriptionsMenuPropertyTester.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.editor.view.descriptive.handler;
5
6 import org.eclipse.core.expressions.PropertyTester;
7 import org.eclipse.jface.viewers.IStructuredSelection;
8
9 import eu.etaxonomy.cdm.model.description.DescriptionBase;
10 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
11 import eu.etaxonomy.cdm.model.media.Media;
12 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
13
14 /**
15 * Property tester used by the description tree menu.
16 *
17 * @author p.ciardelli
18 * @author n.hoffmann
19 * @version $Id: $
20 */
21 public class DescriptionsMenuPropertyTester extends PropertyTester {
22
23 private static final String MEDIA = "isMedia";
24 private static final String FEATURE_NODE_CONTAINER = "isFeatureNodeContainer";
25 private static final String DESCRIPTION = "isDescription";
26 private static final String DESCRIPTION_ELEMENT = "isDescriptionElement";
27 private static final String DELETABLE = "isDeletable";
28 private static final String IMAGE_GALLERY = "isImageGallery";
29
30 /* (non-Javadoc)
31 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
32 */
33 /** {@inheritDoc} */
34 @Override
35 public boolean test(Object receiver, String property, Object[] args,
36 Object expectedValue) {
37
38 Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
39
40 if(selectedElements.length == 0){
41 // nothing selected so all tests should fail
42 return false;
43 }
44
45 if(MEDIA.equals(property)){
46 return isMedia(selectedElements);
47 }
48 else if(FEATURE_NODE_CONTAINER.equals(property)){
49 return isFeatureNodeContainer(selectedElements);
50 }
51 else if(DESCRIPTION.equals(property)){
52 return isDescription(selectedElements);
53 }
54 else if(DESCRIPTION_ELEMENT.equals(property)){
55 return isDescriptionElement(selectedElements);
56 }
57 else if(DELETABLE.equals(property)){
58 return isDeletable(selectedElements);
59 }
60 else if(IMAGE_GALLERY.equals(property)){
61 return isImageGallery(selectedElements);
62 }
63 else{
64 return false;
65 }
66 }
67
68 private boolean isImageGallery(Object[] selectedElements) {
69 for (Object object : selectedElements){
70 if(!(object instanceof DescriptionBase) || !((DescriptionBase) object).isImageGallery()){
71 return false;
72 }
73 }
74 return true;
75 }
76
77 private boolean isFeatureNodeContainer(Object[] selectedElements) {
78 for (Object object : selectedElements){
79 if(!(object instanceof FeatureNodeContainer)){
80 return false;
81 }
82 }
83 return true;
84 }
85
86 private boolean isDeletable(Object[] selectedElements) {
87 boolean result = false;
88
89 for (Object object : selectedElements) {
90
91 if((object instanceof DescriptionBase)
92 || (object instanceof DescriptionElementBase)
93 || (object instanceof Media)
94 || (object instanceof FeatureNodeContainer)){
95 result = true;
96 }else{
97 return false;
98 }
99
100 }
101 return result;
102 }
103
104 private boolean isDescriptionElement(Object[] selectedElements) {
105 for (Object object : selectedElements){
106 if(!(object instanceof DescriptionElementBase)){
107 return false;
108 }
109 }
110 return true;
111 }
112
113 private boolean isDescription(Object[] selectedElements) {
114 for (Object object : selectedElements){
115 if(!(object instanceof DescriptionBase)){
116 return false;
117 }
118 }
119 return true;
120 }
121
122 private boolean isMedia(Object[] selectedElements) {
123 for (Object object : selectedElements){
124 if(!(object instanceof Media)){
125 return false;
126 }
127 }
128 return true;
129 }
130 }