Fixed notation of numbers in editor
authorBill Kuker <bkuker@billkuker.com>
Tue, 1 Sep 2009 00:01:05 +0000 (00:01 +0000)
committerBill Kuker <bkuker@billkuker.com>
Tue, 1 Sep 2009 00:01:05 +0000 (00:01 +0000)
src/com/billkuker/rocketry/motorsim/visual/Editor.java

index 9fa90caf2641319bdb3fcac934565e2036aec0b0..8bae23cb3acdda0eea2424afa5816853cd2a001f 100644 (file)
@@ -8,22 +8,30 @@ import java.beans.PropertyChangeListener;
 import java.beans.PropertyDescriptor;\r
 import java.beans.PropertyEditorManager;\r
 import java.beans.PropertyEditorSupport;\r
+import java.text.DecimalFormat;\r
+import java.text.NumberFormat;\r
 import java.util.Vector;\r
 \r
+import javax.measure.unit.SI;\r
 import javax.measure.unit.Unit;\r
 import javax.swing.JFrame;\r
+import javax.swing.JLabel;\r
+import javax.swing.JTable;\r
 import javax.swing.JTextField;\r
 import javax.swing.WindowConstants;\r
+import javax.swing.table.TableCellRenderer;\r
+import javax.swing.text.TableView.TableCell;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.jscience.physics.amount.Amount;\r
 \r
+import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
 import com.l2fprod.common.propertysheet.PropertySheetPanel;\r
 \r
 public class Editor extends PropertySheetPanel {\r
        private static final long serialVersionUID = 1L;\r
-\r
-       private static Logger log = Logger.getLogger(Editor.class);\r
+       private static final NumberFormat nf = new DecimalFormat("##########.###");\r
+       private static final Logger log = Logger.getLogger(Editor.class);\r
 \r
        private Object obj;\r
 \r
@@ -32,6 +40,8 @@ public class Editor extends PropertySheetPanel {
 \r
                PropertyEditorManager.registerEditor(Amount.class,\r
                                AmountPropertyEditor.class);\r
+               \r
+               getRendererRegistry().registerRenderer(Amount.class, AmountRenderer.class);\r
 \r
                // Build the list of properties we want it to edit\r
                //final PropertySheetPanel ps = new PropertySheetPanel();\r
@@ -80,6 +90,25 @@ public class Editor extends PropertySheetPanel {
                f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);\r
                f.setVisible(true);\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
+               Editor e = new Editor(o);\r
+               e.showAsWindow();\r
+       }\r
+       \r
+       public static class AmountRenderer implements TableCellRenderer {\r
+               @Override\r
+               public Component getTableCellRendererComponent(JTable table,\r
+                               Object value, boolean isSelected, boolean hasFocus, int row,\r
+                               int column) {\r
+                       Amount a = (Amount)value;\r
+                       return new JLabel(nf.format(a.doubleValue(a.getUnit())) + " " + a.getUnit() );\r
+               }\r
+               \r
+       }\r
 \r
        public static class AmountPropertyEditor extends PropertyEditorSupport {\r
                JTextField editor = new JTextField();\r
@@ -133,13 +162,14 @@ public class Editor extends PropertySheetPanel {
                        if (a.isExact())\r
                                text = a.getExactValue() + " " + a.getUnit();\r
                        else\r
-                               text = a.doubleValue(a.getUnit()) + " " + a.getUnit();\r
+                               text = nf.format(a.doubleValue(a.getUnit())) + " " + a.getUnit();\r
 \r
                        setAsText(text);\r
                }\r
 \r
                @Override\r
                public void setAsText(String text) throws IllegalArgumentException {\r
+                       System.out.println("Setting text " + text);\r
                        editor.setText(text);\r
                };\r
 \r