Added: export from file menu, csv escaping using commons.text library

This commit is contained in:
jppetrakis 2023-03-01 09:29:39 -05:00
parent 2739287a3d
commit b17e60c62b
6 changed files with 40 additions and 7 deletions

View File

@ -39,5 +39,6 @@
<classpathentry kind="lib" path="lib/istack-commons-runtime.jar"/>
<classpathentry kind="lib" path="lib/graal-sdk-22.1.0.1.jar"/>
<classpathentry kind="lib" path="lib/js-scriptengine-22.1.0.1.jar"/>
<classpathentry kind="lib" path="lib/commons-text-1.10.0.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

Binary file not shown.

View File

@ -536,7 +536,7 @@ simpanel.pop.plot = Plot / Export
simpanel.pop.run = Run
simpanel.pop.delete = Delete
simpanel.pop.duplicate = Duplicate
simpanel.pop.export_to_csv = Export to csv file
simpanel.pop.export_to_csv = Export table to csv file
simpanel.checkbox.donotask = Do not ask me again
simpanel.lbl.defpref = You can change the default operation in the preferences.
simpanel.dlg.lbl.DeleteSim1 = Delete the selected simulations?
@ -1441,6 +1441,7 @@ main.menu.file.quit = Quit
main.menu.file.quit.desc = Quit the program
main.menu.file.exportDecal = Save decal image\u2026
main.menu.file.exportDecal.desc = Save a decal from the current rocket design to a file for editing.
main.menu.file.table.export_to_csv = Export sim table to csv file
main.menu.edit = Edit
main.menu.edit.desc = Rocket editing

View File

@ -39,5 +39,6 @@
<classpathentry kind="lib" path="/OpenRocket Core/lib/jaxb-api.2.3.1.jar"/>
<classpathentry kind="lib" path="/OpenRocket Core/lib/jaxb-runtime.2.3.1.jar"/>
<classpathentry kind="lib" path="/OpenRocket Core/lib/guava-26.0-jre.jar"/>
<classpathentry kind="lib" path="/OpenRocket Core/lib/commons-text-1.10.0.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -566,6 +566,17 @@ public class BasicFrame extends JFrame {
//// END CREATE and implement File > "Encode 3D" menu and submenu
*/
// export sim table...
JMenuItem exportSimTableToCSVMenuItem = new JMenuItem(trans.get("main.menu.file.table.export_to_csv"));
exportSimTableToCSVMenuItem.setIcon(Icons.FILE_EXPORT_AS);
menu.add(exportSimTableToCSVMenuItem);
exportSimTableToCSVMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exportSimulationTableToCSVAction();
}
});
exportSimTableToCSVMenuItem.setEnabled(simulationPanel.isReadyToExportSimTableToCSV());
menu.addSeparator();
//// Close
@ -1430,7 +1441,10 @@ public class BasicFrame extends JFrame {
}
// END ROCKSIM Export Action
public boolean exportSimulationTableToCSVAction() {
simulationPanel.runExportSimTableToCSVAction();
return false;
}
/**
* Perform the writing of the design to the given file in RockSim format.
*

View File

@ -17,10 +17,8 @@ import java.awt.event.MouseEvent;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
@ -45,6 +43,7 @@ import javax.swing.filechooser.FileFilter;
import javax.swing.table.DefaultTableCellRenderer;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -724,7 +723,8 @@ public class SimulationPanel extends JPanel {
int nullCnt = 0;
rowColumnElement.clear();
// get the simulation's warning text if any... this bypasses
// get the simulation's warning text if any... this bypasses the need to use
// the column 0 stuff which is kind of difficult to use!
WarningSet ws = document.getSimulation(i).getSimulatedWarnings();
String warningsText = "";
for (Warning w : ws) {
@ -738,7 +738,8 @@ public class SimulationPanel extends JPanel {
for (int j=1; j<modelColumnCount ; j++) { // skip first column
Object o = simulationTableModel.getValueAt(i, j);
if (o != null) {
rowColumnElement.add(o.toString());
String value = o.toString();
rowColumnElement.add(StringEscapeUtils.escapeCsv(value));
} else {
rowColumnElement.add("");
nullCnt++;
@ -766,7 +767,6 @@ public class SimulationPanel extends JPanel {
@Override
public void updateEnabledState() {
// TODO Auto-generated method stub
setEnabled(true);
}
@ -1192,4 +1192,20 @@ public class SimulationPanel extends JPanel {
}
}
}
public boolean isReadyToExportSimTableToCSV() {
// probably belt-n-suspenders to check for row/column count...
File documentFile = document.getFile();
if (documentFile != null && simulationTableModel != null) {
return true;
}
return false;
}
/**
* Run the csv export action...
*/
public void runExportSimTableToCSVAction() {
dumpSimulationTableAction.actionPerformed(null);
}
}