1
2
3
4
5 package org.rcfaces.core.internal.converter;
6
7 import java.util.HashMap;
8 import java.util.Iterator;
9 import java.util.Map;
10
11 import javax.faces.component.UIComponent;
12 import javax.faces.context.FacesContext;
13 import javax.faces.convert.Converter;
14
15 import org.rcfaces.core.component.capability.IInputTypeCapability;
16 import org.rcfaces.core.model.AbstractConverter;
17
18
19
20
21
22 public class InputTypeConverter extends AbstractConverter {
23 private static final String REVISION = "$Revision: 1.2 $";
24
25 private static final String CHECK_BOX_INPUT_TYPE_NAME = "check";
26
27 private static final String PUSH_BUTTON_INPUT_TYPE_NAME = "push";
28
29 private static final String RADIO_BUTTON_INPUT_TYPE_NAME = "radio";
30
31 private static final String DROP_DOWN_INPUT_TYPE_NAME = "dropdown";
32
33 private static final String RESET_INPUT_TYPE_NAME = "reset";
34
35 private static final String SUBMIT_INPUT_TYPE_NAME = "submit";
36
37 private static final String DEFAULT_INPUT_TYPE_NAME = "default";
38
39 public static final Converter SINGLETON = new InputTypeConverter();
40
41 private static Map INPUT_TYPES = new HashMap(5);
42 static {
43 INPUT_TYPES.put(CHECK_BOX_INPUT_TYPE_NAME, new Integer(
44 IInputTypeCapability.AS_CHECK_BUTTON));
45 INPUT_TYPES.put(PUSH_BUTTON_INPUT_TYPE_NAME, new Integer(
46 IInputTypeCapability.AS_PUSH_BUTTON));
47 INPUT_TYPES.put(RADIO_BUTTON_INPUT_TYPE_NAME, new Integer(
48 IInputTypeCapability.AS_RADIO_BUTTON));
49 INPUT_TYPES.put(DROP_DOWN_INPUT_TYPE_NAME, new Integer(
50 IInputTypeCapability.AS_DROP_DOWN_MENU));
51 INPUT_TYPES.put(RESET_INPUT_TYPE_NAME, new Integer(
52 IInputTypeCapability.AS_RESET_BUTTON));
53 INPUT_TYPES.put(SUBMIT_INPUT_TYPE_NAME, new Integer(
54 IInputTypeCapability.AS_SUBMIT_BUTTON));
55 INPUT_TYPES.put(DEFAULT_INPUT_TYPE_NAME, new Integer(
56 IInputTypeCapability.AS_PUSH_BUTTON));
57 }
58
59 public Object getAsObject(FacesContext context, UIComponent component,
60 String value) {
61
62 if (value == null || value.length() < 1) {
63 value = DEFAULT_INPUT_TYPE_NAME;
64
65 } else {
66 value = value.toLowerCase();
67 }
68
69 Integer i = (Integer) INPUT_TYPES.get(value);
70 if (i != null) {
71 return i;
72 }
73
74 throw new IllegalArgumentException("Keyword '" + value
75 + "' is not supported for a input-type type !");
76 }
77
78 public String getAsString(FacesContext context, UIComponent component,
79 Object value) {
80
81 if (value == null) {
82 return DEFAULT_INPUT_TYPE_NAME;
83 }
84
85 if ((value instanceof Integer) == false) {
86 throw new IllegalArgumentException("Value must be an Integer !");
87 }
88
89 for (Iterator it = INPUT_TYPES.entrySet().iterator(); it.hasNext();) {
90 Map.Entry entry = (Map.Entry) it.next();
91
92 if (value.equals(entry.getValue()) == false) {
93 continue;
94 }
95
96 return (String) entry.getKey();
97 }
98
99 throw new IllegalArgumentException("Value '" + value
100 + "' is not supported for a input-type type !");
101 }
102
103 public static final String getName(int inputType) {
104 switch (inputType) {
105 case IInputTypeCapability.AS_PUSH_BUTTON:
106 return PUSH_BUTTON_INPUT_TYPE_NAME;
107
108 case IInputTypeCapability.AS_CHECK_BUTTON:
109 return CHECK_BOX_INPUT_TYPE_NAME;
110
111 case IInputTypeCapability.AS_RADIO_BUTTON:
112 return RADIO_BUTTON_INPUT_TYPE_NAME;
113
114 case IInputTypeCapability.AS_DROP_DOWN_MENU:
115 return DROP_DOWN_INPUT_TYPE_NAME;
116 }
117
118 return null;
119 }
120 }