|
@@ -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();
|