reduce memory
authorAlexey Kudravtsev <cdr@intellij.com>
Mon, 28 Jun 2010 14:00:23 +0000 (18:00 +0400)
committerAlexey Kudravtsev <cdr@intellij.com>
Wed, 30 Jun 2010 10:13:39 +0000 (14:13 +0400)
java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/nodes/CompositePackagingElementNode.java
java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/SourceItemNodeBase.java
platform/platform-api/src/com/intellij/ui/treeStructure/SimpleMutableNode.java
platform/platform-api/src/com/intellij/ui/treeStructure/filtered/FilteringTreeStructure.java
platform/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsTree.java
platform/platform-impl/testSrc/com/intellij/ide/util/treeView/FilteringTreeBuilderTest.java
platform/util/src/com/intellij/util/io/fs/IoFile.java

index b252e4442253f77d9969638603c1a385c6e26850..03a98270156044aadb1a6bab673324ae48eae529 100644 (file)
@@ -51,7 +51,7 @@ public class CompositePackagingElementNode extends PackagingElementNode<Composit
       PackagingTreeNodeFactory.addNodes(element.getChildren(), this, element, myContext, mySubstitutionParameters, getNodeSource(element), children,
                                         myArtifactType, new HashSet<PackagingElement<?>>());
     }
-    return children.toArray(new SimpleNode[children.size()]);
+    return children.isEmpty() ? NO_CHILDREN : children.toArray(new SimpleNode[children.size()]);
   }
 
   @Override
index 212c9582b7573b0b06925cd0a4b053158571b4f6..359ee783a476eb6c7253e47db4321680a3d64259 100644 (file)
@@ -71,7 +71,7 @@ public abstract class SourceItemNodeBase extends ArtifactsTreeNode {
         }
       }
     }
-    return children.toArray(new SimpleNode[children.size()]);
+    return children.isEmpty() ? NO_CHILDREN : children.toArray(new SimpleNode[children.size()]);
   }
 
   @Nullable
index 4d65e970fa9636d93b8b20a971c7798dc079f9ec..b0ac36ece49c80f548eb9369e013dc594ead8986 100644 (file)
@@ -23,7 +23,7 @@ import java.util.List;
 
 public abstract class SimpleMutableNode extends CachingSimpleNode {
 
-  private final List myChildren = new ArrayList();
+  private final List<SimpleNode> myChildren = new ArrayList<SimpleNode>();
 
   public SimpleMutableNode() {
   }
@@ -37,7 +37,7 @@ public abstract class SimpleMutableNode extends CachingSimpleNode {
   }
 
   protected final SimpleNode[] buildChildren() {
-    return (SimpleNode[]) myChildren.toArray(new SimpleNode[myChildren.size()]);
+    return myChildren.isEmpty() ? NO_CHILDREN : myChildren.toArray(new SimpleNode[myChildren.size()]);
   }
 
   public final SimpleNode add(SimpleNode child) {
@@ -48,8 +48,8 @@ public abstract class SimpleMutableNode extends CachingSimpleNode {
 
 
   public final SimpleNode[] addAll(SimpleNode[] children) {
-    for (int i = 0; i < children.length; i++) {
-      add(children[i]);
+    for (SimpleNode aChildren : children) {
+      add(aChildren);
     }
 
     return children;
index 2f0b19c463061ea7a260b8b2b821b6858c6a3c1c..e182f56ecea752d00dc298f90b7c900f4f567cdd 100644 (file)
@@ -164,7 +164,7 @@ public class FilteringTreeStructure extends AbstractTreeStructure {
     }
 
     protected SimpleNode[] buildChildren() {
-      return myChildren.toArray(new SimpleNode[myChildren.size()]);
+      return myChildren.isEmpty() ? NO_CHILDREN : myChildren.toArray(new SimpleNode[myChildren.size()]);
     }
 
     public Object[] getEqualityObjects() {
index 140bef2c6caf5a693a200c226f4c99969fc35fbf..36b30d025a662501927aa398a3e2106a01e37d30 100644 (file)
@@ -431,13 +431,12 @@ public class OptionsTree extends JPanel implements Disposable, OptionsEditorColl
     }
 
     protected SimpleNode[] buildChildren() {
-      ArrayList<SimpleNode> result = new ArrayList<SimpleNode>();
-      for (int i = 0; i < myGroups.size(); i++) {
-        ConfigurableGroup eachGroup = myGroups.get(i);
+      List<SimpleNode> result = new ArrayList<SimpleNode>();
+      for (ConfigurableGroup eachGroup : myGroups) {
         result.addAll(buildGroup(eachGroup));
       }
 
-      return result.toArray(new SimpleNode[result.size()]);
+      return result.isEmpty() ? NO_CHILDREN : result.toArray(new SimpleNode[result.size()]);
     }
 
     private List<EditorNode> buildGroup(final ConfigurableGroup eachGroup) {
@@ -458,7 +457,7 @@ public class OptionsTree extends JPanel implements Disposable, OptionsEditorColl
     }
   }
 
-  private boolean isInvisibleNode(final Configurable child) {
+  private static boolean isInvisibleNode(final Configurable child) {
     return child instanceof SearchableConfigurable.Parent && !((SearchableConfigurable.Parent)child).isVisible();
   }
 
@@ -495,8 +494,8 @@ public class OptionsTree extends JPanel implements Disposable, OptionsEditorColl
     }
   }
 
+  private static final EditorNode[] EMPTY_EN_ARRAY = new EditorNode[0];
   class EditorNode extends Base {
-
     Configurable myConfigurable;
     ConfigurableGroup myGroup;
 
@@ -510,7 +509,7 @@ public class OptionsTree extends JPanel implements Disposable, OptionsEditorColl
 
     protected EditorNode[] buildChildren() {
       List<EditorNode> list = OptionsTree.this.buildChildren(myConfigurable, this, null);
-      return list.toArray(new EditorNode[list.size()]);
+      return list.isEmpty() ? EMPTY_EN_ARRAY : list.toArray(new EditorNode[list.size()]);
     }
 
     @Override
index 2f085e64d422980cb57d17b09d5945af4c9985c2..6f5f278349f6280c3d6b3832d9ce531e502f7f9f 100644 (file)
@@ -198,7 +198,7 @@ public class FilteringTreeBuilderTest extends BaseTreeTestCase  {
     }
 
     protected SimpleNode[] buildChildren() {
-      return myKids.values().toArray(new Node[myKids.size()]);
+      return myKids.isEmpty() ? NO_CHILDREN : myKids.values().toArray(new Node[myKids.size()]);
     }
 
     @Override
index 4dce8f09f174c9630c4b89d7180fc7dd0e1f3bcd..82edf1fde9e46682a775fb03b8da72985a379a7f 100644 (file)
@@ -24,7 +24,7 @@ import java.io.*;
 
 class IoFile implements IFile {
   private final File myFile;
-  private final IFile[] EMPTY_ARRAY = new IFile[0];
+  private static final IFile[] EMPTY_ARRAY = new IFile[0];
 
   public IoFile(@NotNull final File file) {
     myFile = file;