aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/ui/AbstractComponentContainer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/itmill/toolkit/ui/AbstractComponentContainer.java')
-rw-r--r--src/com/itmill/toolkit/ui/AbstractComponentContainer.java34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/com/itmill/toolkit/ui/AbstractComponentContainer.java b/src/com/itmill/toolkit/ui/AbstractComponentContainer.java
index 56febe3815..d6c100e8cd 100644
--- a/src/com/itmill/toolkit/ui/AbstractComponentContainer.java
+++ b/src/com/itmill/toolkit/ui/AbstractComponentContainer.java
@@ -208,25 +208,29 @@ public abstract class AbstractComponentContainer extends AbstractComponent
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
-
- updateComponentDisabledState(!enabled);
- }
-
- public void setDisabledByContainer(boolean disabledByContainer) {
- super.setDisabledByContainer(disabledByContainer);
-
- updateComponentDisabledState(disabledByContainer);
+ if (getParent() != null && !getParent().isEnabled()) {
+ // some ancestor still disabled, don't update children
+ return;
+ } else {
+ requestRepaintAll();
+ }
}
- private void updateComponentDisabledState(boolean disabled) {
- // Update the disabledByContainer state for all subcomponents
- for (Iterator i = getComponentIterator(); i.hasNext();) {
- Component c = (Component) i.next();
- if (c instanceof AbstractComponent) {
- ((AbstractComponent) c).setDisabledByContainer(disabled);
+ public void requestRepaintAll() {
+ requestRepaint();
+ for (Iterator childIterator = getComponentIterator(); childIterator
+ .hasNext();) {
+ Component c = (Component) childIterator.next();
+ if (c instanceof Form) {
+ // Form has children in layout, but is not ComponentContainer
+ c.requestRepaint();
+ ((Form) c).getLayout().requestRepaintAll();
+ } else if (c instanceof ComponentContainer) {
+ ((ComponentContainer) c).requestRepaintAll();
+ } else {
+ c.requestRepaint();
}
}
-
}
} \ No newline at end of file