]> source.dussan.org Git - vaadin-framework.git/commitdiff
Reset index of selected item when it's removed (#17248).
authorDenis Anisimov <denis@vaadin.com>
Thu, 26 Mar 2015 17:56:07 +0000 (19:56 +0200)
committerAnna Koskinen <anna@vaadin.com>
Fri, 27 Mar 2015 14:00:08 +0000 (16:00 +0200)
Change-Id: Id38f48d84e9f55334af2e44b2dc49b1a3c7ef390

client/src/com/vaadin/client/ui/VAccordion.java
uitest/src/com/vaadin/tests/components/accordion/AccordionRemoveComponent.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/accordion/AccordionRemoveComponentTest.java [new file with mode: 0644]

index 06eaecaf70144cd53072e9fc91cc1899b25d9744..fc328dd56a8e39fddf2bd04a3d9a795a8446c433 100644 (file)
@@ -29,8 +29,8 @@ import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.ComplexPanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.client.ComponentConnector;
-import com.vaadin.client.WidgetUtil;
 import com.vaadin.client.VCaption;
+import com.vaadin.client.WidgetUtil;
 import com.vaadin.client.ui.TouchScrollDelegate.TouchScrollHandler;
 import com.vaadin.shared.ComponentConstants;
 import com.vaadin.shared.ui.accordion.AccordionState;
@@ -417,6 +417,9 @@ public class VAccordion extends VTabsheetBase {
     public void removeTab(int index) {
         StackItem item = getStackItem(index);
         remove(item);
+        if (selectedItemIndex == index) {
+            selectedItemIndex = -1;
+        }
         touchScrollHandler.removeElement(item.getContainerElement());
     }
 
diff --git a/uitest/src/com/vaadin/tests/components/accordion/AccordionRemoveComponent.java b/uitest/src/com/vaadin/tests/components/accordion/AccordionRemoveComponent.java
new file mode 100644 (file)
index 0000000..80e0929
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2000-2014 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.accordion;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Accordion;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+
+/**
+ * Test for removing component from Accordion.
+ * 
+ * @author Vaadin Ltd
+ */
+public class AccordionRemoveComponent extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        final Accordion accordion = new Accordion();
+        Button button = new Button("remove");
+        button.addClickListener(new Button.ClickListener() {
+
+            @Override
+            public void buttonClick(ClickEvent event) {
+                accordion.removeComponent(event.getButton());
+            }
+        });
+        accordion.addComponent(button);
+        addComponent(accordion);
+    }
+
+    @Override
+    protected String getTestDescription() {
+        return "Reset selected index when tab is removed";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 17248;
+    }
+}
diff --git a/uitest/src/com/vaadin/tests/components/accordion/AccordionRemoveComponentTest.java b/uitest/src/com/vaadin/tests/components/accordion/AccordionRemoveComponentTest.java
new file mode 100644 (file)
index 0000000..84f1734
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2000-2014 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.accordion;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * Test for removing component from Accordion
+ * 
+ * @author Vaadin Ltd
+ */
+public class AccordionRemoveComponentTest extends MultiBrowserTest {
+
+    @Test
+    public void removeComponent_noClientSideException() {
+        setDebug(true);
+        openTestURL();
+
+        $(ButtonElement.class).first().click();
+
+        Assert.assertFalse(
+                "Error notification with client side exception is shown",
+                isElementPresent(By.className("v-Notification-error")));
+    }
+}