From d825723d514f5918bf3484841062a7f68e005fc0 Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Tue, 23 Nov 2010 00:22:32 +0000 Subject: [PATCH] Show fuels that are loaded in graph Show editors for fuels that are loaded --- .../rocketry/motorsim/fuel/FuelsEditor.java | 28 +++++++++++++++---- .../motorsim/fuel/MultiFuelChart.java | 12 +++++--- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/gui/com/billkuker/rocketry/motorsim/fuel/FuelsEditor.java b/gui/com/billkuker/rocketry/motorsim/fuel/FuelsEditor.java index e74b7da..3399b49 100644 --- a/gui/com/billkuker/rocketry/motorsim/fuel/FuelsEditor.java +++ b/gui/com/billkuker/rocketry/motorsim/fuel/FuelsEditor.java @@ -5,17 +5,21 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.net.URI; +import java.util.Map; import javax.swing.JFrame; import javax.swing.JMenuBar; import com.billkuker.rocketry.motorsim.Fuel; +import com.billkuker.rocketry.motorsim.fuel.FuelResolver.FuelsChangeListener; +import com.billkuker.rocketry.motorsim.fuel.editable.EditableFuel; import com.billkuker.rocketry.motorsim.fuel.editable.EditablePiecewiseLinearFuel; import com.billkuker.rocketry.motorsim.fuel.editable.EditablePiecewiseSaintRobertFuel; import com.billkuker.rocketry.motorsim.io.MotorIO; import com.billkuker.rocketry.motorsim.visual.MultiObjectEditor; -public class FuelsEditor extends MultiObjectEditor { +public class FuelsEditor extends MultiObjectEditor implements FuelsChangeListener { private static final long serialVersionUID = 1L; @@ -26,7 +30,7 @@ public class FuelsEditor extends MultiObjectEditor { public FuelsEditor(Frame frame) { super(frame, "Fuel"); addTab("All Fuels", allFuels); - + FuelResolver.addFuelsChangeListener(this); addCreator(new ObjectCreator() { @Override public Fuel newObject() { @@ -55,16 +59,16 @@ public class FuelsEditor extends MultiObjectEditor { }); } - /* + @Override protected void objectAdded(Fuel f, AbstractFuelEditor e){ - allFuels.addFuel(f); + allFuels.addFuel(f, true); } @Override protected void objectRemoved(Fuel f, AbstractFuelEditor e){ allFuels.removeFuel(f); - }*/ + } @Override public AbstractFuelEditor createEditor(Fuel o) { @@ -79,12 +83,14 @@ public class FuelsEditor extends MultiObjectEditor { @Override protected Fuel loadFromFile(File f) throws IOException { Fuel fuel = MotorIO.readFuel(new FileInputStream(f)); + FuelResolver.add(fuel, f.toURI()); return fuel; } @Override protected void saveToFile(Fuel o, File f) throws IOException { MotorIO.writeFuel(o, new FileOutputStream(f)); + FuelResolver.add(o, f.toURI()); } @SuppressWarnings("deprecation") @@ -100,4 +106,16 @@ public class FuelsEditor extends MultiObjectEditor { f.show(); } + + @Override + public void fuelsChanged() { + for ( Map.Entry e : FuelResolver.getFuelMap().entrySet() ){ + if ( !has(e.getValue()) ){ + if ( e.getValue() instanceof EditableFuel ){ + add(e.getValue(), new File(e.getKey())); + } + } + } + } + } diff --git a/gui/com/billkuker/rocketry/motorsim/fuel/MultiFuelChart.java b/gui/com/billkuker/rocketry/motorsim/fuel/MultiFuelChart.java index 4c03e12..587073a 100644 --- a/gui/com/billkuker/rocketry/motorsim/fuel/MultiFuelChart.java +++ b/gui/com/billkuker/rocketry/motorsim/fuel/MultiFuelChart.java @@ -4,6 +4,7 @@ import java.awt.BorderLayout; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.HashMap; +import java.util.HashSet; import javax.measure.quantity.Pressure; import javax.measure.quantity.Velocity; @@ -32,6 +33,7 @@ public class MultiFuelChart extends JPanel implements FuelResolver.FuelsChangeLi private HashMap fuelToSeries = new HashMap(); private Unit pressureUnit; private Unit rateUnit; + private HashSet editFuels = new HashSet(); public MultiFuelChart() { this.setLayout(new BorderLayout()); @@ -73,7 +75,9 @@ public class MultiFuelChart extends JPanel implements FuelResolver.FuelsChangeLi fuelsChanged(); } - public void addFuel(final Fuel f) { + void addFuel(final Fuel f, final boolean keep) { + if ( keep ) + editFuels.add(f); XYSeries s = createSeries(f); fuelToSeries.put(f, s); dataset.addSeries(s); @@ -82,7 +86,7 @@ public class MultiFuelChart extends JPanel implements FuelResolver.FuelsChangeLi public void propertyChange(PropertyChangeEvent evt) { System.err.println("PropertyChanged :" + evt.getPropertyName()); removeFuel(f); - addFuel(f); + addFuel(f, keep); } }); } @@ -110,11 +114,11 @@ public class MultiFuelChart extends JPanel implements FuelResolver.FuelsChangeLi public void fuelsChanged() { for ( Fuel f : FuelResolver.getFuelMap().values() ){ if ( !fuelToSeries.containsKey(f) ){ - addFuel(f); + addFuel(f, false); } } for ( Fuel f : fuelToSeries.keySet() ){ - if ( !FuelResolver.getFuelMap().values().contains(f) ){ + if ( !FuelResolver.getFuelMap().values().contains(f) && !editFuels.contains(f) ){ removeFuel(f); } } -- 2.47.2