I'm not sure about other browsers, but IE6 doesn't allow scrolling of a
disabled TextArea.  TextArea extends FormComponent and form component has an
internal Behavior that adds the disabled attribute when the field is set to
disabled (setEnabled(false)).  This causes my project grief because we need
to add the READONLY attribute instead.  But, as far as I can see there is no
way to remove a Behavior because they are not "named (ala a Map) and the
getBehaviors returns an unmodifiable List.  I see that the
DisabledAttributeModifier extends AttributeModifer that supports an enabled
flag, but this internal class is private and it makes working with it
difficult.

Does this non-scrolling behavior happen with other browsers or just IE?  If
it happens elsewhere, might I suggest that Wicket change it's default
behavior to put a readonly attribute instead of disabled?

What is the recommended way of working with behaviors that are already added
to a Component?  

Here is what I came up with for disabling the behavior for a TextArea. 
Notice that I had to use the FQN instead of the Class object because the
behavior is private to FormComponent.

public class TextAreaFixer {
        /**
         * Constructor for TextAreaFixer
         */
        private TextAreaFixer() {
                super();
        }

        /**
         * Find the FormComponent$DisabledAttributeModifier and disable it!
         * 
         * @param textArea
         */
        public static void updateTextArea(TextArea textArea) {
                for (IBehavior behavior : 
(List<IBehavior>)textArea.getBehaviors()) {
                        if
(behavior.getClass().getName().equals("wicket.markup.html.form.FormComponent$DisabledAttributeModifier"))
{
                                ((AttributeModifier)behavior).setEnabled(false);
                                break;
                        }
                }
        }
}

Then to use it, in my code:

TextArea description = new TextArea("description");
add(description);
TextAreaFixer.updateTextArea(description);

Is ther a better way to do what I am trying to accomplish?

Thanks!
-- 
View this message in context: 
http://www.nabble.com/enable-remove-added-behaviors-tf2479810.html#a6915023
Sent from the Wicket - User mailing list archive at Nabble.com.


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to