1
2
3
4
5 package org.rcfaces.core.internal.converter;
6
7 import java.util.HashMap;
8 import java.util.Map;
9 import java.util.StringTokenizer;
10
11 import javax.faces.FacesException;
12 import javax.faces.component.UIComponent;
13 import javax.faces.context.FacesContext;
14 import javax.faces.convert.Converter;
15
16 import org.rcfaces.core.component.capability.IDragAndDropEffects;
17 import org.rcfaces.core.model.AbstractConverter;
18
19
20
21
22
23
24 public class DragDropEffectsConverter extends AbstractConverter {
25 private static final String REVISION = "$Revision: 1.2 $";
26
27 public static final Converter SINGLETON = new DragDropEffectsConverter();
28
29 private static final Integer NO_EFFECTS = new Integer(0);
30
31 private static final Map EFFECTS = new HashMap(8);
32 static {
33 EFFECTS.put("NONE", new Integer(IDragAndDropEffects.NONE_DND_EFFECT));
34 EFFECTS.put("DEFAULT", new Integer(
35 IDragAndDropEffects.DEFAULT_DND_EFFECT));
36 EFFECTS.put("COPY", new Integer(IDragAndDropEffects.COPY_DND_EFFECT));
37 EFFECTS.put("LINK", new Integer(IDragAndDropEffects.LINK_DND_EFFECT));
38 EFFECTS.put("MOVE", new Integer(IDragAndDropEffects.MOVE_DND_EFFECT));
39 EFFECTS.put("ANY", new Integer(IDragAndDropEffects.ANY_DND_EFFECT));
40 EFFECTS.put("UNKNOWN", new Integer(
41 IDragAndDropEffects.UNKNOWN_DND_EFFECT));
42 }
43
44 public Object getAsObject(FacesContext context, UIComponent component,
45 String value) {
46 if (value == null) {
47 return NO_EFFECTS;
48 }
49
50 StringTokenizer st = new StringTokenizer(value, ",; ");
51
52 int mask = 0;
53
54 for (; st.hasMoreTokens();) {
55 String token = st.nextToken().toUpperCase();
56
57 Integer flags = (Integer) EFFECTS.get(token);
58 if (flags == null) {
59 continue;
60 }
61
62 mask |= flags.intValue();
63 }
64
65 if (mask == 0) {
66 return NO_EFFECTS;
67 }
68
69 return new Integer(mask);
70 }
71
72 public String getAsString(FacesContext context, UIComponent component,
73 Object value) {
74 throw new FacesException("Not implemented !");
75 }
76
77 public static Integer convertUpperCase(String key) {
78 return (Integer) EFFECTS.get(key);
79 }
80 }