Project

General

Profile

Download (3.37 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(4-4/6)