Changes to support integrated into main application.

This commit is contained in:
Doug Pedrick 2012-09-26 17:24:11 +00:00
parent efb4952333
commit 391d02dc66

View File

@ -1,15 +1,19 @@
package net.sf.openrocket.gui.preset; package net.sf.openrocket.gui.preset;
import java.awt.Window; import net.miginfocom.swing.MigLayout;
import java.awt.event.ActionEvent; import net.sf.openrocket.gui.util.FileHelper;
import java.awt.event.ActionListener; import net.sf.openrocket.gui.util.Icons;
import java.awt.event.MouseAdapter; import net.sf.openrocket.gui.util.SwingPreferences;
import java.awt.event.MouseEvent; import net.sf.openrocket.l10n.ResourceBundleTranslator;
import java.io.File; import net.sf.openrocket.l10n.Translator;
import java.io.FileReader; import net.sf.openrocket.logging.LogHelper;
import java.io.IOException; import net.sf.openrocket.material.Material;
import java.util.ArrayList; import net.sf.openrocket.preset.ComponentPreset;
import java.util.List; import net.sf.openrocket.preset.loader.MaterialHolder;
import net.sf.openrocket.preset.loader.RocksimComponentFileTranslator;
import net.sf.openrocket.preset.xml.OpenRocketComponentDTO;
import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
import net.sf.openrocket.startup.Application;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.Action; import javax.swing.Action;
@ -29,20 +33,16 @@ import javax.swing.JTable;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel; import javax.swing.table.DefaultTableModel;
import javax.xml.bind.JAXBException; import javax.xml.bind.JAXBException;
import java.awt.Window;
import net.miginfocom.swing.MigLayout; import java.awt.event.ActionEvent;
import net.sf.openrocket.gui.util.FileHelper; import java.awt.event.ActionListener;
import net.sf.openrocket.gui.util.Icons; import java.awt.event.MouseAdapter;
import net.sf.openrocket.gui.util.SwingPreferences; import java.awt.event.MouseEvent;
import net.sf.openrocket.l10n.ResourceBundleTranslator; import java.io.File;
import net.sf.openrocket.logging.LogHelper; import java.io.FileReader;
import net.sf.openrocket.material.Material; import java.io.IOException;
import net.sf.openrocket.preset.ComponentPreset; import java.util.ArrayList;
import net.sf.openrocket.preset.loader.MaterialHolder; import java.util.List;
import net.sf.openrocket.preset.loader.RocksimComponentFileTranslator;
import net.sf.openrocket.preset.xml.OpenRocketComponentDTO;
import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
import net.sf.openrocket.startup.Application;
/** /**
* A UI for editing component presets. Currently this is a standalone application - run the main within this class. * A UI for editing component presets. Currently this is a standalone application - run the main within this class.
@ -58,7 +58,7 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
/** /**
* The I18N translator. * The I18N translator.
*/ */
private static ResourceBundleTranslator trans = null; private static Translator trans = null;
/** /**
* The table of presets. * The table of presets.
@ -70,16 +70,10 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
*/ */
private DataTableModel model; private DataTableModel model;
/**
* Flag that indicates if an existing Preset is currently being edited.
*/
// private boolean editingSelected = false;
private final OpenedFileContext editContext = new OpenedFileContext(); private final OpenedFileContext editContext = new OpenedFileContext();
static { static {
trans = new ResourceBundleTranslator("l10n.messages"); trans = Application.getTranslator();
net.sf.openrocket.startup.Application.setBaseTranslator(trans);
} }
/** /**
@ -115,21 +109,24 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
table.addMouseListener(new MouseAdapter() { table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
JTable target = (JTable) e.getSource(); JTable target = (JTable) e.getSource();
int selectedColumn = table.getColumnModel().getColumnIndexAtX( target.getSelectedColumn() ); int selectedColumn = table.getColumnModel().getColumnIndexAtX(target.getSelectedColumn());
int selectedRow = table.getRowSorter().convertRowIndexToModel( target.getSelectedRow() ); final int targetSelectedRow = target.getSelectedRow();
if (selectedColumn == 4) { if (targetSelectedRow > -1 && targetSelectedRow < model.getRowCount()) {
if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(ComponentPresetEditor.this, int selectedRow = table.getRowSorter().convertRowIndexToModel(targetSelectedRow);
"Do you want to delete this preset?", if (selectedColumn == 4) {
"Confirm Delete", JOptionPane.YES_OPTION, if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(ComponentPresetEditor.this,
JOptionPane.QUESTION_MESSAGE)) { "Do you want to delete this preset?",
model.removeRow(selectedRow); "Confirm Delete", JOptionPane.YES_OPTION,
JOptionPane.QUESTION_MESSAGE)) {
model.removeRow(selectedRow);
}
} }
} else {
else { if (e.getClickCount() == 2) {
if (e.getClickCount() == 2) { editContext.setEditingSelected(true);
editContext.setEditingSelected(true); new PresetEditorDialog(ComponentPresetEditor.this,
new PresetEditorDialog(ComponentPresetEditor.this, (ComponentPreset) model.getAssociatedObject(selectedRow), editContext.getMaterialsLoaded()).setVisible(true);
(ComponentPreset) model.getAssociatedObject(selectedRow), editContext.getMaterialsLoaded()).setVisible(true); }
} }
} }
} }
@ -204,8 +201,8 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
mnFile.add(mntmExit); mnFile.add(mntmExit);
mntmExit.addActionListener(new ActionListener() { mntmExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) { public void actionPerformed(ActionEvent arg0) {
Window w = SwingUtilities.getWindowAncestor(ComponentPresetEditor.this); Window w = SwingUtilities.getWindowAncestor(ComponentPresetEditor.this);
w.dispose(); w.dispose();
} }
}); });
@ -235,7 +232,7 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
//Is this a new preset? //Is this a new preset?
String description = preset.has(ComponentPreset.DESCRIPTION) ? preset.get(ComponentPreset.DESCRIPTION) : String description = preset.has(ComponentPreset.DESCRIPTION) ? preset.get(ComponentPreset.DESCRIPTION) :
preset.getPartNo(); preset.getPartNo();
if (!editContext.isEditingSelected()|| table.getSelectedRow() == -1) { if (!editContext.isEditingSelected() || table.getSelectedRow() == -1) {
model.addRow(new Object[]{preset.getManufacturer().getDisplayName(), preset.getType().name(), model.addRow(new Object[]{preset.getManufacturer().getDisplayName(), preset.getType().name(),
preset.getPartNo(), description, Icons.EDIT_DELETE}, preset); preset.getPartNo(), description, Icons.EDIT_DELETE}, preset);
} }
@ -257,6 +254,9 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
*/ */
public static void main(String[] args) { public static void main(String[] args) {
try { try {
trans = new ResourceBundleTranslator("l10n.messages");
net.sf.openrocket.startup.Application.setBaseTranslator(trans);
Application.setPreferences(new SwingPreferences()); Application.setPreferences(new SwingPreferences());
JFrame dialog = new JFrame(); JFrame dialog = new JFrame();
dialog.getContentPane().add(new ComponentPresetEditor(dialog)); dialog.getContentPane().add(new ComponentPresetEditor(dialog));
@ -355,9 +355,9 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
List<ComponentPreset> presets = null; List<ComponentPreset> presets = null;
if (file.getName().toLowerCase().endsWith(".orc")) { if (file.getName().toLowerCase().endsWith(".orc")) {
OpenRocketComponentDTO fileContents = new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent(new FileReader(file)); OpenRocketComponentDTO fileContents = new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent(new FileReader(file));
editContext.setMaterialsLoaded( new MaterialHolder(fileContents.asMaterialList()) ); editContext.setMaterialsLoaded(new MaterialHolder(fileContents.asMaterialList()));
presets = fileContents.asComponentPresets(); presets = fileContents.asComponentPresets();
} }
else { else {
if (file.getName().toLowerCase().endsWith(".csv")) { if (file.getName().toLowerCase().endsWith(".csv")) {
@ -429,8 +429,6 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
return false; return false;
} }
((SwingPreferences) Application.getPreferences()).setDefaultDirectory(chooser.getCurrentDirectory());
file = FileHelper.forceExtension(file, "orc"); file = FileHelper.forceExtension(file, "orc");
MaterialHolder materials = new MaterialHolder(); MaterialHolder materials = new MaterialHolder();
@ -439,13 +437,17 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
for (int x = 0; x < model.getRowCount(); x++) { for (int x = 0; x < model.getRowCount(); x++) {
ComponentPreset preset = (ComponentPreset) model.getAssociatedObject(x); ComponentPreset preset = (ComponentPreset) model.getAssociatedObject(x);
// If we don't have a material already defined for saving... // If we don't have a material already defined for saving...
if ( materials.getMaterial(preset.get(ComponentPreset.MATERIAL)) == null ) { if (materials.getMaterial(preset.get(ComponentPreset.MATERIAL)) == null) {
// Check if we loaded a material with this name. // Check if we loaded a material with this name.
Material m = editContext.getMaterialsLoaded().getMaterial(preset.get(ComponentPreset.MATERIAL)); Material m = null;
// If there was no material loaded with that name, use the component's material. if (editContext.getMaterialsLoaded() != null) {
if ( m == null ) { m = editContext.getMaterialsLoaded().getMaterial(preset.get
m = preset.get(ComponentPreset.MATERIAL); (ComponentPreset.MATERIAL));
} }
// If there was no material loaded with that name, use the component's material.
if (m == null) {
m = preset.get(ComponentPreset.MATERIAL);
}
materials.put(m); materials.put(m);
} }
presets.add(preset); presets.add(preset);