From c7475109dd86f80638154bf91d1da690b4577f00 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Tue, 6 May 2008 07:40:34 +0000 Subject: [PATCH] fixes #831 svn changeset:4338/svn branch:trunk --- .../terminal/gwt/client/ui/IAccordion.java | 3 ++- .../terminal/gwt/client/ui/ITabsheet.java | 13 +++++++++---- .../terminal/gwt/client/ui/ITabsheetBase.java | 17 ++++++++++++++--- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java index 238be8c0ca..be4e0f27d6 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java @@ -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(); } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java index da61c3cc90..be5c1b1acd 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java @@ -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; } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetBase.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetBase.java index b4f123ff0b..90e53f294d 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetBase.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetBase.java @@ -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; } -- 2.39.5