From 05b3faab88f3cb22a1b024d9d7ecd12ce8bab1a1 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 11 Jan 2013 00:26:43 +0200 Subject: [PATCH] Fixed NPE in Table tooltip handling (#10705) Change-Id: I907af51c06c68da26c74359fae4e6f9a43dda8bc --- .../com/vaadin/client/ui/VScrollTable.java | 3 +- .../components/table/PopupViewInTable.java | 61 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 uitest/src/com/vaadin/tests/components/table/PopupViewInTable.java diff --git a/client/src/com/vaadin/client/ui/VScrollTable.java b/client/src/com/vaadin/client/ui/VScrollTable.java index cd89d9eb6a..e2f5e9b57d 100644 --- a/client/src/com/vaadin/client/ui/VScrollTable.java +++ b/client/src/com/vaadin/client/ui/VScrollTable.java @@ -4985,7 +4985,8 @@ public class VScrollTable extends FlowPanel implements HasWidgets, TooltipInfo info = null; final Element targetTdOrTr = getTdOrTr((Element) target.cast()); - if ("td".equals(targetTdOrTr.getTagName().toLowerCase())) { + if (targetTdOrTr != null + && "td".equals(targetTdOrTr.getTagName().toLowerCase())) { TableCellElement td = (TableCellElement) targetTdOrTr .cast(); info = cellToolTips.get(td); diff --git a/uitest/src/com/vaadin/tests/components/table/PopupViewInTable.java b/uitest/src/com/vaadin/tests/components/table/PopupViewInTable.java new file mode 100644 index 0000000000..f070d28aa8 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/PopupViewInTable.java @@ -0,0 +1,61 @@ +/* + * 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.table; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Component; +import com.vaadin.ui.Label; +import com.vaadin.ui.PopupView; +import com.vaadin.ui.Table; +import com.vaadin.ui.VerticalLayout; + +public class PopupViewInTable extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + Table t = new Table(); + t.addContainerProperty("text", String.class, ""); + t.addContainerProperty("pv", Component.class, null); + t.addItem(new Object[] { "Foo", createPopupView() }, "foo"); + addComponent(t); + } + + private PopupView createPopupView() { + PopupView pv = new PopupView("Click me", createContent()); + return pv; + } + + private Component createContent() { + VerticalLayout vl = new VerticalLayout(new Label("Hello"), new Button( + "World")); + return vl; + } + + @Override + protected String getTestDescription() { + // TODO Auto-generated method stub + return null; + } + + @Override + protected Integer getTicketNumber() { + // TODO Auto-generated method stub + return null; + } + +} -- 2.39.5