Browse Source

Reset index of selected item when it's removed (#17248).

Change-Id: Id38f48d84e9f55334af2e44b2dc49b1a3c7ef390
tags/7.4.3
Denis Anisimov 9 years ago
parent
commit
9d7db6067e

+ 4
- 1
client/src/com/vaadin/client/ui/VAccordion.java View 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());
}


+ 55
- 0
uitest/src/com/vaadin/tests/components/accordion/AccordionRemoveComponent.java View File

@@ -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;
}
}

+ 43
- 0
uitest/src/com/vaadin/tests/components/accordion/AccordionRemoveComponentTest.java View File

@@ -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")));
}
}

Loading…
Cancel
Save