1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.model;
21
22 import java.util.EnumSet;
23 import java.util.HashMap;
24 import java.util.Map;
25 import java.util.Set;
26
27 public enum Selectable {
28
29
30
31
32 NONE("none"),
33
34
35
36
37 MULTI("multi"),
38
39
40
41
42 SINGLE("single"),
43
44
45
46
47 SINGLE_OR_NONE("singleOrNone"),
48
49
50
51
52 MULTI_LEAF_ONLY("multiLeafOnly"),
53
54
55
56
57 SINGLE_LEAF_ONLY("singleLeafOnly"),
58
59
60
61
62 SIBLING("sibling"),
63
64
65
66
67 SIBLING_LEAF_ONLY("siblingLeafOnly"),
68
69
70
71
72
73 MULTI_CASCADE("multiCascade");
74
75 private static final Set<Selectable> SHEET_VALUES = EnumSet.of(
76 NONE,
77 MULTI,
78 SINGLE,
79 SINGLE_OR_NONE);
80
81 private static final Set<Selectable> TREE_VALUES = EnumSet.of(
82 NONE,
83 MULTI,
84 SINGLE,
85 MULTI_LEAF_ONLY,
86 SINGLE_LEAF_ONLY,
87 MULTI_CASCADE);
88
89 private static final Set<Selectable> TREE_LISTBOX_VALUES = EnumSet.of(
90 SINGLE,
91 SINGLE_LEAF_ONLY,
92 MULTI_LEAF_ONLY);
93
94 private static final Map<String, Selectable> MAPPING;
95
96 private String value;
97
98 Selectable(String value) {
99 this.value = value;
100 }
101
102 public String getValue() {
103 return value;
104 }
105
106 static {
107 MAPPING = new HashMap<String, Selectable>();
108
109 for (Selectable action : Selectable.values()) {
110 MAPPING.put(action.getValue(), action);
111 }
112 }
113
114
115
116
117
118
119 public static Selectable parse(Object name) throws IllegalArgumentException {
120 if (name == null) {
121 return null;
122 }
123 if (name instanceof Selectable) {
124 return (Selectable) name;
125 }
126 Selectable value = MAPPING.get(name.toString());
127 if (value != null) {
128 return value;
129 } else {
130 throw new IllegalArgumentException("Unknown name for TreeSelectable: '" + name + "'");
131 }
132 }
133
134 public boolean isLeafOnly() {
135 return this == SINGLE_LEAF_ONLY || this == MULTI_LEAF_ONLY || this == SIBLING_LEAF_ONLY;
136 }
137
138 public boolean isSingle() {
139 return this == SINGLE || this == SINGLE_OR_NONE || this == SINGLE_LEAF_ONLY;
140 }
141
142 public boolean isSupportedBySheet() {
143 return SHEET_VALUES.contains(this);
144 }
145
146 public boolean isSupportedByTree() {
147 return TREE_VALUES.contains(this);
148 }
149
150 public boolean isSupportedByTreeListbox() {
151 return TREE_LISTBOX_VALUES.contains(this);
152 }
153 }