click-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bob Schellink (JIRA)" <>
Subject [JIRA] Commented: (CLK-497) FieldSet isDisabled and isReadonly methods broken
Date Fri, 27 Feb 2009 23:48:55 GMT


Bob Schellink commented on CLK-497:

Thanks James, your analysis is correct. The problem is that FieldSet is not set as the true
parent of the child control.

As a quick fix we can set the FieldSet as the parent like so:

  private class InnerContainerField extends AbstractContainer {
    public Control insert(Control control, int index) {
      super.insert(control, index);
      control.setParent(FieldSet.this); // <-- new line

Still the FieldSet implementation is quite complex because of all the delegation to the inner
class. Perhaps it would be better if we implement the Container interface from scratch instead
of delegating to the inner class. This will introduces some code duplication but is a lot
simpler to read and understand.

And yes, will definitely add your tests to protect against regressions.

kind regards


> FieldSet isDisabled and isReadonly methods broken
> -------------------------------------------------
>                 Key: CLK-497
>                 URL:
>             Project: Click
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.0.1
>         Environment: Windows XP, Java 6
>            Reporter: James P Brown
>         Attachments:
> The FieldSet is supposed to force its child components to be disabled/readonly when it
is set to disabled/readonly. I did not observe this when I attempted to create a FieldSet
with a child component.
> I believe the code to support this is not working as anticipated. The Field class has
modified methods for isDisabled/isReadonly that specifically check if the parent component
(i.e. container) is an instanceof FieldSet (or Form, which is working AFAIK). The problem
is that the design of FieldSet relies on an instance of its private inner class FieldSet.InnerContainerField
for managing those child elements. When I step through the code in debug mode, the class instance
is of this inner class type (InnerContainerField) not FieldSet. Since InnerContainerField
is not a type of FieldSet, the subsequent logic is ignored.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message