Add possibility to copy simulation extensions from other simulations

This commit is contained in:
Sampo Niskanen 2015-01-07 17:13:41 +02:00
parent 79fd36dc9f
commit 78d282f56f
3 changed files with 38 additions and 2 deletions

View File

@ -387,6 +387,7 @@ simedtdlg.border.SimExt = Simulation extensions
simedtdlg.SimExt.desc = <html><i>Simulation extensions</i> enable advanced features and custom functionality during flight simulations. You can for example do hardware-in-the-loop testing with them.
simedtdlg.SimExt.noExtensions = No simulation extensions defined
simedtdlg.SimExt.add = Add extension
simedtdlg.SimExt.copyExtension = Copy extension
simedtdlg.lbl.Noflightdata = No flight data available.
simedtdlg.lbl.runsimfirst = Please run the simulation first.
simedtdlg.chart.Simflight = Simulated flight

View File

@ -170,7 +170,7 @@ public class SimulationEditDialog extends JDialog {
//// Launch conditions
tabbedPane.addTab(trans.get("simedtdlg.tab.Launchcond"), new SimulationConditionsPanel(simulation[0]));
//// Simulation options
tabbedPane.addTab(trans.get("simedtdlg.tab.Simopt"), new SimulationOptionsPanel(simulation[0]));
tabbedPane.addTab(trans.get("simedtdlg.tab.Simopt"), new SimulationOptionsPanel(document, simulation[0]));
tabbedPane.setSelectedIndex(0);

View File

@ -24,6 +24,7 @@ import javax.swing.MenuElement;
import javax.swing.SwingUtilities;
import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.document.Simulation;
import net.sf.openrocket.gui.SpinnerEditor;
import net.sf.openrocket.gui.adaptors.DoubleModel;
@ -51,12 +52,14 @@ class SimulationOptionsPanel extends JPanel {
private static final Translator trans = Application.getTranslator();
private OpenRocketDocument document;
final Simulation simulation;
private JPanel currentExtensions;
SimulationOptionsPanel(final Simulation simulation) {
SimulationOptionsPanel(OpenRocketDocument document, final Simulation simulation) {
super(new MigLayout("fill"));
this.document = document;
this.simulation = simulation;
final SimulationOptions conditions = simulation.getOptions();
@ -233,6 +236,38 @@ class SimulationOptionsPanel extends JPanel {
}
}
}
JMenu copyMenu = null;
for (Simulation sim : document.getSimulations()) {
if (!sim.getSimulationExtensions().isEmpty()) {
JMenu menu = new JMenu(sim.getName());
for (final SimulationExtension ext : sim.getSimulationExtensions()) {
JMenuItem item = new JMenuItem(ext.getName());
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
SimulationExtension e = ext.clone();
simulation.getSimulationExtensions().add(e);
updateCurrentExtensions();
SwingSimulationExtensionConfigurator configurator = findConfigurator(e);
if (configurator != null) {
configurator.configure(e, simulation, SwingUtilities.windowForComponent(SimulationOptionsPanel.this));
}
}
});
menu.add(item);
}
if (copyMenu == null) {
copyMenu = new JMenu(trans.get("simedtdlg.SimExt.copyExtension"));
}
copyMenu.add(menu);
}
}
if (copyMenu != null) {
basemenu.add(copyMenu);
}
return basemenu;
}