From 393a5faf1e0e21212ee0f9fed756244d7c3dc807 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Wed, 28 Nov 2012 20:53:55 +0200 Subject: [PATCH] Fixed tooltip handling for TreeTable (#9088) Change-Id: I9e4ae2ae4a040de795121db359d930ccda115f62 --- .../src/com/vaadin/client/ui/VTreeTable.java | 4 +- .../ui/treetable/TreeTableConnector.java | 27 ++ ...TreeTableItemDescriptionGeneratorTest.html | 357 ++++++++++++++++++ ...TreeTableItemDescriptionGeneratorTest.java | 28 ++ 4 files changed, 414 insertions(+), 2 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/components/treetable/TreeTableItemDescriptionGeneratorTest.html create mode 100644 uitest/src/com/vaadin/tests/components/treetable/TreeTableItemDescriptionGeneratorTest.java diff --git a/client/src/com/vaadin/client/ui/VTreeTable.java b/client/src/com/vaadin/client/ui/VTreeTable.java index d4bfa9698d..318fcb3bca 100644 --- a/client/src/com/vaadin/client/ui/VTreeTable.java +++ b/client/src/com/vaadin/client/ui/VTreeTable.java @@ -122,7 +122,7 @@ public class VTreeTable extends VScrollTable { } } - class VTreeTableScrollBody extends VScrollTable.VScrollTableBody { + public class VTreeTableScrollBody extends VScrollTable.VScrollTableBody { private int indentWidth = -1; VTreeTableScrollBody() { @@ -138,7 +138,7 @@ public class VTreeTable extends VScrollTable { return new VTreeTableRow(uidl, aligns2); } - class VTreeTableRow extends + public class VTreeTableRow extends VScrollTable.VScrollTableBody.VScrollTableRow { private boolean isTreeCellAdded = false; diff --git a/client/src/com/vaadin/client/ui/treetable/TreeTableConnector.java b/client/src/com/vaadin/client/ui/treetable/TreeTableConnector.java index be6e54c5ce..db16bb32a1 100644 --- a/client/src/com/vaadin/client/ui/treetable/TreeTableConnector.java +++ b/client/src/com/vaadin/client/ui/treetable/TreeTableConnector.java @@ -15,12 +15,16 @@ */ package com.vaadin.client.ui.treetable; +import com.google.gwt.dom.client.Element; import com.vaadin.client.ApplicationConnection; +import com.vaadin.client.TooltipInfo; import com.vaadin.client.UIDL; +import com.vaadin.client.Util; import com.vaadin.client.ui.FocusableScrollPanel; import com.vaadin.client.ui.VScrollTable.VScrollTableBody.VScrollTableRow; import com.vaadin.client.ui.VTreeTable; import com.vaadin.client.ui.VTreeTable.PendingNavigationEvent; +import com.vaadin.client.ui.VTreeTable.VTreeTableScrollBody.VTreeTableRow; import com.vaadin.client.ui.table.TableConnector; import com.vaadin.shared.ui.Connect; import com.vaadin.shared.ui.treetable.TreeTableConstants; @@ -112,4 +116,27 @@ public class TreeTableConnector extends TableConnector { public TreeTableState getState() { return (TreeTableState) super.getState(); } + + @Override + public TooltipInfo getTooltipInfo(Element element) { + + TooltipInfo info = null; + + if (element != getWidget().getElement()) { + Object node = Util.findWidget( + (com.google.gwt.user.client.Element) element, + VTreeTableRow.class); + + if (node != null) { + VTreeTableRow row = (VTreeTableRow) node; + info = row.getTooltip(element); + } + } + + if (info == null) { + info = super.getTooltipInfo(element); + } + + return info; + } } diff --git a/uitest/src/com/vaadin/tests/components/treetable/TreeTableItemDescriptionGeneratorTest.html b/uitest/src/com/vaadin/tests/components/treetable/TreeTableItemDescriptionGeneratorTest.html new file mode 100644 index 0000000000..7f2f61bfc3 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/treetable/TreeTableItemDescriptionGeneratorTest.html @@ -0,0 +1,357 @@ + + + + + + +New Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
New Test
open/run/TreeTableItemDescriptionGeneratorTest?restartApplication
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Cell description item 1,Text
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/FocusableScrollPanel[0]/VTreeTable$VTreeTableScrollBody[0]/VTreeTable$VTreeTableScrollBody$VTreeTableRow[1]/VButton[0]/domChild[0]/domChild[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Button 1 description
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/FocusableScrollPanel[0]/VTreeTable$VTreeTableScrollBody[0]/VTreeTable$VTreeTableScrollBody$VTreeTableRow[1]/VTextField[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Textfield's own description
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseClickvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCheckBox[0]/domChild[0]12,6
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Cell description item 1,Text
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/FocusableScrollPanel[0]/VTreeTable$VTreeTableScrollBody[0]/VTreeTable$VTreeTableScrollBody$VTreeTableRow[1]/VButton[0]/domChild[0]/domChild[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Cell description item 1,Component
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/FocusableScrollPanel[0]/VTreeTable$VTreeTableScrollBody[0]/VTreeTable$VTreeTableScrollBody$VTreeTableRow[1]/VTextField[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Cell description item 1,Generated component
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseClickvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCheckBox[0]/domChild[0]7,8
mouseClickvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VCheckBox[0]/domChild[0]7,5
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Row description item 1
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/FocusableScrollPanel[0]/VTreeTable$VTreeTableScrollBody[0]/VTreeTable$VTreeTableScrollBody$VTreeTableRow[1]/VButton[0]/domChild[0]/domChild[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Button 1 description
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/FocusableScrollPanel[0]/VTreeTable$VTreeTableScrollBody[0]/VTreeTable$VTreeTableScrollBody$VTreeTableRow[1]/VTextField[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Textfield's own description
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseClickvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCheckBox[0]/domChild[0]7,8
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Row description item 1
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/FocusableScrollPanel[0]/VTreeTable$VTreeTableScrollBody[0]/VTreeTable$VTreeTableScrollBody$VTreeTableRow[1]/VButton[0]/domChild[0]/domChild[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Row description item 1
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::PID_Stable/FocusableScrollPanel[0]/VTreeTable$VTreeTableScrollBody[0]/VTreeTable$VTreeTableScrollBody$VTreeTableRow[1]/VTextField[0]22,7
waitForElementPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
assertTextvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]/FlowPanel[0]/domChild[1]Row description item 1
mouseMoveAtvaadin=runTreeTableItemDescriptionGeneratorTest::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[3]22,7
waitForElementNotPresentvaadin=runTreeTableItemDescriptionGeneratorTest::Root/VTooltip[0]
+ + diff --git a/uitest/src/com/vaadin/tests/components/treetable/TreeTableItemDescriptionGeneratorTest.java b/uitest/src/com/vaadin/tests/components/treetable/TreeTableItemDescriptionGeneratorTest.java new file mode 100644 index 0000000000..2864156b03 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/treetable/TreeTableItemDescriptionGeneratorTest.java @@ -0,0 +1,28 @@ +/* + * Copyright 2012 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.components.treetable; + +import com.vaadin.tests.components.table.TableItemDescriptionGeneratorTest; +import com.vaadin.ui.Table; +import com.vaadin.ui.TreeTable; + +public class TreeTableItemDescriptionGeneratorTest extends + TableItemDescriptionGeneratorTest { + @Override + protected Table createTable() { + return new TreeTable(); + } +} -- 2.39.5