Bladeren bron

Update active tab index when overriding selection (#15274)

Change-Id: Ic6704be620a3134a52fd3eb6efcd9af1e628dc18
tags/7.4.8
Leif Åstrand 9 jaren geleden
bovenliggende
commit
69c7844b96

+ 1
- 0
client/src/com/vaadin/client/ui/tabsheet/TabsheetConnector.java Bestand weergeven

@@ -42,6 +42,7 @@ public class TabsheetConnector extends TabsheetBaseConnector implements
final boolean selected = key.equals(getState().selected);
if (selected) {
getWidget().waitingForResponse = false;
getWidget().setActiveTabIndex(i);
getWidget().selectTab(i);
break;
}

+ 50
- 0
uitest/src/com/vaadin/tests/components/tabsheet/VetoTabChange.java Bestand weergeven

@@ -0,0 +1,50 @@
/*
* 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.tabsheet;

import com.vaadin.annotations.Theme;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;
import com.vaadin.ui.TabSheet.SelectedTabChangeListener;

@Theme("valo")
public class VetoTabChange extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
final TabSheet ts = new TabSheet();
ts.addSelectedTabChangeListener(new SelectedTabChangeListener() {
@Override
public void selectedTabChange(SelectedTabChangeEvent event) {
ts.setSelectedTab(0);
}
});

ts.addTab(new Label("Tab 1"), "Tab 1");
ts.addTab(new Label("Tab 2"), "Tab 2");

addComponent(ts);
}

@Override
public String getDescription() {
return "Tests the behavior when there's a listener that always changes back to the first tab.";
}

}

+ 47
- 0
uitest/src/com/vaadin/tests/components/tabsheet/VetoTabChangeTest.java Bestand weergeven

@@ -0,0 +1,47 @@
/*
* 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.tabsheet;

import org.junit.Assert;
import org.junit.Test;

import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.testbench.elements.TabSheetElement;
import com.vaadin.tests.tb3.SingleBrowserTest;

public class VetoTabChangeTest extends SingleBrowserTest {
@Test
public void testReselectTabAfterVeto() {
openTestURL();

TabSheetElement tabSheet = $(TabSheetElement.class).first();
Assert.assertEquals("Tab 1 should be there by default", "Tab 1",
getTabContent(tabSheet));

tabSheet.openTab(1);

Assert.assertEquals("Tab should not have changed", "Tab 1",
getTabContent(tabSheet));

tabSheet.openTab(0);
Assert.assertEquals("Tab should still be there", "Tab 1",
getTabContent(tabSheet));
}

private String getTabContent(TabSheetElement tabSheet) {
return tabSheet.getContent(LabelElement.class).getText();
}
}

Laden…
Annuleren
Opslaan