Author: stefanegli
Date: Thu Sep 19 14:12:44 2013
New Revision: 1524746

URL: http://svn.apache.org/r1524746
Log:
SLING-3085 : buglet fix in the content-browser : supporting case 
nodename.dir/.content.xml with no further children

Modified:
    
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java
    
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java

Modified: 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java
URL: 
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java?rev=1524746&r1=1524745&r2=1524746&view=diff
==============================================================================
--- 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java
 (original)
+++ 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java
 Thu Sep 19 14:12:44 2013
@@ -84,6 +84,19 @@ public class DirNode extends JcrNode {
        
        @Override
        protected void addChild(JcrNode jcrNode) {
+               JcrNode effectiveSibling = getEffectiveSibling();
+               if (effectiveSibling!=null) {
+                       // excellent, the parent contains a child which 
+                       // matches the .dir/_jcr_content pattern, so add this 
child there
+                       effectiveSibling.addChild(jcrNode);
+                       // but also hide this node from my parent
+                       effectiveSibling.getParent().hide(this);
+                       return;
+               }
+               super.addChild(jcrNode);
+       }
+       
+       JcrNode getEffectiveSibling() {
                final String decodedName = getDecodedName();
                JcrNode nonDirNodeParent = parent;
                outerloop:while(nonDirNodeParent!=null && (nonDirNodeParent 
instanceof DirNode)) {
@@ -104,17 +117,12 @@ public class DirNode extends JcrNode {
                for (Iterator<JcrNode> it = c.iterator(); it.hasNext();) {
                        JcrNode node = it.next();
                        if (node.getName().equals(decodedName)) {
-                               // excellent, the parent contains a child which 
-                               // matches the .dir/_jcr_content pattern, so 
add this child there
-                               node.addChild(jcrNode);
-                               // but also hide this node from my parent
-                               nonDirNodeParent.hide(this);
-                               return;
+                               return node;
                        }
                }
-               super.addChild(jcrNode);
+               return null;
        }
-       
+
        @Override
        public IFile getFileForEditor() {
                return null;

Modified: 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java
URL: 
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java?rev=1524746&r1=1524745&r2=1524746&view=diff
==============================================================================
--- 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java
 (original)
+++ 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java
 Thu Sep 19 14:12:44 2013
@@ -83,8 +83,17 @@ public class GenericJcrRootFile extends 
                NodeList children = domNode.getChildNodes();
                final JcrNode effectiveParent;
                if (isRootContentXml()) {
-                       handleProperties(domNode, parent.properties);
-                       effectiveParent = parent;
+                       if (parent instanceof DirNode) {
+                               DirNode dirNodeParent = (DirNode)parent;
+                               JcrNode dirNodeParentParent = 
dirNodeParent.getParent();
+                               JcrNode effectiveSibling = 
dirNodeParent.getEffectiveSibling();
+                               handleProperties(domNode, 
effectiveSibling.properties);
+                               effectiveParent = parent;
+                               dirNodeParentParent.hide(parent);
+                       } else {
+                               handleProperties(domNode, parent.properties);
+                               effectiveParent = parent;
+                       }
                } else {
                        handleProperties(domNode, properties);
                        effectiveParent = this;


Reply via email to