From b0f20bff5de089686ac471e4c743e831bc6b9f23 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Tue, 28 Dec 2010 09:27:11 +0000 Subject: [PATCH] #6107 - VTwinColSelect should provide information about logical parts to TestBench svn changeset:16676/svn branch:6.5 --- src/com/vaadin/terminal/gwt/client/Util.java | 16 +++++++++++ .../gwt/client/ui/VTwinColSelect.java | 27 +++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/Util.java b/src/com/vaadin/terminal/gwt/client/Util.java index 444a16f68f..da69d67728 100644 --- a/src/com/vaadin/terminal/gwt/client/Util.java +++ b/src/com/vaadin/terminal/gwt/client/Util.java @@ -957,4 +957,20 @@ public class Util { } + /** + * Returns the index of the childElement within its parent. + * + * @param subElement + * @return + */ + public static int getChildElementIndex(Element childElement) { + int idx = 0; + Node n = childElement; + while ((n = n.getPreviousSibling()) != null) { + idx++; + } + + return idx; + } + } diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java b/src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java index de01ef6270..1915fcb6f4 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java @@ -603,7 +603,11 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, } private static final String SUBPART_OPTION_SELECT = "leftSelect"; + private static final String SUBPART_OPTION_SELECT_ITEM = SUBPART_OPTION_SELECT + + "-item"; private static final String SUBPART_SELECTION_SELECT = "rightSelect"; + private static final String SUBPART_SELECTION_SELECT_ITEM = SUBPART_SELECTION_SELECT + + "-item"; private static final String SUBPART_LEFT_CAPTION = "leftCaption"; private static final String SUBPART_RIGHT_CAPTION = "rightCaption"; private static final String SUBPART_ADD_BUTTON = "add"; @@ -612,8 +616,17 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, public Element getSubPartElement(String subPart) { if (SUBPART_OPTION_SELECT.equals(subPart)) { return options.getElement(); + } else if (subPart.startsWith(SUBPART_OPTION_SELECT_ITEM)) { + String idx = subPart.substring(SUBPART_OPTION_SELECT_ITEM.length()); + return (Element) options.getElement().getChild( + Integer.parseInt(idx)); } else if (SUBPART_SELECTION_SELECT.equals(subPart)) { return selections.getElement(); + } else if (subPart.startsWith(SUBPART_SELECTION_SELECT_ITEM)) { + String idx = subPart.substring(SUBPART_SELECTION_SELECT_ITEM + .length()); + return (Element) selections.getElement().getChild( + Integer.parseInt(idx)); } else if (optionsCaption != null && SUBPART_LEFT_CAPTION.equals(subPart)) { return optionsCaption.getElement(); @@ -637,9 +650,19 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, && selectionsCaption.getElement().isOrHasChild(subElement)) { return SUBPART_RIGHT_CAPTION; } else if (options.getElement().isOrHasChild(subElement)) { - return SUBPART_OPTION_SELECT; + if (options.getElement() == subElement) { + return SUBPART_OPTION_SELECT; + } else { + int idx = Util.getChildElementIndex(subElement); + return SUBPART_OPTION_SELECT_ITEM + idx; + } } else if (selections.getElement().isOrHasChild(subElement)) { - return SUBPART_SELECTION_SELECT; + if (selections.getElement() == subElement) { + return SUBPART_SELECTION_SELECT; + } else { + int idx = Util.getChildElementIndex(subElement); + return SUBPART_SELECTION_SELECT_ITEM + idx; + } } else if (add.getElement().isOrHasChild(subElement)) { return SUBPART_ADD_BUTTON; } else if (remove.getElement().isOrHasChild(subElement)) { -- 2.39.5