Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-1919

MarkupContainer.setEnabled() doesn't enable/disable child components

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.3.3, 1.4-M3
    • 1.4-RC2
    • wicket
    • None

    Description

      1. Create any components that is derived from MarkupContainer, for example, create Panel.
      2. Put some components to the Panel, for example, TextInput, Label etc.
      3. Call panel.setEnabled(false)

      Result: all controls on panel are still enabled.

      Notes: after some investigation I found that MarkupContainer doesn't override setEnabled and therefore it cannot enable/disable components stored in the container.

      Workaround: manually disable all components that are displayed on the panel, for example:
      public void setEnabledForChildren(boolean enabled)

      { setEnabledRecursive(this, enabled); }

      private void setEnabledRecursive(MarkupContainer container, boolean enabled) {
      Iterator<? extends Component> iterator = container.iterator();
      while (iterator.hasNext()) {
      Component component = iterator.next();
      component.setEnabled(enabled);

      if (component instanceof MarkupContainer)

      { setEnabledRecursive((MarkupContainer) component, enabled); }

      }
      }

      I think that MarkupContainer must be responsible for disabling/enabling child components.

      Attachments

        1. src.zip
          2 kB
          Sergey Derugo

        Issue Links

          Activity

            People

              ivaynberg Igor Vaynberg
              xsergey Sergey Derugo
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: