[
http://issues.apache.org/click/browse/CLK-497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=11702#action_11702
]
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
bob
> FieldSet isDisabled and isReadonly methods broken
> -------------------------------------------------
>
> Key: CLK-497
> URL: http://issues.apache.org/click/browse/CLK-497
> Project: Click
> Issue Type: Bug
> Components: core
> Affects Versions: 2.0.1
> Environment: Windows XP, Java 6
> Reporter: James P Brown
> Attachments: FieldSet_isDisabled_isReadonly_bug.zip
>
>
> 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.