Material localization support
[debian/openrocket] / core / src / net / sf / openrocket / gui / dialogs / CustomMaterialDialog.java
index ed1d97cf1a0516f5662d084be2688a387b5babf9..9ef95a9b6c38c4f505fb69638303f2358159e75b 100644 (file)
@@ -15,6 +15,7 @@ import javax.swing.JSpinner;
 import javax.swing.JTextField;
 
 import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.database.Databases;
 import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.UnitSelector;
@@ -24,9 +25,10 @@ import net.sf.openrocket.material.Material;
 import net.sf.openrocket.startup.Application;
 
 public class CustomMaterialDialog extends JDialog {
-
+       private static final Translator trans = Application.getTranslator();
+       
        private final Material originalMaterial;
-
+       
        private boolean okClicked = false;
        private JComboBox typeBox;
        private JTextField nameField;
@@ -34,34 +36,33 @@ public class CustomMaterialDialog extends JDialog {
        private JSpinner densitySpinner;
        private UnitSelector densityUnit;
        private JCheckBox addBox;
-       private static final Translator trans = Application.getTranslator();
-
+       
        public CustomMaterialDialog(Window parent, Material material, boolean saveOption,
                        String title) {
                this(parent, material, saveOption, title, null);
        }
-
-
+       
+       
        public CustomMaterialDialog(Window parent, Material material, boolean saveOption,
                        String title, String note) {
                //// Custom material
                super(parent, trans.get("custmatdlg.title.Custommaterial"), Dialog.ModalityType.APPLICATION_MODAL);
-
+               
                this.originalMaterial = material;
-
+               
                JPanel panel = new JPanel(new MigLayout("fill, gap rel unrel"));
-
-
+               
+               
                // Add title and note
                if (title != null) {
-                       panel.add(new JLabel("<html><b>" + title + ":"), 
-                                       "gapleft para, span, wrap" + (note == null ? " para":""));
+                       panel.add(new JLabel("<html><b>" + title + ":"),
+                                       "gapleft para, span, wrap" + (note == null ? " para" : ""));
                }
                if (note != null) {
                        panel.add(new StyledLabel(note, -1), "span, wrap para");
                }
-
-
+               
+               
                //// Material name
                panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialname")));
                nameField = new JTextField(15);
@@ -69,8 +70,8 @@ public class CustomMaterialDialog extends JDialog {
                        nameField.setText(material.getName());
                }
                panel.add(nameField, "span, growx, wrap");
-
-
+               
+               
                // Material type (if not known)
                panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialtype")));
                if (material == null) {
@@ -87,28 +88,28 @@ public class CustomMaterialDialog extends JDialog {
                } else {
                        panel.add(new JLabel(material.getType().toString()), "span, growx, wrap");
                }
-
-
+               
+               
                // Material density:
                panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialdensity")));
                densitySpinner = new JSpinner();
                panel.add(densitySpinner, "w 70lp");
-               densityUnit = new UnitSelector((DoubleModel)null);
+               densityUnit = new UnitSelector((DoubleModel) null);
                panel.add(densityUnit, "w 30lp");
                panel.add(new JPanel(), "growx, wrap");
                updateDensityModel();
-
-
+               
+               
                // Save option
                if (saveOption) {
                        //// Add material to database
                        addBox = new JCheckBox(trans.get("custmatdlg.checkbox.Addmaterial"));
-                       panel.add(addBox,"span, wrap");
+                       panel.add(addBox, "span, wrap");
                }
-
+               
                //// OK button
                JButton okButton = new JButton(trans.get("dlg.but.ok"));
-
+               
                okButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -116,8 +117,8 @@ public class CustomMaterialDialog extends JDialog {
                                CustomMaterialDialog.this.setVisible(false);
                        }
                });
-               panel.add(okButton,"span, split, tag ok");
-
+               panel.add(okButton, "span, split, tag ok");
+               
                ////  Cancel
                JButton closeButton = new JButton(trans.get("dlg.but.cancel"));
                closeButton.addActionListener(new ActionListener() {
@@ -127,49 +128,44 @@ public class CustomMaterialDialog extends JDialog {
                                CustomMaterialDialog.this.setVisible(false);
                        }
                });
-               panel.add(closeButton,"tag cancel");
-
+               panel.add(closeButton, "tag cancel");
+               
                this.setContentPane(panel);
                this.pack();
                this.setLocationByPlatform(true);
                GUIUtil.setDisposableDialogOptions(this, okButton);
        }
-
-
+       
+       
        public boolean getOkClicked() {
                return okClicked;
        }
-
-
+       
+       
        public boolean isAddSelected() {
                return addBox.isSelected();
        }
-
-
+       
+       
        public Material getMaterial() {
                Material.Type type;
                String name;
-               double density;
-
+               double materialDensity;
+               
                if (typeBox != null) {
                        type = (Material.Type) typeBox.getSelectedItem();
                } else {
                        type = originalMaterial.getType();
                }
-
+               
                name = nameField.getText().trim();
-
-               density = this.density.getValue();
-
-               // If the name has not changed from the original name and we started with a system material.
-               if ( name.equals( originalMaterial.getName()) ) {
-                       return Material.newUserMaterialWithKey(type, originalMaterial.getKey(), originalMaterial.getName(), density);
-               } else {
-                       return Material.newUserMaterial(type, name, density);
-               }
+               
+               materialDensity = this.density.getValue();
+               
+               return Databases.findMaterial(type, name, materialDensity);
        }
-
-
+       
+       
        private void updateDensityModel() {
                if (originalMaterial != null) {
                        if (density == null) {