diff --git a/src/main/java/org/olat/core/gui/components/Container.java b/src/main/java/org/olat/core/gui/components/Container.java index 79ab79d993bfb439a022670ef901ae1b3c3a11bb..790bd4735724191ac4e0aa77fbb324da38dc0c48 100644 --- a/src/main/java/org/olat/core/gui/components/Container.java +++ b/src/main/java/org/olat/core/gui/components/Container.java @@ -110,6 +110,10 @@ public abstract class Container extends Component implements ComponentCollection return components.values(); } + public Map<String,Component> getComponentMap() { + return components; + } + public void clear() { components.clear(); } diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java index 0409dc2141213e1fdfc53affed214dcfa88040ae..7eb9abd3ebcdc16674b8d59c0ba7119d7f31aa4d 100644 --- a/src/main/java/org/olat/core/gui/components/Window.java +++ b/src/main/java/org/olat/core/gui/components/Window.java @@ -1066,7 +1066,7 @@ public class Window extends Container { boolean correctFullPath = true; for (int i = res.length -1; i >= 0 && correctFullPath; i--) { String cname = res[i]; - Container co = (Container) cur; // we did not record the leaf, so we know it's a container + ComponentCollection co = (ComponentCollection) cur; // we did not record the leaf, so we know it's a container Component c = co.getComponent(cname); if (c == null) { correctFullPath = false; diff --git a/src/main/java/org/olat/core/gui/render/Renderer.java b/src/main/java/org/olat/core/gui/render/Renderer.java index e2371d389d46efc338426c4b293267ef83a34957..839465929d7ee448390f22ca278739fd77616b7f 100644 --- a/src/main/java/org/olat/core/gui/render/Renderer.java +++ b/src/main/java/org/olat/core/gui/render/Renderer.java @@ -26,6 +26,9 @@ package org.olat.core.gui.render; +import java.util.Iterator; +import java.util.Map; + import org.olat.core.defaults.dispatcher.StaticMediaDispatcher; import org.olat.core.gui.GUIInterna; import org.olat.core.gui.GlobalSettings; @@ -43,16 +46,6 @@ import org.olat.core.util.WebappHelper; */ public class Renderer { - /** - * <code>showDebugInfo</code> - */ - //public static boolean showDebugInfo = false; - /** - * true: use mini style, false: use traditional style - */ - //public static boolean debugMiniStyle = true; - - private URLBuilder urlBuilder; private Translator translator; private Container renderContainer; @@ -235,16 +228,20 @@ public class Renderer { Container ccpar = cc.getParent(); while (ccpar != null) { // omit content pane // find out name under which cc was registered in its parent - that is the relevant name, not the name of the component itself - for (Component chd: ccpar.getComponents()) { + Map<String,Component> namedChildren = ccpar.getComponentMap(); + for (Iterator<String> it_chd = namedChildren.keySet().iterator(); it_chd.hasNext();) { + String chdName = it_chd.next(); + Component chd = ccpar.getComponent(chdName); if (chd == cc) { // found -> append name - pathsb.append(chd.getComponentName()).append('!'); + pathsb.append(chdName).append('!'); break; } } cc = ccpar; ccpar = cc.getParent(); } + System.out.println(pathsb.toString()); cubu.setComponentPath(pathsb.toString()); }