Simulate concurrently
authorBill Kuker <bkuker@billkuker.com>
Sun, 22 Jan 2012 15:00:13 +0000 (15:00 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sun, 22 Jan 2012 15:00:13 +0000 (15:00 +0000)
gui/com/billkuker/rocketry/motorsim/visual/openRocket/RocketSimTable.java

index 491700cd0e5fb846e0030ce8c45104cdd73c0341..b6155f3864d450c61d45f23027c48d9cd4e3fc83 100644 (file)
@@ -54,6 +54,7 @@ public class RocketSimTable extends JScrollPane implements BurnWatcher,
                        this.b = b;\r
                }\r
 \r
+               boolean ready = false;\r
                Simulation s;\r
                Motor m;\r
                Burn b;\r
@@ -100,6 +101,8 @@ public class RocketSimTable extends JScrollPane implements BurnWatcher,
                        Entry e = entries.get(row);\r
                        if (e == null)\r
                                return "???";\r
+                       if (e.ready == false)\r
+                               return "...";\r
                        switch (col) {\r
                        case 0:\r
                                return e.m.getName();\r
@@ -143,7 +146,8 @@ public class RocketSimTable extends JScrollPane implements BurnWatcher,
                                        Entry entry = entries.get(table.getSelectedRow());\r
                                        SimulationPlotDialog.showPlot(SwingUtilities\r
                                                        .getWindowAncestor(RocketSimTable.this), entry.s,\r
-                                                       PlotConfiguration.DEFAULT_CONFIGURATIONS[0].resetUnits());\r
+                                                       PlotConfiguration.DEFAULT_CONFIGURATIONS[0]\r
+                                                                       .resetUnits());\r
                                }\r
                        }\r
                });\r
@@ -155,7 +159,7 @@ public class RocketSimTable extends JScrollPane implements BurnWatcher,
        }\r
 \r
        private Entry toEntry(Burn b) {\r
-               Entry e = new Entry(b.getMotor(), doc.getSimulation(0).copy(), b);\r
+               final Entry e = new Entry(b.getMotor(), doc.getSimulation(0).copy(), b);\r
                OneMotorDatabase.setBurn(b);\r
 \r
                e.s.getConfiguration().getMotorConfigurationID();\r
@@ -169,11 +173,20 @@ public class RocketSimTable extends JScrollPane implements BurnWatcher,
                        }\r
                }\r
 \r
-               try {\r
-                       e.s.simulate();\r
-               } catch (SimulationException e1) {\r
-                       e1.printStackTrace();\r
-               }\r
+               tm.fireTableDataChanged();\r
+               new Thread() {\r
+                       @Override\r
+                       public void run() {\r
+                               try {\r
+                                       e.s.simulate();\r
+                                       e.ready = true;\r
+                                       tm.fireTableDataChanged();\r
+                               } catch (SimulationException e1) {\r
+                                       e1.printStackTrace();\r
+                               }\r
+\r
+                       }\r
+               }.start();\r
 \r
                return e;\r
        }\r
@@ -204,7 +217,7 @@ public class RocketSimTable extends JScrollPane implements BurnWatcher,
        @Override\r
        public void preferredUnitsChanged() {\r
                tm.fireTableDataChanged();\r
-               if (UnitPreference.getUnitPreference() == UnitPreference.NONSI){\r
+               if (UnitPreference.getUnitPreference() == UnitPreference.NONSI) {\r
                        System.err.println("NONSI");\r
                        UnitGroup.setDefaultImperialUnits();\r
                } else {\r