Переглянути джерело

SDK:
- fix AssetLinkNode to being editable (deleting etc.)

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9088 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

nor..67 14 роки тому
батько
коміт
ebf0d1647c

+ 28 - 1
sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeAssetLinkNode.java

@@ -33,7 +33,8 @@ package com.jme3.gde.core.sceneexplorer.nodes;
 
 
 import com.jme3.asset.ModelKey;
 import com.jme3.asset.ModelKey;
 import com.jme3.gde.core.scene.SceneApplication;
 import com.jme3.gde.core.scene.SceneApplication;
-import com.jme3.gde.core.sceneexplorer.nodes.SceneExplorerNode;
+import com.jme3.gde.core.sceneexplorer.nodes.actions.AddUserDataAction;
+import com.jme3.gde.core.sceneexplorer.nodes.actions.NewControlPopup;
 import com.jme3.scene.AssetLinkNode;
 import com.jme3.scene.AssetLinkNode;
 import java.awt.Image;
 import java.awt.Image;
 import java.io.IOException;
 import java.io.IOException;
@@ -42,7 +43,12 @@ import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutionException;
 import javax.swing.Action;
 import javax.swing.Action;
+import org.openide.actions.CopyAction;
+import org.openide.actions.CutAction;
 import org.openide.actions.DeleteAction;
 import org.openide.actions.DeleteAction;
+import org.openide.actions.PasteAction;
+import org.openide.actions.RenameAction;
+import org.openide.awt.Actions;
 import org.openide.loaders.DataObject;
 import org.openide.loaders.DataObject;
 import org.openide.nodes.AbstractNode;
 import org.openide.nodes.AbstractNode;
 import org.openide.nodes.Children;
 import org.openide.nodes.Children;
@@ -62,6 +68,7 @@ public class JmeAssetLinkNode extends JmeNode {
     private static Image smallImage =
     private static Image smallImage =
             ImageUtilities.loadImage("com/jme3/gde/core/sceneexplorer/nodes/icons/linknode.gif");
             ImageUtilities.loadImage("com/jme3/gde/core/sceneexplorer/nodes/icons/linknode.gif");
     private AssetLinkNode geom;
     private AssetLinkNode geom;
+    private AssetLinkChildren linkChildren;
 
 
     public JmeAssetLinkNode() {
     public JmeAssetLinkNode() {
     }
     }
@@ -69,6 +76,8 @@ public class JmeAssetLinkNode extends JmeNode {
     public JmeAssetLinkNode(AssetLinkNode spatial, JmeSpatialChildren children) {
     public JmeAssetLinkNode(AssetLinkNode spatial, JmeSpatialChildren children) {
         super(spatial, new AssetLinkChildren(spatial));
         super(spatial, new AssetLinkChildren(spatial));
         getLookupContents().add(spatial);
         getLookupContents().add(spatial);
+        linkChildren = (AssetLinkChildren)getChildren();
+        linkChildren.setReadOnly(children.readOnly);
         this.geom = spatial;
         this.geom = spatial;
         setName(spatial.getName());
         setName(spatial.getName());
     }
     }
@@ -99,6 +108,24 @@ public class JmeAssetLinkNode extends JmeNode {
 
 
     }
     }
 
 
+    @Override
+    public Action[] getActions(boolean context) {
+        if (linkChildren.readOnly) {
+            return new Action[]{
+                        SystemAction.get(CopyAction.class),};
+        } else {
+            return new Action[]{
+                        new NewControlPopup(this),
+                        Actions.alwaysEnabled(new AddUserDataAction(this), "Add User Data", "", false),
+                        SystemAction.get(RenameAction.class),
+                        SystemAction.get(CopyAction.class),
+                        SystemAction.get(CutAction.class),
+                        SystemAction.get(PasteAction.class),
+                        SystemAction.get(DeleteAction.class)
+                    };
+        }
+    }
+
     public Class getExplorerObjectClass() {
     public Class getExplorerObjectClass() {
         return AssetLinkNode.class;
         return AssetLinkNode.class;
     }
     }