]> git.gag.com Git - debian/openrocket/commitdiff
Populate the Materials section of the output file with those materials referenced...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Wed, 6 Jun 2012 12:10:38 +0000 (12:10 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Wed, 6 Jun 2012 12:10:38 +0000 (12:10 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@762 180e2498-e6e9-4542-8430-84ac67f01cd8

core/src/net/sf/openrocket/gui/preset/ComponentPresetEditor.java

index c8d4a191de47ddd64acf7407cf86100ddf00899c..0c4ff3a269cb21504df3cf313cf48311fef70d80 100644 (file)
@@ -1,18 +1,14 @@
 package net.sf.openrocket.gui.preset;
 
-import net.miginfocom.swing.MigLayout;
-import net.sf.openrocket.gui.util.FileHelper;
-import net.sf.openrocket.gui.util.Icons;
-import net.sf.openrocket.gui.util.SwingPreferences;
-import net.sf.openrocket.l10n.ResourceBundleTranslator;
-import net.sf.openrocket.logging.LogHelper;
-import net.sf.openrocket.material.Material;
-import net.sf.openrocket.preset.ComponentPreset;
-import net.sf.openrocket.preset.loader.MaterialHolder;
-import net.sf.openrocket.preset.loader.RocksimComponentFileTranslator;
-import net.sf.openrocket.preset.xml.OpenRocketComponentLoader;
-import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
-import net.sf.openrocket.startup.Application;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
@@ -31,15 +27,20 @@ import javax.swing.JSeparator;
 import javax.swing.JTable;
 import javax.swing.table.DefaultTableModel;
 import javax.xml.bind.JAXBException;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+
+import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.gui.util.FileHelper;
+import net.sf.openrocket.gui.util.Icons;
+import net.sf.openrocket.gui.util.SwingPreferences;
+import net.sf.openrocket.l10n.ResourceBundleTranslator;
+import net.sf.openrocket.logging.LogHelper;
+import net.sf.openrocket.material.Material;
+import net.sf.openrocket.preset.ComponentPreset;
+import net.sf.openrocket.preset.loader.MaterialHolder;
+import net.sf.openrocket.preset.loader.RocksimComponentFileTranslator;
+import net.sf.openrocket.preset.xml.OpenRocketComponentLoader;
+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.
@@ -427,15 +428,25 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
 
         file = FileHelper.forceExtension(file, "orc");
 
-        List<Material> materials = new ArrayList<Material>();
+        MaterialHolder materials = new MaterialHolder();
         List<ComponentPreset> presets = new ArrayList<ComponentPreset>();
 
         for (int x = 0; x < model.getRowCount(); x++) {
             ComponentPreset preset = (ComponentPreset) model.getAssociatedObject(x);
+            // If we don't have a material already defined for saving...
+            if ( materials.getMaterial(preset.get(ComponentPreset.MATERIAL)) == null ) {
+               // Check if we loaded a material with this name.
+               Material m = editContext.getMaterialsLoaded().getMaterial(preset.get(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);
+            }
             presets.add(preset);
         }
 
-        return FileHelper.confirmWrite(file, this) && new OpenRocketComponentSaver().save(file, materials, presets);
+        return FileHelper.confirmWrite(file, this) && new OpenRocketComponentSaver().save(file, new ArrayList<Material>(materials.values()), presets);
     }
 
     class OpenedFileContext {