Clear warnings for Indigo
[sw/motorsim] / gui / com / billkuker / rocketry / motorsim / visual / Editor.java
index 93e32932ecf3aeca274ad73efbbb322dc0bf8b91..824e9e5fd0738ab99400b0db96f8a19943f3d182 100644 (file)
@@ -2,6 +2,8 @@ package com.billkuker.rocketry.motorsim.visual;
 \r
 import java.awt.Component;\r
 import java.awt.Dimension;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ActionListener;\r
 import java.beans.IntrospectionException;\r
 import java.beans.Introspector;\r
 import java.beans.PropertyChangeEvent;\r
@@ -11,10 +13,12 @@ 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
@@ -25,7 +29,6 @@ import javax.swing.table.TableCellRenderer;
 import org.apache.log4j.Logger;\r
 import org.jscience.physics.amount.Amount;\r
 \r
-import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
 import com.billkuker.rocketry.motorsim.RocketScience;\r
 import com.l2fprod.common.propertysheet.PropertySheetPanel;\r
 \r
@@ -36,7 +39,7 @@ public class Editor extends PropertySheetPanel {
 \r
        private Object obj;\r
 \r
-       @SuppressWarnings("deprecation")\r
+       @SuppressWarnings({ "deprecation", "rawtypes", "unchecked" })\r
        public Editor(Object o) {\r
                obj = o;\r
 \r
@@ -62,6 +65,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
@@ -82,8 +90,7 @@ public class Editor extends PropertySheetPanel {
                                        log.debug("Writing properties to object.");\r
                                        writeToObject(obj);\r
                                } catch (Exception v) {\r
-                                       // TODO\r
-                                       v.printStackTrace();\r
+                                       log.error(v);\r
                                        java.awt.Toolkit.getDefaultToolkit().beep();\r
                                } finally {\r
                                        readFromObject(obj);\r
@@ -101,15 +108,14 @@ public class Editor extends PropertySheetPanel {
                f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);\r
                f.setVisible(true);\r
        }\r
-       \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
+               Schedule40 o = new Schedule40();\r
+               o.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
                Editor e = new Editor(o);\r
                e.showAsWindow();\r
        }\r
-       \r
+       */\r
        public static class AmountRenderer implements TableCellRenderer {\r
                @Override\r
                public Component getTableCellRendererComponent(JTable table,\r
@@ -119,6 +125,43 @@ public class Editor extends PropertySheetPanel {
                }\r
                \r
        }\r
+       \r
+       public class EnumPropertyEditor<E extends Enum<E>> extends PropertyEditorSupport {\r
+               JComboBox editor = new JComboBox(){\r
+                       private static final long serialVersionUID = 1L;\r
+                       {\r
+                               addActionListener(new ActionListener(){\r
+                                       @Override\r
+                                       public void actionPerformed(ActionEvent e) {\r
+                                               getTable().commitEditing();\r
+                                       }});\r
+                       }\r
+               };\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
@@ -166,7 +209,7 @@ public class Editor extends PropertySheetPanel {
 \r
                }\r
 \r
-               @SuppressWarnings("unchecked")\r
+               @SuppressWarnings({"rawtypes","unchecked"})\r
                @Override\r
                public void setValue(Object o) {\r
                        Amount a = (Amount) o;\r