]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #831
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 6 May 2008 07:40:34 +0000 (07:40 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 6 May 2008 07:40:34 +0000 (07:40 +0000)
svn changeset:4338/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetBase.java

index 238be8c0ca48afcf5fa92807d5a2a8b6ec06fcc6..be4e0f27d6c54f80d5b11ea5d0c4968dba6a7736 100644 (file)
@@ -83,7 +83,8 @@ public class IAccordion extends ITabsheetBase implements
 
     public void onSelectTab(StackItem item) {
         final int index = stack.indexOf(item);
-        if (index != activeTabIndex && !disabled && !readonly) {
+        if (index != activeTabIndex && !disabled && !readonly
+                && !disabledTabKeys.contains(tabKeys.get(index))) {
             if (getSelectedStack() != null) {
                 getSelectedStack().close();
             }
index da61c3cc904285b6cebecebdcb8bd27979f70561..be5c1b1acdbc9fd6806cec57fb706bab8fb7cf12 100644 (file)
@@ -44,17 +44,17 @@ public class ITabsheet extends ITabsheetBase implements
         public void onTabSelected(SourcesTabEvents sender, final int tabIndex) {
             if (client != null && activeTabIndex != tabIndex) {
                 addStyleDependentName("loading");
-                // run updating variables in deferred command to bypass some FF
+                // run updating variables in deferred command to bypass some
+                // FF
                 // optimization issues
                 DeferredCommand.addCommand(new Command() {
-
                     public void execute() {
                         previousVisibleWidget = tp.getWidget(tp
                                 .getVisibleWidget());
                         DOM.setStyleAttribute(previousVisibleWidget
                                 .getElement(), "visibility", "hidden");
-                        client.updateVariable(id, "selected", ""
-                                + tabKeys.get(tabIndex), true);
+                        client.updateVariable(id, "selected", tabKeys.get(
+                                tabIndex).toString(), true);
                     }
                 });
             }
@@ -64,6 +64,11 @@ public class ITabsheet extends ITabsheetBase implements
             if (disabled) {
                 return false;
             }
+            final Object tabKey = tabKeys.get(tabIndex);
+            if (disabledTabKeys.contains(tabKey)) {
+                return false;
+            }
+
             return true;
         }
 
index b4f123ff0b31488eabfeec96079b5af567221125..90e53f294d450f9eaff03672a9922c1721b01fd0 100644 (file)
@@ -1,7 +1,9 @@
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
@@ -18,6 +20,7 @@ abstract class ITabsheetBase extends FlowPanel implements Paintable {
     protected int activeTabIndex = 0;
     protected boolean disabled;
     protected boolean readonly;
+    protected Set disabledTabKeys = new HashSet();
 
     public ITabsheetBase(String classname) {
         setStylePrimaryName(classname);
@@ -51,6 +54,7 @@ abstract class ITabsheetBase extends FlowPanel implements Paintable {
             // Clear previous values
             tabKeys.clear();
             captions.clear();
+            disabledTabKeys.clear();
             clear();
 
             int index = 0;
@@ -63,6 +67,10 @@ abstract class ITabsheetBase extends FlowPanel implements Paintable {
                     caption = " ";
                 }
 
+                if (tab.getBooleanAttribute("disabled")) {
+                    disabledTabKeys.add(key);
+                }
+
                 captions.add(caption);
                 tabKeys.add(key);
 
@@ -80,10 +88,13 @@ abstract class ITabsheetBase extends FlowPanel implements Paintable {
         final UIDL tabs = uidl.getChildUIDL(0);
         boolean retval = tabKeys.size() == tabs.getNumberOfChildren();
         for (int i = 0; retval && i < tabKeys.size(); i++) {
-            retval = tabKeys.get(i).equals(
-                    tabs.getChildUIDL(i).getStringAttribute("key"))
+            String key = (String) tabKeys.get(i);
+            UIDL tabUIDL = tabs.getChildUIDL(i);
+            retval = key.equals(tabUIDL.getStringAttribute("key"))
                     && captions.get(i).equals(
-                            tabs.getChildUIDL(i).getStringAttribute("caption"));
+                            tabUIDL.getStringAttribute("caption"))
+                    && (tabUIDL.hasAttribute("disabled") == disabledTabKeys
+                            .contains(key));
         }
         return retval;
     }