]> source.dussan.org Git - vaadin-framework.git/commitdiff
VTabsheetBase should implement HasEnabled (#14114).
authorDenis Anisimov <denis@vaadin.com>
Sat, 16 Aug 2014 15:04:51 +0000 (18:04 +0300)
committerVaadin Code Review <review@vaadin.com>
Wed, 20 Aug 2014 11:09:12 +0000 (11:09 +0000)
Change-Id: I31ebc1b4c0698f10c145c6e59d5c951918c5fdbe

client/src/com/vaadin/client/ui/VTabsheetBase.java
uitest/src/com/vaadin/tests/components/tabsheet/TabSheetInDisabledParent.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/tabsheet/TabSheetInDisabledParentTest.java [new file with mode: 0644]

index 59f0bc565c50dedfab97d7ca5227075dd8bf6da0..d3c9bf9e10c6fbc372c689a788408f5dfa7ea380 100644 (file)
@@ -22,13 +22,14 @@ import java.util.Set;
 
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.ui.ComplexPanel;
+import com.google.gwt.user.client.ui.HasEnabled;
 import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.client.ApplicationConnection;
 import com.vaadin.client.ComponentConnector;
 import com.vaadin.client.ConnectorMap;
 import com.vaadin.shared.ui.tabsheet.TabState;
 
-public abstract class VTabsheetBase extends ComplexPanel {
+public abstract class VTabsheetBase extends ComplexPanel implements HasEnabled {
 
     /** For internal use only. May be removed or replaced in the future. */
     protected ApplicationConnection client;
@@ -145,6 +146,7 @@ public abstract class VTabsheetBase extends ComplexPanel {
     }
 
     /** For internal use only. May be removed or replaced in the future. */
+    @Override
     public void setEnabled(boolean enabled) {
         disabled = !enabled;
     }
@@ -161,4 +163,9 @@ public abstract class VTabsheetBase extends ComplexPanel {
 
     /** For internal use only. May be removed or replaced in the future. */
     public abstract void selectTab(int index);
+
+    @Override
+    public boolean isEnabled() {
+        return !disabled;
+    }
 }
diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetInDisabledParent.java b/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetInDisabledParent.java
new file mode 100644 (file)
index 0000000..2ccbfee
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * 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.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TabSheet;
+
+/**
+ * Test UI to check that TabsheetBaseConnector reacts on disabling its parent.
+ * 
+ * @author Vaadin Ltd
+ */
+public class TabSheetInDisabledParent extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        final HorizontalLayout layout = new HorizontalLayout();
+        addComponent(new Button("toggle", new ClickListener() {
+
+            @Override
+            public void buttonClick(ClickEvent event) {
+                layout.setEnabled(!layout.isEnabled());
+            }
+        }));
+        addComponent(layout);
+
+        TabSheet sheet = new TabSheet();
+        Label label1 = new Label("Label1");
+        label1.setCaption("Label 1");
+        sheet.addComponent(label1);
+
+        Label label2 = new Label("Label2");
+        label2.setCaption("Label 2");
+        sheet.addComponent(label2);
+
+        Label label3 = new Label("Label3");
+        label3.setCaption("Label 3");
+        sheet.addComponent(label3);
+
+        layout.addComponent(sheet);
+    }
+
+    @Override
+    protected String getTestDescription() {
+        return "VTabsheetBase widget should implement HasEnabled interface.";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 14114;
+    }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetInDisabledParentTest.java b/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetInDisabledParentTest.java
new file mode 100644 (file)
index 0000000..5070fd0
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * 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 java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.By;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * Test to check that TabsheetBaseConnector reacts on disabling its parent.
+ * 
+ * @author Vaadin Ltd
+ */
+public class TabSheetInDisabledParentTest extends MultiBrowserTest {
+
+    @Test
+    public void testTabsheetInDisabledParent() {
+        openTestURL();
+
+        WebElement button = getDriver().findElement(By.className("v-button"));
+        // disable parent
+        button.click();
+
+        List<WebElement> tabHeaders = getDriver().findElements(
+                By.className("v-tabsheet-tabitemcell"));
+        tabHeaders.get(1).findElement(By.className("v-captiontext")).click();
+
+        Assert.assertFalse(
+                "It's possible to activate TabSheet tab when its parent is disabled",
+                tabHeaders.get(1).getAttribute("class")
+                        .contains("v-tabsheet-tabitemcell-selected"));
+
+        // enable parent back
+        button.click();
+
+        // selected tab is still the same
+        tabHeaders = getDriver().findElements(
+                By.className("v-tabsheet-tabitemcell"));
+        Assert.assertTrue(
+                "Tabsheet has wrong selected tab after enabling its parent",
+                tabHeaders.get(0).getAttribute("class")
+                        .contains("v-tabsheet-tabitemcell-selected"));
+
+        // click to the second tab
+        tabHeaders.get(1).findElement(By.className("v-captiontext")).click();
+        // check the second tab is selected
+        Assert.assertTrue(
+                "Second tab is not activated in the Tabsheet after clicking on it",
+                tabHeaders.get(1).getAttribute("class")
+                        .contains("v-tabsheet-tabitemcell-selected"));
+    }
+
+}