Refactor to better use export Action

This commit is contained in:
SiboVG 2023-03-06 20:35:47 +01:00
parent 9c7106a253
commit 887e38b637
4 changed files with 27 additions and 61 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

View File

@ -22,6 +22,7 @@ import java.util.Arrays;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import javax.swing.AbstractAction;
import javax.swing.Action; import javax.swing.Action;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JCheckBox; import javax.swing.JCheckBox;
@ -567,16 +568,10 @@ public class BasicFrame extends JFrame {
//// END CREATE and implement File > "Encode 3D" menu and submenu //// END CREATE and implement File > "Encode 3D" menu and submenu
*/ */
// export sim table... // export sim table...
JMenuItem exportSimTableToCSVMenuItem = new JMenuItem(trans.get("main.menu.file.table.exportToCSV")); AbstractAction simTableExportAction = simulationPanel.getSimulationTableAsCSVExportAction();
exportSimTableToCSVMenuItem.setIcon(Icons.FILE_EXPORT_AS); JMenuItem exportSimTableToCSVMenuItem = new JMenuItem(simTableExportAction);
menu.add(exportSimTableToCSVMenuItem); menu.add(exportSimTableToCSVMenuItem);
exportSimTableToCSVMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exportSimulationTableToCSVAction(e);
}
});
exportSimTableToCSVMenuItem.setEnabled(simulationPanel.isReadyToExportSimTableToCSV(exportSimTableToCSVMenuItem));
menu.addSeparator(); menu.addSeparator();
//// Close //// Close
@ -1441,10 +1436,6 @@ public class BasicFrame extends JFrame {
} }
// END ROCKSIM Export Action // END ROCKSIM Export Action
public boolean exportSimulationTableToCSVAction(ActionEvent e) {
simulationPanel.runExportSimTableToCSVAction(e);
return false;
}
/** /**
* Perform the writing of the design to the given file in RockSim format. * Perform the writing of the design to the given file in RockSim format.
* *

View File

@ -18,7 +18,6 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.JButton; import javax.swing.JButton;
@ -104,6 +103,7 @@ public class SimulationPanel extends JPanel {
private final JButton runButton; private final JButton runButton;
private final JButton deleteButton; private final JButton deleteButton;
private final JButton plotButton; private final JButton plotButton;
private final JButton simTableExportButton;
private final JPopupMenu pm; private final JPopupMenu pm;
private final SimulationAction editSimulationAction; private final SimulationAction editSimulationAction;
@ -111,9 +111,8 @@ public class SimulationPanel extends JPanel {
private final SimulationAction plotSimulationAction; private final SimulationAction plotSimulationAction;
private final SimulationAction duplicateSimulationAction; private final SimulationAction duplicateSimulationAction;
private final SimulationAction deleteSimulationAction; private final SimulationAction deleteSimulationAction;
private final SimulationAction dumpSimulationTableAction; private final SimulationAction simTableExportAction;
private final HashMap<String, String> valueColumnToUnitString = new HashMap<>();
private int[] previousSelection = null; private int[] previousSelection = null;
private JMenuItem exportSimTableToCSVMenuItem; private JMenuItem exportSimTableToCSVMenuItem;
@ -130,7 +129,7 @@ public class SimulationPanel extends JPanel {
plotSimulationAction = new PlotSimulationAction(); plotSimulationAction = new PlotSimulationAction();
duplicateSimulationAction = new DuplicateSimulationAction(); duplicateSimulationAction = new DuplicateSimulationAction();
deleteSimulationAction = new DeleteSimulationAction(); deleteSimulationAction = new DeleteSimulationAction();
dumpSimulationTableAction = new DumpSimulationToCSVAction(); simTableExportAction = new ExportSimulationTableAsCSVAction();
//////// The simulation action buttons //////// //////// The simulation action buttons ////////
@ -152,11 +151,6 @@ public class SimulationPanel extends JPanel {
runButton.setToolTipText(trans.get("simpanel.but.ttip.runsimu")); runButton.setToolTipText(trans.get("simpanel.but.ttip.runsimu"));
this.add(runButton, "gapright para"); this.add(runButton, "gapright para");
//// Run then Dump simulations
JButton dumpButton = new IconButton();
RocketActions.tieActionToButton(dumpButton, dumpSimulationTableAction, trans.get("simpanel.but.runsimulations"));
//// Delete simulations button //// Delete simulations button
deleteButton = new IconButton(); deleteButton = new IconButton();
RocketActions.tieActionToButton(deleteButton, deleteSimulationAction, trans.get("simpanel.but.deletesimulations")); RocketActions.tieActionToButton(deleteButton, deleteSimulationAction, trans.get("simpanel.but.deletesimulations"));
@ -168,6 +162,9 @@ public class SimulationPanel extends JPanel {
RocketActions.tieActionToButton(plotButton, plotSimulationAction, trans.get("simpanel.but.plotexport")); RocketActions.tieActionToButton(plotButton, plotSimulationAction, trans.get("simpanel.but.plotexport"));
this.add(plotButton, "wrap para"); this.add(plotButton, "wrap para");
//// Run then Dump simulations
simTableExportButton = new IconButton();
RocketActions.tieActionToButton(simTableExportButton, simTableExportAction, trans.get("simpanel.but.runsimulations"));
//////// The simulation table //////// The simulation table
@ -191,7 +188,7 @@ public class SimulationPanel extends JPanel {
pm.addSeparator(); pm.addSeparator();
pm.add(runSimulationAction); pm.add(runSimulationAction);
pm.add(plotSimulationAction); pm.add(plotSimulationAction);
pm.add(dumpSimulationTableAction); pm.add(simTableExportAction);
// The normal left/right and tab/shift-tab key action traverses each cell/column of the table instead of going to the next row. // The normal left/right and tab/shift-tab key action traverses each cell/column of the table instead of going to the next row.
TableRowTraversalPolicy.setTableRowTraversalPolicy(simulationTable); TableRowTraversalPolicy.setTableRowTraversalPolicy(simulationTable);
@ -247,7 +244,6 @@ public class SimulationPanel extends JPanel {
if ((simulationTable.getSelectedRow() != previousSelectedRow) || if ((simulationTable.getSelectedRow() != previousSelectedRow) ||
(simulationTable.getSelectedRowCount() != previousSelectedRowCount)) { (simulationTable.getSelectedRowCount() != previousSelectedRowCount)) {
updateButtonStates(); updateButtonStates();
updateMenuStates();
previousSelectedRow = simulationTable.getSelectedRow(); previousSelectedRow = simulationTable.getSelectedRow();
previousSelectedRowCount = simulationTable.getSelectedRowCount(); previousSelectedRowCount = simulationTable.getSelectedRowCount();
} }
@ -456,6 +452,14 @@ public class SimulationPanel extends JPanel {
} }
/**
* Return the action for exporting the simulation table data to a CSV file.
* @return
*/
public AbstractAction getSimulationTableAsCSVExportAction() {
return simTableExportAction;
}
protected void doPopup(MouseEvent e) { protected void doPopup(MouseEvent e) {
pm.show(e.getComponent(), e.getX(), e.getY()); pm.show(e.getComponent(), e.getX(), e.getY());
} }
@ -466,6 +470,7 @@ public class SimulationPanel extends JPanel {
runSimulationAction.updateEnabledState(); runSimulationAction.updateEnabledState();
plotSimulationAction.updateEnabledState(); plotSimulationAction.updateEnabledState();
duplicateSimulationAction.updateEnabledState(); duplicateSimulationAction.updateEnabledState();
simTableExportAction.updateEnabledState();
} }
/// when the simulation tab is selected this run outdated simulated if appropriate. /// when the simulation tab is selected this run outdated simulated if appropriate.
@ -617,11 +622,11 @@ public class SimulationPanel extends JPanel {
} }
} }
class DumpSimulationToCSVAction extends SimulationAction { class ExportSimulationTableAsCSVAction extends SimulationAction {
public DumpSimulationToCSVAction() { public ExportSimulationTableAsCSVAction() {
putValue(NAME, trans.get("simpanel.pop.exportToCSV")); putValue(NAME, trans.get("simpanel.pop.exportToCSV"));
putValue(SMALL_ICON, Icons.FILE_EXPORT_AS); putValue(SMALL_ICON, Icons.SIM_TABLE_EXPORT);
} }
@Override @Override
@ -681,12 +686,14 @@ public class SimulationPanel extends JPanel {
CsvOptionPanel CSVOptions = new CsvOptionPanel(SimulationTableCSVExport.class); CsvOptionPanel CSVOptions = new CsvOptionPanel(SimulationTableCSVExport.class);
fch.setAccessory(CSVOptions); fch.setAccessory(CSVOptions);
// TODO: update the file chooser dimensions, it's cropped because of the accessory panel
return fch; return fch;
} }
@Override @Override
public void updateEnabledState() { public void updateEnabledState() {
setEnabled(true); setEnabled(simulationTableModel != null && simulationTableModel.getRowCount() > 0);
} }
} }
@ -1111,37 +1118,4 @@ public class SimulationPanel extends JPanel {
} }
} }
} }
public boolean isReadyToExportSimTableToCSV(JMenuItem exportSimTableToCSVMenuItem) {
// This is the cheapest, dirtiest way I could think of to allow the activation/deactivation
// of the export to csv action under the file menu. With this, we can get activation of the
// menu based upon the exitence of the table model PLUS one or more row in the table.
if (this.exportSimTableToCSVMenuItem == null && exportSimTableToCSVMenuItem != null) {
this.exportSimTableToCSVMenuItem = exportSimTableToCSVMenuItem;
}
// an example being loaded will have file == null and simulationTableModel != null... likewise a new rocket
// will probably be the same... so this is probably belt-and-suspenders
if (simulationTableModel != null && simulationTableModel.getRowCount() > 0) {
return true;
}
return false;
}
/**
* A menu state updater that is an analog to the button state updater.
*/
private void updateMenuStates() {
// update the File->Export simulations table... menu entry
this.exportSimTableToCSVMenuItem.setEnabled(simulationTableModel != null && simulationTableModel.getRowCount() > 0);
}
/**
* Run the csv export action...
* @param e
*/
public void runExportSimTableToCSVAction(ActionEvent e) {
dumpSimulationTableAction.actionPerformed(e);
}
} }

