diff options
author | John Ahlroos <john@vaadin.com> | 2012-09-04 14:04:23 +0300 |
---|---|---|
committer | John Ahlroos <john@vaadin.com> | 2012-09-04 14:04:23 +0300 |
commit | 53393b62163a78f1f7bd19d7e7b95a8e779da15f (patch) | |
tree | 4cde915372f58816f2c41c56aa5ec2689dcd0f42 /client | |
parent | b71575ffa96304ee4e8f2a482a6472d4e443ea34 (diff) | |
download | vaadin-framework-53393b62163a78f1f7bd19d7e7b95a8e779da15f.tar.gz vaadin-framework-53393b62163a78f1f7bd19d7e7b95a8e779da15f.zip |
More work on ComponentLocator
Diffstat (limited to 'client')
-rw-r--r-- | client/src/com/vaadin/client/ComponentLocator.java | 51 |
1 files changed, 14 insertions, 37 deletions
diff --git a/client/src/com/vaadin/client/ComponentLocator.java b/client/src/com/vaadin/client/ComponentLocator.java index a6ee4cf8b2..f22dbc422d 100644 --- a/client/src/com/vaadin/client/ComponentLocator.java +++ b/client/src/com/vaadin/client/ComponentLocator.java @@ -16,16 +16,13 @@ package com.vaadin.client; import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.RootPanel; -import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.vaadin.client.ui.SubPartAware; import com.vaadin.client.ui.UI.VUI; @@ -437,13 +434,6 @@ public class ComponentLocator { return null; } - private static final Map<String, String> replacementMap = new HashMap<String, String>(); - static { - replacementMap.put("VVerticalLayout", "VBoxLayout"); - replacementMap.put("VHorizontalLayout", "VBoxLayout"); - replacementMap.put("ChildComponentContainer", "VBoxLayout$Slot"); - } - /** * Locates the widget based on a String locator. * @@ -494,10 +484,6 @@ public class ComponentLocator { // VVerticalLayout and 0 String[] split = part.split("\\[", 2); String widgetClassName = split[0]; - if (replacementMap.containsKey(widgetClassName)) { - widgetClassName = replacementMap.get(widgetClassName); - } - String indexString = split[1]; int widgetPosition = Integer.parseInt(indexString.substring(0, indexString.length() - 1)); @@ -508,6 +494,16 @@ public class ComponentLocator { continue; } + if ("VVerticalLayout".equals(widgetClassName) + || "VHorizontalLayout".equals(widgetClassName)) { + widgetClassName = "VBoxLayout"; + } + + if (w instanceof VBoxLayout + && "ChildComponentContainer".equals(widgetClassName)) { + widgetClassName = "VBoxLayout$Slot"; + } + if (w instanceof VTabsheetPanel && widgetPosition != 0) { // TabSheetPanel now only contains 1 connector => the index // is always 0 which indicates the widget in the active tab @@ -522,9 +518,8 @@ public class ComponentLocator { * (which would originally have found the widget inside the * ChildComponentContainer) */ - if ((w instanceof VMeasuringOrderedLayout - || w instanceof VBoxLayout || w instanceof VGridLayout) - && "VBoxLayout$Slot".equals(widgetClassName) + if ((w instanceof VMeasuringOrderedLayout || w instanceof VGridLayout) + && "ChildComponentContainer".equals(widgetClassName) && i + 1 < parts.length) { HasWidgets layout = (HasWidgets) w; @@ -532,24 +527,13 @@ public class ComponentLocator { String nextPart = parts[i + 1]; String[] nextSplit = nextPart.split("\\[", 2); String nextWidgetClassName = nextSplit[0]; - if (replacementMap.containsKey(nextWidgetClassName)) { - nextWidgetClassName = replacementMap - .get(nextWidgetClassName); - } // Find the n:th child and count the number of children with // the same type before it int nextIndex = 0; for (Widget child : layout) { - String childName = Util.getSimpleName(child); - - if (childName.equals("VBoxLayout$Slot")) { - child = ((SimplePanel) child).getWidget(); - childName = Util.getSimpleName(child); - } - - boolean matchingType = nextWidgetClassName - .equals(childName); + boolean matchingType = nextWidgetClassName.equals(Util + .getSimpleName(child)); if (matchingType && widgetPosition == 0) { // This is the n:th child that we looked for break; @@ -558,7 +542,6 @@ public class ComponentLocator { // a match return null; } else if (matchingType) { - } else if (matchingType) { // If this was another child of the expected type, // increase the count for the next step nextIndex++; @@ -604,14 +587,8 @@ public class ComponentLocator { while (iterator.hasNext()) { Widget child = iterator.next(); - String simpleName2 = Util.getSimpleName(child); - if (simpleName2.equals("VBoxLayout$Slot")) { - child = ((SimplePanel) child).getWidget(); - simpleName2 = Util.getSimpleName(child); - } - if (widgetClassName.equals(simpleName2)) { if (widgetPosition == 0) { w = child; |