import java.awt.BorderLayout;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
import javax.measure.quantity.Duration;
import javax.measure.quantity.Pressure;
import javax.measure.unit.SI;
import javax.measure.unit.Unit;
import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import com.billkuker.rocketry.motorsim.Burn;
import com.billkuker.rocketry.motorsim.RocketScience;
+import com.billkuker.rocketry.motorsim.RocketScience.UnitPreferenceListener;
public class MultiMotorPressureChart extends JPanel implements BurnWatcher {
private static final long serialVersionUID = 1L;
public MultiMotorPressureChart() {
this.setLayout(new BorderLayout());
+ RocketScience.addUnitPreferenceListener(new UnitPreferenceListener() {
+ @Override
+ public void preferredUnitsChanged() {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ removeAll();
+ dataset.removeAllSeries();
+ Set<Burn> burns = new HashSet<Burn>();
+ burns.addAll(burnToSeries.keySet());
+ burnToSeries.clear();
+ setup();
+ for ( Burn b : burns ){
+ addBurn(b);
+ }
+ revalidate();
+ }
+ });
+ }
+ });
+ setup();
+ }
+
+ private void setup(){
time = RocketScience.UnitPreference.getUnitPreference()
.getPreferredUnit(SI.SECOND);
pressureUnit = RocketScience.UnitPreference.getUnitPreference()