From 203d4e8b2ae0031692751cc72d2b05544df50930 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 30 May 2022 21:41:08 +0200 Subject: [PATCH] Implement edit action for simulations --- .../sf/openrocket/gui/main/BasicFrame.java | 2 +- .../sf/openrocket/gui/main/RocketActions.java | 32 +++++++++++++------ .../openrocket/gui/main/SimulationPanel.java | 2 +- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java index 18db163b7..81aa0130b 100644 --- a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -708,7 +708,7 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem(actions.getEditAction()); + item = new JMenuItem(actions.getEditAction(simulationPanel)); menu.add(item); item = new JMenuItem(actions.getCutAction()); diff --git a/swing/src/net/sf/openrocket/gui/main/RocketActions.java b/swing/src/net/sf/openrocket/gui/main/RocketActions.java index bf98f7b28..7f8bbc0f8 100644 --- a/swing/src/net/sf/openrocket/gui/main/RocketActions.java +++ b/swing/src/net/sf/openrocket/gui/main/RocketActions.java @@ -175,6 +175,10 @@ public class RocketActions { public Action getEditAction() { return editAction; } + public Action getEditAction(SimulationPanel simulationPanel) { + ((EditAction) editAction).setSimulationPanel(simulationPanel); + return editAction; + } public Action getEditActionNoIcon() { return editActionNoIcon; @@ -880,6 +884,7 @@ public class RocketActions { */ private class EditAction extends RocketAction { private static final long serialVersionUID = 1L; + private SimulationPanel simulationPanel = null; public EditAction() { //// Edit @@ -892,28 +897,35 @@ public class RocketActions { clipboardChanged(); } + public void setSimulationPanel(SimulationPanel simulationPanel) { + this.simulationPanel = simulationPanel; + } + @Override public void actionPerformed(ActionEvent e) { List components = selectionModel.getSelectedComponents(); - if (!checkAllClassesEqual(components)) - return; + Simulation[] sims = selectionModel.getSelectedSimulations(); - // Do nothing if the config dialog is already visible - if (ComponentConfigDialog.isDialogVisible()) - return; + if ((components != null) && (components.size() > 0) && checkAllClassesEqual(components)) { + // Do nothing if the config dialog is already visible + if (ComponentConfigDialog.isDialogVisible()) + return; - List listeners = null; - if (components.size() > 1) { - listeners = components.subList(1, components.size()); + List listeners = null; + if (components.size() > 1) { + listeners = components.subList(1, components.size()); + } + ComponentConfigDialog.showDialog(parentFrame, document, components.get(0), listeners); + } else if (sims != null && sims.length > 0 && (simulationPanel != null)) { + simulationPanel.editSimulationAction(); } - ComponentConfigDialog.showDialog(parentFrame, document, components.get(0), listeners); } @Override public void clipboardChanged() { List components = selectionModel.getSelectedComponents(); - this.setEnabled(checkAllClassesEqual(components)); + this.setEnabled(checkAllClassesEqual(components) || isSimulationSelected()); } /** diff --git a/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java b/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java index 19fd89b93..8b1733f68 100644 --- a/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java @@ -604,7 +604,7 @@ public class SimulationPanel extends JPanel { fireMaintainSelection(); } - private void editSimulationAction() { + public void editSimulationAction() { Simulation[] sims = getSelectedSimulations(); if (sims == null) return;