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,8 +109,10 @@ 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 (targetSelectedRow > -1 && targetSelectedRow < model.getRowCount()) {
int selectedRow = table.getRowSorter().convertRowIndexToModel(targetSelectedRow);
if (selectedColumn == 4) { if (selectedColumn == 4) {
if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(ComponentPresetEditor.this, if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(ComponentPresetEditor.this,
"Do you want to delete this preset?", "Do you want to delete this preset?",
@ -133,6 +129,7 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
} }
} }
} }
}
}); });
@ -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));
@ -356,7 +356,7 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
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 {
@ -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,11 +437,15 @@ 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 (editContext.getMaterialsLoaded() != null) {
m = editContext.getMaterialsLoaded().getMaterial(preset.get
(ComponentPreset.MATERIAL));
}
// If there was no material loaded with that name, use the component's material. // If there was no material loaded with that name, use the component's material.
if ( m == null ) { if (m == null) {
m = preset.get(ComponentPreset.MATERIAL); m = preset.get(ComponentPreset.MATERIAL);
} }
materials.put(m); materials.put(m);