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;
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.
*
// 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));
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
* (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;
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;
// Error if we're past the desired position without
// 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
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;