]> source.dussan.org Git - vaadin-framework.git/commitdiff
DefaultFormBuilderFieldFactort -> DefaultFieldGroupFieldFactory
authorArtur Signell <artur@vaadin.com>
Thu, 22 Dec 2011 11:39:21 +0000 (13:39 +0200)
committerArtur Signell <artur@vaadin.com>
Thu, 22 Dec 2011 11:40:37 +0000 (13:40 +0200)
src/com/vaadin/data/fieldbinder/DefaultFieldGroupFieldFactory.java [new file with mode: 0644]
src/com/vaadin/data/fieldbinder/DefaultFormBuilderFieldFactory.java [deleted file]

diff --git a/src/com/vaadin/data/fieldbinder/DefaultFieldGroupFieldFactory.java b/src/com/vaadin/data/fieldbinder/DefaultFieldGroupFieldFactory.java
new file mode 100644 (file)
index 0000000..28eff13
--- /dev/null
@@ -0,0 +1,156 @@
+/* \r
+@VaadinApache2LicenseForJavaFiles@\r
+ */\r
+package com.vaadin.data.fieldbinder;\r
+\r
+import java.util.EnumSet;\r
+\r
+import com.vaadin.data.Item;\r
+import com.vaadin.data.fieldbinder.FieldGroup.BindException;\r
+import com.vaadin.ui.AbstractSelect;\r
+import com.vaadin.ui.AbstractTextField;\r
+import com.vaadin.ui.CheckBox;\r
+import com.vaadin.ui.ComboBox;\r
+import com.vaadin.ui.Field;\r
+import com.vaadin.ui.ListSelect;\r
+import com.vaadin.ui.NativeSelect;\r
+import com.vaadin.ui.OptionGroup;\r
+import com.vaadin.ui.RichTextArea;\r
+import com.vaadin.ui.Table;\r
+import com.vaadin.ui.TextField;\r
+\r
+public class DefaultFieldGroupFieldFactory implements FieldGroupFieldFactory {\r
+\r
+    public static final Object CAPTION_PROPERTY_ID = "Caption";\r
+\r
+    public <T extends Field> T createField(Class<?> type, Class<T> fieldType) {\r
+        if (Enum.class.isAssignableFrom(type)) {\r
+            return createEnumField(type, fieldType);\r
+        } else if (Boolean.class.isAssignableFrom(type)\r
+                || boolean.class.isAssignableFrom(type)) {\r
+            return createBooleanField(fieldType);\r
+        }\r
+        if (AbstractTextField.class.isAssignableFrom(fieldType)) {\r
+            return fieldType.cast(createAbstractTextField(fieldType\r
+                    .asSubclass(AbstractTextField.class)));\r
+        } else if (fieldType == RichTextArea.class) {\r
+            return fieldType.cast(createRichTextArea());\r
+        }\r
+        return createDefaultField(type, fieldType);\r
+    }\r
+\r
+    protected RichTextArea createRichTextArea() {\r
+        RichTextArea rta = new RichTextArea();\r
+        rta.setImmediate(true);\r
+\r
+        return rta;\r
+    }\r
+\r
+    private <T extends Field> T createEnumField(Class<?> type,\r
+            Class<T> fieldType) {\r
+        if (AbstractSelect.class.isAssignableFrom(fieldType)) {\r
+            AbstractSelect s = createCompatibleSelect((Class<? extends AbstractSelect>) fieldType);\r
+            populateWithEnumData(s, (Class<? extends Enum>) type);\r
+            return (T) s;\r
+        }\r
+\r
+        return null;\r
+    }\r
+\r
+    protected AbstractSelect createCompatibleSelect(\r
+            Class<? extends AbstractSelect> fieldType) {\r
+        AbstractSelect select;\r
+        if (fieldType.isAssignableFrom(ListSelect.class)) {\r
+            select = new ListSelect();\r
+            select.setMultiSelect(false);\r
+        } else if (fieldType.isAssignableFrom(NativeSelect.class)) {\r
+            select = new NativeSelect();\r
+        } else if (fieldType.isAssignableFrom(OptionGroup.class)) {\r
+            select = new OptionGroup();\r
+            select.setMultiSelect(false);\r
+        } else if (fieldType.isAssignableFrom(Table.class)) {\r
+            Table t = new Table();\r
+            t.setSelectable(true);\r
+            select = t;\r
+        } else {\r
+            select = new ComboBox(null);\r
+        }\r
+        select.setImmediate(true);\r
+        select.setNullSelectionAllowed(false);\r
+\r
+        return select;\r
+    }\r
+\r
+    protected <T extends Field> T createBooleanField(Class<T> fieldType) {\r
+        if (fieldType.isAssignableFrom(CheckBox.class)) {\r
+            CheckBox cb = new CheckBox(null);\r
+            cb.setImmediate(true);\r
+            return (T) cb;\r
+        } else if (AbstractTextField.class.isAssignableFrom(fieldType)) {\r
+            return (T) createAbstractTextField((Class<? extends AbstractTextField>) fieldType);\r
+        }\r
+\r
+        return null;\r
+    }\r
+\r
+    protected <T extends AbstractTextField> T createAbstractTextField(\r
+            Class<T> fieldType) {\r
+        if (fieldType == AbstractTextField.class) {\r
+            fieldType = (Class<T>) TextField.class;\r
+        }\r
+        try {\r
+            T field = fieldType.newInstance();\r
+            field.setImmediate(true);\r
+            return field;\r
+        } catch (Exception e) {\r
+            throw new BindException("Could not create a field of type "\r
+                    + fieldType, e);\r
+        }\r
+    }\r
+\r
+    /**\r
+     * Fallback when no specific field has been created. Typically returns a\r
+     * TextField.\r
+     * \r
+     * @param <T>\r
+     *            The type of field to create\r
+     * @param type\r
+     *            The type of data that should be edited\r
+     * @param fieldType\r
+     *            The type of field to create\r
+     * @return A field capable of editing the data or null if no field could be\r
+     *         created\r
+     */\r
+    protected <T extends Field> T createDefaultField(Class<?> type,\r
+            Class<T> fieldType) {\r
+        if (fieldType.isAssignableFrom(TextField.class)) {\r
+            return fieldType.cast(createAbstractTextField(TextField.class));\r
+        }\r
+        return null;\r
+    }\r
+\r
+    /**\r
+     * Populates the given select with all the enums in the given {@link Enum}\r
+     * class. Uses {@link Enum}.toString() for caption.\r
+     * \r
+     * @param select\r
+     *            The select to populate\r
+     * @param enumClass\r
+     *            The Enum class to use\r
+     */\r
+    protected void populateWithEnumData(AbstractSelect select,\r
+            Class<? extends Enum> enumClass) {\r
+        select.removeAllItems();\r
+        for (Object p : select.getContainerPropertyIds()) {\r
+            select.removeContainerProperty(p);\r
+        }\r
+        select.addContainerProperty(CAPTION_PROPERTY_ID, String.class, "");\r
+        select.setItemCaptionPropertyId(CAPTION_PROPERTY_ID);\r
+        @SuppressWarnings("unchecked")\r
+        EnumSet<?> enumSet = EnumSet.allOf(enumClass);\r
+        for (Object r : enumSet) {\r
+            Item newItem = select.addItem(r);\r
+            newItem.getItemProperty(CAPTION_PROPERTY_ID).setValue(r.toString());\r
+        }\r
+    }\r
+}\r
diff --git a/src/com/vaadin/data/fieldbinder/DefaultFormBuilderFieldFactory.java b/src/com/vaadin/data/fieldbinder/DefaultFormBuilderFieldFactory.java
deleted file mode 100644 (file)
index 3977879..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/* \r
-@VaadinApache2LicenseForJavaFiles@\r
- */\r
-package com.vaadin.data.fieldbinder;\r
-\r
-import java.util.EnumSet;\r
-\r
-import com.vaadin.data.Item;\r
-import com.vaadin.data.fieldbinder.FieldGroup.BindException;\r
-import com.vaadin.ui.AbstractSelect;\r
-import com.vaadin.ui.AbstractTextField;\r
-import com.vaadin.ui.CheckBox;\r
-import com.vaadin.ui.ComboBox;\r
-import com.vaadin.ui.Field;\r
-import com.vaadin.ui.ListSelect;\r
-import com.vaadin.ui.NativeSelect;\r
-import com.vaadin.ui.OptionGroup;\r
-import com.vaadin.ui.RichTextArea;\r
-import com.vaadin.ui.Table;\r
-import com.vaadin.ui.TextField;\r
-\r
-public class DefaultFormBuilderFieldFactory implements FieldGroupFieldFactory {\r
-\r
-    public static final Object CAPTION_PROPERTY_ID = "Caption";\r
-\r
-    public <T extends Field> T createField(Class<?> type, Class<T> fieldType) {\r
-        if (Enum.class.isAssignableFrom(type)) {\r
-            return createEnumField(type, fieldType);\r
-        } else if (Boolean.class.isAssignableFrom(type)\r
-                || boolean.class.isAssignableFrom(type)) {\r
-            return createBooleanField(fieldType);\r
-        }\r
-        if (AbstractTextField.class.isAssignableFrom(fieldType)) {\r
-            return fieldType.cast(createAbstractTextField(fieldType\r
-                    .asSubclass(AbstractTextField.class)));\r
-        } else if (fieldType == RichTextArea.class) {\r
-            return fieldType.cast(createRichTextArea());\r
-        }\r
-        return createDefaultField(type, fieldType);\r
-    }\r
-\r
-    protected RichTextArea createRichTextArea() {\r
-        RichTextArea rta = new RichTextArea();\r
-        rta.setImmediate(true);\r
-\r
-        return rta;\r
-    }\r
-\r
-    private <T extends Field> T createEnumField(Class<?> type,\r
-            Class<T> fieldType) {\r
-        if (AbstractSelect.class.isAssignableFrom(fieldType)) {\r
-            AbstractSelect s = createCompatibleSelect((Class<? extends AbstractSelect>) fieldType);\r
-            populateWithEnumData(s, (Class<? extends Enum>) type);\r
-            return (T) s;\r
-        }\r
-\r
-        return null;\r
-    }\r
-\r
-    protected AbstractSelect createCompatibleSelect(\r
-            Class<? extends AbstractSelect> fieldType) {\r
-        AbstractSelect select;\r
-        if (fieldType.isAssignableFrom(ListSelect.class)) {\r
-            select = new ListSelect();\r
-            select.setMultiSelect(false);\r
-        } else if (fieldType.isAssignableFrom(NativeSelect.class)) {\r
-            select = new NativeSelect();\r
-        } else if (fieldType.isAssignableFrom(OptionGroup.class)) {\r
-            select = new OptionGroup();\r
-            select.setMultiSelect(false);\r
-        } else if (fieldType.isAssignableFrom(Table.class)) {\r
-            Table t = new Table();\r
-            t.setSelectable(true);\r
-            select = t;\r
-        } else {\r
-            select = new ComboBox(null);\r
-        }\r
-        select.setImmediate(true);\r
-        select.setNullSelectionAllowed(false);\r
-\r
-        return select;\r
-    }\r
-\r
-    protected <T extends Field> T createBooleanField(Class<T> fieldType) {\r
-        if (fieldType.isAssignableFrom(CheckBox.class)) {\r
-            CheckBox cb = new CheckBox(null);\r
-            cb.setImmediate(true);\r
-            return (T) cb;\r
-        } else if (AbstractTextField.class.isAssignableFrom(fieldType)) {\r
-            return (T) createAbstractTextField((Class<? extends AbstractTextField>) fieldType);\r
-        }\r
-\r
-        return null;\r
-    }\r
-\r
-    protected <T extends AbstractTextField> T createAbstractTextField(\r
-            Class<T> fieldType) {\r
-        if (fieldType == AbstractTextField.class) {\r
-            fieldType = (Class<T>) TextField.class;\r
-        }\r
-        try {\r
-            T field = fieldType.newInstance();\r
-            field.setImmediate(true);\r
-            return field;\r
-        } catch (Exception e) {\r
-            throw new BindException("Could not create a field of type "\r
-                    + fieldType, e);\r
-        }\r
-    }\r
-\r
-    /**\r
-     * Fallback when no specific field has been created. Typically returns a\r
-     * TextField.\r
-     * \r
-     * @param <T>\r
-     *            The type of field to create\r
-     * @param type\r
-     *            The type of data that should be edited\r
-     * @param fieldType\r
-     *            The type of field to create\r
-     * @return A field capable of editing the data or null if no field could be\r
-     *         created\r
-     */\r
-    protected <T extends Field> T createDefaultField(Class<?> type,\r
-            Class<T> fieldType) {\r
-        if (fieldType.isAssignableFrom(TextField.class)) {\r
-            return fieldType.cast(createAbstractTextField(TextField.class));\r
-        }\r
-        return null;\r
-    }\r
-\r
-    /**\r
-     * Populates the given select with all the enums in the given {@link Enum}\r
-     * class. Uses {@link Enum}.toString() for caption.\r
-     * \r
-     * @param select\r
-     *            The select to populate\r
-     * @param enumClass\r
-     *            The Enum class to use\r
-     */\r
-    protected void populateWithEnumData(AbstractSelect select,\r
-            Class<? extends Enum> enumClass) {\r
-        select.removeAllItems();\r
-        for (Object p : select.getContainerPropertyIds()) {\r
-            select.removeContainerProperty(p);\r
-        }\r
-        select.addContainerProperty(CAPTION_PROPERTY_ID, String.class, "");\r
-        select.setItemCaptionPropertyId(CAPTION_PROPERTY_ID);\r
-        @SuppressWarnings("unchecked")\r
-        EnumSet<?> enumSet = EnumSet.allOf(enumClass);\r
-        for (Object r : enumSet) {\r
-            Item newItem = select.addItem(r);\r
-            newItem.getItemProperty(CAPTION_PROPERTY_ID).setValue(r.toString());\r
-        }\r
-    }\r
-}\r