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.ILayoutManagerCapability;
16 import org.rcfaces.core.model.AbstractConverter;
17
18
19
20
21
22 public class LayoutManagerTypeConverter extends AbstractConverter {
23 private static final String REVISION = "$Revision: 1.1.2.1 $";
24
25 private static final String INHERIT_MODE_NAME = "inherit";
26
27 private static final String INHERITED_MODE_NAME = "inherited";
28
29 private static final String NONE_MODE_NAME = "none";
30
31 private static final String ABSOLUTE_MODE_NAME = "absolute";
32
33 private static final Integer INHERITED_MODE = new Integer(
34 ILayoutManagerCapability.INHERITED_LAYOUT_TYPE);
35
36 public static final Converter SINGLETON = new LayoutManagerTypeConverter();
37
38 private static Map LAYOUT_MODES = new HashMap(5);
39 static {
40 LAYOUT_MODES.put(INHERIT_MODE_NAME, new Integer(
41 ILayoutManagerCapability.INHERITED_LAYOUT_TYPE));
42 LAYOUT_MODES.put(INHERITED_MODE_NAME, new Integer(
43 ILayoutManagerCapability.INHERITED_LAYOUT_TYPE));
44 LAYOUT_MODES.put(NONE_MODE_NAME, new Integer(
45 ILayoutManagerCapability.NONE_LAYOUT_TYPE));
46 LAYOUT_MODES.put(ABSOLUTE_MODE_NAME, new Integer(
47 ILayoutManagerCapability.ABSOLUTE_LAYOUT_TYPE));
48 }
49
50 public Object getAsObject(FacesContext context, UIComponent component,
51 String value) {
52
53 if (value == null || value.length() < 1) {
54 return INHERITED_MODE;
55 }
56
57 value = value.toLowerCase();
58
59 Integer i = (Integer) LAYOUT_MODES.get(value);
60 if (i != null) {
61 return i;
62 }
63
64 if ("default".equalsIgnoreCase(value)) {
65 return INHERITED_MODE;
66 }
67
68 throw new IllegalArgumentException("Keyword '" + value
69 + "' is not supported for a layout manager mode !");
70 }
71
72 public String getAsString(FacesContext context, UIComponent component,
73 Object value) {
74
75 if (value == null) {
76 return (String) LAYOUT_MODES.get(INHERITED_MODE);
77 }
78
79 if ((value instanceof Integer) == false) {
80 throw new IllegalArgumentException("Value must be an Integer !");
81 }
82
83 for (Iterator it = LAYOUT_MODES.entrySet().iterator(); it.hasNext();) {
84 Map.Entry entry = (Map.Entry) it.next();
85
86 if (value.equals(entry.getValue())) {
87 return (String) entry.getKey();
88 }
89 }
90
91 throw new IllegalArgumentException("Value '" + value
92 + "' is not supported for a layout manager mode !");
93 }
94
95 public static final String getName(int layoutManagerMode) {
96 switch (layoutManagerMode) {
97 case ILayoutManagerCapability.INHERITED_LAYOUT_TYPE:
98 return INHERITED_MODE_NAME;
99
100 case ILayoutManagerCapability.NONE_LAYOUT_TYPE:
101 return NONE_MODE_NAME;
102
103 case ILayoutManagerCapability.ABSOLUTE_LAYOUT_TYPE:
104 return ABSOLUTE_MODE_NAME;
105 }
106
107 return null;
108 }
109 }