]> source.dussan.org Git - vaadin-framework.git/commitdiff
Test case and fix for #3199
authorArtur Signell <artur.signell@itmill.com>
Tue, 11 Aug 2009 14:55:31 +0000 (14:55 +0000)
committerArtur Signell <artur.signell@itmill.com>
Tue, 11 Aug 2009 14:55:31 +0000 (14:55 +0000)
svn changeset:8462/svn branch:6.1

src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java
src/com/vaadin/tests/components/tabsheet/PreventTabChange.java [new file with mode: 0644]

index da965c15dcd71fa27deed2df0d915f1f6af0ac86..5c9dfc7dd03bd4b8a879a505e7da50acb7e7f38f 100644 (file)
@@ -616,8 +616,8 @@ public class VTabsheet extends VTabsheetBase {
         updateOpenTabSize();
         VTabsheet.this.removeStyleDependentName("loading");
         if (previousVisibleWidget != null) {
-            DOM.setStyleAttribute(previousVisibleWidget.getElement(),
-                    "visibility", "");
+            DOM.setStyleAttribute(DOM.getParent(previousVisibleWidget
+                    .getElement()), "visibility", "");
             previousVisibleWidget = null;
         }
     }
diff --git a/src/com/vaadin/tests/components/tabsheet/PreventTabChange.java b/src/com/vaadin/tests/components/tabsheet/PreventTabChange.java
new file mode 100644 (file)
index 0000000..01f0b84
--- /dev/null
@@ -0,0 +1,67 @@
+package com.vaadin.tests.components.tabsheet;
+
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;
+import com.vaadin.ui.TabSheet.SelectedTabChangeListener;
+
+public class PreventTabChange extends TestBase implements
+        SelectedTabChangeListener {
+
+    private TabSheet tabSheet;
+
+    private Component lastTab;
+
+    private Label tab1;
+    private Label tab2;
+    private Label tab3;
+
+    @Override
+    protected String getDescription() {
+        return "Tests prevention of selecting certain tabs. Selecting the tabs in order (1-2-3-1) should work, while selecting out of order should cause the current tab to remain selected. The selected tab will actually first be changed (by the client) and then changed back (on the server response).";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return null;
+    }
+
+    @Override
+    protected void setup() {
+        tabSheet = new TabSheet();
+        tabSheet.addListener(this);
+        tab1 = new Label("Tab 1 contents");
+        tab2 = new Label("Tab 2 contents");
+        tab3 = new Label("Tab 3 contents");
+
+        tabSheet.addTab(tab1, "The first tab", null);
+        tabSheet.addTab(tab2, "The second tab", null);
+        tabSheet.addTab(tab3, "The third tab", null);
+
+        lastTab = tab1;
+        tabSheet.setSelectedTab(tab1);
+
+        addComponent(tabSheet);
+    }
+
+    public void selectedTabChange(SelectedTabChangeEvent event) {
+
+        TabSheet tabsheet = event.getTabSheet();
+        if (lastTab == tab1) {
+            if (tabsheet.getSelectedTab() != tab2) {
+                tabsheet.setSelectedTab(lastTab);
+            }
+        } else if (lastTab == tab2) {
+            if (tabsheet.getSelectedTab() != tab3) {
+                tabsheet.setSelectedTab(lastTab);
+            }
+        } else if (lastTab == tab3) {
+            if (tabsheet.getSelectedTab() != tab1) {
+                tabsheet.setSelectedTab(lastTab);
+            }
+        }
+        lastTab = tabsheet.getSelectedTab();
+    }
+}