From 050c07d1e8df84a13c8549ef1d5192abde269399 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Thu, 25 Sep 2008 12:24:48 +0000 Subject: [PATCH] setEnabled(false) disables visible sub-components; Fixes #677 (together with [5513]) svn changeset:5514/svn branch:trunk --- src/com/itmill/toolkit/ui/Table.java | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/com/itmill/toolkit/ui/Table.java b/src/com/itmill/toolkit/ui/Table.java index adb78be2d2..24f0437f3d 100644 --- a/src/com/itmill/toolkit/ui/Table.java +++ b/src/com/itmill/toolkit/ui/Table.java @@ -3007,4 +3007,35 @@ public class Table extends AbstractSelect implements Action.Container, requestRepaint(); } } + + // Identical to AbstractCompoenentContainer.setEnabled(); + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + if (getParent() != null && !getParent().isEnabled()) { + // some ancestor still disabled, don't update children + return; + } else { + requestRepaintAll(); + } + } + + // Virtually identical to AbstractCompoenentContainer.setEnabled(); + public void requestRepaintAll() { + requestRepaint(); + for (Iterator childIterator = visibleComponents.iterator(); 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 Table) { + ((Table) c).requestRepaintAll(); + } else if (c instanceof ComponentContainer) { + ((ComponentContainer) c).requestRepaintAll(); + } else { + c.requestRepaint(); + } + } + } } -- 2.39.5