View File

@ -56,6 +56,7 @@ public class Icons {
public static final Icon FILE_PRINT = loadImageIcon("pix/icons/print-design.specs.png", "Print specifications"); public static final Icon FILE_PRINT = loadImageIcon("pix/icons/print-design.specs.png", "Print specifications");
// public static final Icon FILE_IMPORT = loadImageIcon("pix/icons/model_import.png", "Import"); // public static final Icon FILE_IMPORT = loadImageIcon("pix/icons/model_import.png", "Import");
public static final Icon FILE_EXPORT_AS = loadImageIcon("pix/icons/model_export.png", "Export model as"); public static final Icon FILE_EXPORT_AS = loadImageIcon("pix/icons/model_export.png", "Export model as");
public static final Icon SIM_TABLE_EXPORT = loadImageIcon("pix/icons/sim_table_export.png", "Export simulation table");
public static final Icon ENCODE_3D = loadImageIcon("pix/icons/model_encode3d.png", "Encode 3D"); public static final Icon ENCODE_3D = loadImageIcon("pix/icons/model_encode3d.png", "Encode 3D");
public static final Icon FILE_CLOSE = loadImageIcon("pix/icons/document-close.png", "Close document"); public static final Icon FILE_CLOSE = loadImageIcon("pix/icons/document-close.png", "Close document");
public static final Icon FILE_QUIT = loadImageIcon("pix/icons/application-exit.png", "Quit OpenRocket"); public static final Icon FILE_QUIT = loadImageIcon("pix/icons/application-exit.png", "Quit OpenRocket");