Browse Source

Merge pull request #602 from neph1/Issue#597

Issue 597 - Avoid duplicates in matdef list
Rickard Edén 1 year ago
parent
commit
f96aab34c5

+ 12 - 27
jme3-materialeditor/src/com/jme3/gde/materials/multiview/MaterialEditorTopComponent.java

@@ -24,12 +24,13 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeSet;
 import java.util.logging.Logger;
 import java.util.stream.Collectors;
 import javax.swing.event.DocumentEvent;
@@ -39,18 +40,16 @@ import org.openide.util.Exceptions;
 import org.openide.util.NbBundle;
 import org.openide.windows.TopComponent;
 import org.openide.windows.WindowManager;
-//import org.openide.util.ImageUtilities;
 import org.netbeans.api.settings.ConvertAsProperties;
 import org.openide.cookies.SaveCookie;
 import org.openide.filesystems.FileUtil;
 import org.openide.loaders.DataObject;
 import org.openide.nodes.Node;
 import org.openide.util.HelpCtx;
-import org.openide.util.lookup.InstanceContent;
 import org.openide.windows.CloneableTopComponent;
 
 /**
- * Top component which displays something.
+ * Top component for Material Editor
  */
 @ConvertAsProperties(dtd = "-//com.jme3.gde.materials.multiview//MaterialEditor//EN",
 autostore = false)
@@ -58,12 +57,7 @@ autostore = false)
 public final class MaterialEditorTopComponent extends CloneableTopComponent implements MaterialWidgetListener, MaterialChangeProvider {
 
     private static MaterialEditorTopComponent instance;
-    /** path to the icon used by the component and its open action */
-//    static final String ICON_PATH = "SET/PATH/TO/ICON/HERE";
     private static final String PREFERRED_ID = "MaterialEditorTopComponent";
-    //private Lookup lookup;
-    private final InstanceContent lookupContents = new InstanceContent();
-//    private SaveNode saveNode;
     private DataObject dataObject;
     private EditableMaterialFile materialFile;
     private String materialFileName;
@@ -457,8 +451,6 @@ public final class MaterialEditorTopComponent extends CloneableTopComponent impl
     @Override
     public HelpCtx getHelpCtx() {
         HelpCtx ctx = new HelpCtx("sdk.material_editing");
-        //this call is for single components:
-        //HelpCtx.setHelpIDString(this, "com.jme3.gde.core.sceneviewer");
         return ctx;
     }
 
@@ -483,11 +475,8 @@ public final class MaterialEditorTopComponent extends CloneableTopComponent impl
     }
 
     void writeProperties(java.util.Properties p) {
-        // better to version settings since initial version as advocated at
-        // http://wiki.apidesign.org/wiki/PropertyFiles
         p.setProperty("version", "1.0");
         p.setProperty("MaterialFileName", materialFileName);
-        // TODO store your settings
     }
 
     Object readProperties(java.util.Properties p) {
@@ -543,8 +532,6 @@ public final class MaterialEditorTopComponent extends CloneableTopComponent impl
 
     private class DocumentChangeListener implements DocumentListener {
 
-        String newline = "\n";
-
         @Override
         public void insertUpdate(DocumentEvent e) {
             checkSave();
@@ -598,25 +585,23 @@ public final class MaterialEditorTopComponent extends CloneableTopComponent impl
         materialFile = null;
         jComboBox1.removeAllItems();
         jComboBox1.addItem("");
-        List<String> matDefList = Arrays.asList(matDefs);
-        Collections.sort(matDefList);
-        for (String matDef : matDefList) {
-            jComboBox1.addItem(matDef);
+        Set<String> matDefList = new TreeSet<>(Arrays.asList(matDefs));
+        for (String string : matDefList) {
+            jComboBox1.addItem(string);
         }
-
         jComboBox1.setSelectedItem(selected);
         materialFile = prop;
     }
 
     private void updateProperties() {
         for (Component component : optionsPanel.getComponents()) {
-            if (component instanceof MaterialPropertyWidget) {
-                ((MaterialPropertyWidget) component).registerChangeListener(null);
+            if (component instanceof MaterialPropertyWidget materialPropertyWidget) {
+                materialPropertyWidget.registerChangeListener(null);
             }
         }
         for (Component component : texturePanel.getComponents()) {
-            if (component instanceof MaterialPropertyWidget) {
-                ((MaterialPropertyWidget) component).registerChangeListener(null);
+            if (component instanceof MaterialPropertyWidget materialPropertyWidget) {
+                materialPropertyWidget.registerChangeListener(null);
             }
         }
         optionsPanel.removeAll();
@@ -674,8 +659,8 @@ public final class MaterialEditorTopComponent extends CloneableTopComponent impl
 
     private void updateStates() {
         for (Component component : statesPanel.getComponents()) {
-            if (component instanceof MaterialPropertyWidget) {
-                ((MaterialPropertyWidget) component).registerChangeListener(null);
+            if (component instanceof MaterialPropertyWidget materialPropertyWidget) {
+                materialPropertyWidget.registerChangeListener(null);
             }
         }
         statesPanel.removeAll();