Add ENUM support
authorBill Kuker <bkuker@billkuker.com>
Sat, 6 Nov 2010 21:20:00 +0000 (21:20 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sat, 6 Nov 2010 21:20:00 +0000 (21:20 +0000)
gui/com/billkuker/rocketry/motorsim/visual/Editor.java

index 93e32932ecf3aeca274ad73efbbb322dc0bf8b91..79d59a749997e10096ba1a969acc9ac92a38afb0 100644 (file)
@@ -11,10 +11,13 @@ import java.beans.PropertyEditorManager;
 import java.beans.PropertyEditorSupport;\r
 import java.text.DecimalFormat;\r
 import java.text.NumberFormat;\r
+import java.util.EnumSet;\r
 import java.util.Vector;\r
 \r
 import javax.measure.unit.SI;\r
 import javax.measure.unit.Unit;\r
+import javax.swing.DefaultComboBoxModel;\r
+import javax.swing.JComboBox;\r
 import javax.swing.JFrame;\r
 import javax.swing.JLabel;\r
 import javax.swing.JTable;\r
@@ -27,7 +30,9 @@ import org.jscience.physics.amount.Amount;
 \r
 import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
 import com.billkuker.rocketry.motorsim.RocketScience;\r
+import com.billkuker.rocketry.motorsim.cases.PVCCase;\r
 import com.l2fprod.common.propertysheet.PropertySheetPanel;\r
+import com.sun.org.apache.xml.internal.security.utils.EncryptionElementProxy;\r
 \r
 public class Editor extends PropertySheetPanel {\r
        private static final long serialVersionUID = 1L;\r
@@ -62,6 +67,11 @@ public class Editor extends PropertySheetPanel {
                        if (props[i].getName().equals("class"))\r
                                continue;\r
                        v.add(props[i]);\r
+                       \r
+                       if ( Enum.class.isAssignableFrom( props[i].getPropertyType() ) ){\r
+                               getEditorRegistry().registerEditor(props[i].getPropertyType(), new EnumPropertyEditor(props[i].getPropertyType()));\r
+                       }\r
+                       \r
                }\r
                setProperties(v.toArray(new PropertyDescriptor[v.size()]));\r
 \r
@@ -103,9 +113,8 @@ public class Editor extends PropertySheetPanel {
        }\r
        \r
        public static void main(String args[]){\r
-               CylindricalChamber o = new CylindricalChamber();\r
-               o.setLength(Amount.valueOf(100.5, SI.MILLIMETER));\r
-               o.setID(Amount.valueOf(30, SI.MILLIMETER));\r
+               PVCCase o = new PVCCase();\r
+               o.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
                Editor e = new Editor(o);\r
                e.showAsWindow();\r
        }\r
@@ -119,6 +128,34 @@ public class Editor extends PropertySheetPanel {
                }\r
                \r
        }\r
+       \r
+       public static class EnumPropertyEditor<E extends Enum<E>> extends PropertyEditorSupport {\r
+               JComboBox editor = new JComboBox();\r
+               DefaultComboBoxModel model = new DefaultComboBoxModel();\r
+               Class<E> clazz;\r
+               public EnumPropertyEditor(Class<E> clazz){\r
+                       this.clazz = clazz;\r
+                       for ( E e : EnumSet.allOf(clazz) ){\r
+                               model.addElement(e);\r
+                       }\r
+                       editor.setModel(model);\r
+               }\r
+               \r
+               @Override\r
+               public Object getValue() {\r
+                       return editor.getSelectedItem();\r
+               }\r
+               \r
+               @Override\r
+               public boolean supportsCustomEditor() {\r
+                       return true;\r
+               }\r
+               \r
+               @Override\r
+               public Component getCustomEditor() {\r
+                       return editor;\r
+               }\r
+       }\r
 \r
        public static class AmountPropertyEditor extends PropertyEditorSupport {\r
                JTextField editor = new JTextField();\r