Re: disabled components/behaviors fixes of WICKET-3098
i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List; +import org.apache.wicket.AbortException; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.RequestCycle; import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.behavior.IBehaviorListener; +import org.apache.wicket.behavior.IIgnoreDisabledComponentBehavior; import org.apache.wicket.protocol.http.PageExpiredException; +import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.request.RequestParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,13 +88,6 @@ // Get the IBehavior for the
Re: disabled components/behaviors fixes of WICKET-3098
yes that i did see in 1.5 but in 1.4 i guess the only thing we can do is just introduce that IIgnoreDisabledComponentBehavior interface (that doesnt have any method) (or something the same with a different name, any recomendations?) johan On Wed, Nov 24, 2010 at 16:57, Igor Vaynberg igor.vaynb...@gmail.com wrote: i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List; +import org.apache.wicket.AbortException; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.RequestCycle; import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.behavior.IBehaviorListener; +import
Re: disabled components/behaviors fixes of WICKET-3098
IWontDoAnythingWhenTheComponentIsDisabledBehavior IMASlackerBehavior Martijn On Wed, Nov 24, 2010 at 5:12 PM, Johan Compagner jcompag...@gmail.com wrote: yes that i did see in 1.5 but in 1.4 i guess the only thing we can do is just introduce that IIgnoreDisabledComponentBehavior interface (that doesnt have any method) (or something the same with a different name, any recomendations?) johan On Wed, Nov 24, 2010 at 16:57, Igor Vaynberg igor.vaynb...@gmail.com wrote: i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List; +import org.apache.wicket.AbortException; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.RequestCycle; import
Re: disabled components/behaviors fixes of WICKET-3098
Why don't simple change the AbstractBehavior default isEnabled implementation to respect the component state, like: public boolean isEnabled(Component component) { return component.isEnabled(); } It would solve the problem at the ticket. IMO the proposed interface is prolix because the behavior enabled/disabled state is enough information to decide to silent return or not an ajax call to it. On Wed, Nov 24, 2010 at 2:12 PM, Johan Compagner jcompag...@gmail.comwrote: yes that i did see in 1.5 but in 1.4 i guess the only thing we can do is just introduce that IIgnoreDisabledComponentBehavior interface (that doesnt have any method) (or something the same with a different name, any recomendations?) johan On Wed, Nov 24, 2010 at 16:57, Igor Vaynberg igor.vaynb...@gmail.com wrote: i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === ---
Re: disabled components/behaviors fixes of WICKET-3098
that first one is a perfect name, except that the intent is that it works just the opposite! :) On Wed, Nov 24, 2010 at 17:20, Martijn Dashorst martijn.dasho...@gmail.com wrote: IWontDoAnythingWhenTheComponentIsDisabledBehavior IMASlackerBehavior Martijn On Wed, Nov 24, 2010 at 5:12 PM, Johan Compagner jcompag...@gmail.com wrote: yes that i did see in 1.5 but in 1.4 i guess the only thing we can do is just introduce that IIgnoreDisabledComponentBehavior interface (that doesnt have any method) (or something the same with a different name, any recomendations?) johan On Wed, Nov 24, 2010 at 16:57, Igor Vaynberg igor.vaynb...@gmail.com wrote: i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List;
Re: disabled components/behaviors fixes of WICKET-3098
i dont think the name of the mixin matters much because 1.5 is out soonish. IListenerInterfaceTarget { canCallListenerInterface()} is not so bad. -igor On Wed, Nov 24, 2010 at 8:12 AM, Johan Compagner jcompag...@gmail.com wrote: yes that i did see in 1.5 but in 1.4 i guess the only thing we can do is just introduce that IIgnoreDisabledComponentBehavior interface (that doesnt have any method) (or something the same with a different name, any recomendations?) johan On Wed, Nov 24, 2010 at 16:57, Igor Vaynberg igor.vaynb...@gmail.com wrote: i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List; +import org.apache.wicket.AbortException; import org.apache.wicket.Component; import org.apache.wicket.Page;
Re: disabled components/behaviors fixes of WICKET-3098
And then completely remove the check if the component is disabled i guess? That would work for me but then if users dont really call super() when they have there own enable logic that would mean it would always be called.. (because now it just returns true so people could think i dont need to call super) On Wed, Nov 24, 2010 at 17:21, Pedro Santos pedros...@gmail.com wrote: Why don't simple change the AbstractBehavior default isEnabled implementation to respect the component state, like: public boolean isEnabled(Component component) { return component.isEnabled(); } It would solve the problem at the ticket. IMO the proposed interface is prolix because the behavior enabled/disabled state is enough information to decide to silent return or not an ajax call to it. On Wed, Nov 24, 2010 at 2:12 PM, Johan Compagner jcompag...@gmail.comwrote: yes that i did see in 1.5 but in 1.4 i guess the only thing we can do is just introduce that IIgnoreDisabledComponentBehavior interface (that doesnt have any method) (or something the same with a different name, any recomendations?) johan On Wed, Nov 24, 2010 at 16:57, Igor Vaynberg igor.vaynb...@gmail.com wrote: i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response
Re: disabled components/behaviors fixes of WICKET-3098
ok then i check my changes in for 1.4 So that at least people that use 1.4 (like us) can use that one for now. I can add a note in the doc that this will be replaced by 1.5 completely.. On Wed, Nov 24, 2010 at 17:15, Igor Vaynberg igor.vaynb...@gmail.com wrote: i dont think the name of the mixin matters much because 1.5 is out soonish. IListenerInterfaceTarget { canCallListenerInterface()} is not so bad. -igor On Wed, Nov 24, 2010 at 8:12 AM, Johan Compagner jcompag...@gmail.com wrote: yes that i did see in 1.5 but in 1.4 i guess the only thing we can do is just introduce that IIgnoreDisabledComponentBehavior interface (that doesnt have any method) (or something the same with a different name, any recomendations?) johan On Wed, Nov 24, 2010 at 16:57, Igor Vaynberg igor.vaynb...@gmail.com wrote: i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++
Re: disabled components/behaviors fixes of WICKET-3098
On Wed, Nov 24, 2010 at 2:24 PM, Johan Compagner jcompag...@gmail.comwrote: And then completely remove the check if the component is disabled i guess? exactly That would work for me but then if users dont really call super() when they have there own enable logic that would mean it would always be called.. (because now it just returns true so people could think i dont need to call super) I know, but I still think that the behavior state is the more important one. I would not be concerned with custom isEnabled implementations, they will just became more important. On Wed, Nov 24, 2010 at 17:21, Pedro Santos pedros...@gmail.com wrote: Why don't simple change the AbstractBehavior default isEnabled implementation to respect the component state, like: public boolean isEnabled(Component component) { return component.isEnabled(); } It would solve the problem at the ticket. IMO the proposed interface is prolix because the behavior enabled/disabled state is enough information to decide to silent return or not an ajax call to it. On Wed, Nov 24, 2010 at 2:12 PM, Johan Compagner jcompag...@gmail.com wrote: yes that i did see in 1.5 but in 1.4 i guess the only thing we can do is just introduce that IIgnoreDisabledComponentBehavior interface (that doesnt have any method) (or something the same with a different name, any recomendations?) johan On Wed, Nov 24, 2010 at 16:57, Igor Vaynberg igor.vaynb...@gmail.com wrote: i added boolean canCallListenerInterface(Component component) to ibehavior -igor On Wed, Nov 24, 2010 at 12:54 AM, Johan Compagner jcompag...@gmail.com wrote: which method name? I currently only have a tagging interface that tags this behavior... On Wed, Nov 24, 2010 at 03:00, Igor Vaynberg igor.vaynb...@gmail.com wrote: i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required
disabled components/behaviors fixes of WICKET-3098
hi, i suddenly bump big time into this issue that is fixed. ( https://issues.apache.org/jira/browse/WICKET-3098 ) I get that disabled behaviors can't be used to do respond, because that behavior shouldnt be rendered in the first place. But the fix also goes one step deeper... It also blocks if the component is disabled.. That is a big problem Because a disabled component is rendered, and all the behaviors are accepted and rendered also so now suddenly a behavior is rendered (because the behavior is not disabled) but a callback will fail... thats something i dont like...because now i get loads of these in the log: 2010-11-23 09:10:57,934 WARN [http-8080-1] org.apache.wicket.request.target.component.listener.BehaviorRequestTarget - component not enabled or visible; ignoring call. Component: [MarkupContainer [Component id = View]] and the worse thing is if the behavior blocks like that it fall backs to a IRedirectListener so it rerenders the whole page and that again renders the disabled component with its behavior and it starts all over again and again and again. the example i have here is that we have a ListView/Repeater with some paging component and that listview has a behavior attached that does a call back when it got first rendered to give us back the sizes it has in the browser and if we see that it has way more space then it currently shows (if it now shows 10 rows and it has space for 20) we rerender the ListView again but then with a bigger visible row count. that is a behavior of the ListView, but the listview can be in a disabled state (because a user first have to press a button of edit or something like that) but that resizing i still want to happen if if the ListView is disabled... So i like to some how tell that that this behavior should be called. Now we do this: test component enablement test behavior id test behaviors test behaviors enabledment. call behavior i like to turn that around test behavior id test behaviors test behaviors enabledment. test component enablement IF behavior doesnt implement IWorkForDisabledComponent call behavior So that a developer can be explicit in that check.. We could also introduce a public method on Component: isEnabledFor(IBehavior) which returns defaults its own enable state. johan
Re: disabled components/behaviors fixes of WICKET-3098
i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List; +import org.apache.wicket.AbortException; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.RequestCycle; import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.behavior.IBehaviorListener; +import org.apache.wicket.behavior.IIgnoreDisabledComponentBehavior; import org.apache.wicket.protocol.http.PageExpiredException; +import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.request.RequestParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,13 +88,6 @@ // Get the IBehavior for the component based on the request parameters final Component component = getTarget(); - if (!component.isVisibleInHierarchy() || !component.isEnabledInHierarchy()) - { - // ignore this request - logger.warn(component not enabled or visible; ignoring call. Component: {}, component); - return; - } - final String id = getRequestParameters().getBehaviorId(); if (id == null) { @@ -124,6 +120,11 @@ logger.warn( behavior not enabled; ignoring call. behavior: {} at index: {} on component: {}, new Object[] { behavior, idAsInt, component }); + if (requestCycle.getRequest() instanceof WebRequest + ((WebRequest)requestCycle.getRequest()).isAjax()) + { + throw new AbortException(); + } return; } @@ -138,6 +139,20 @@ ; Component: + component.toString()); } + if (!component.isVisibleInHierarchy() || + (!(behaviorListener instanceof IIgnoreDisabledComponentBehavior) !component.isEnabledInHierarchy())) + { + // ignore this request + logger.warn(component not enabled or visible; ignoring call. Component: {}, component); + if (requestCycle.getRequest() instanceof WebRequest +
Re: disabled components/behaviors fixes of WICKET-3098
On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List; +import org.apache.wicket.AbortException; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.RequestCycle; import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.behavior.IBehaviorListener; +import org.apache.wicket.behavior.IIgnoreDisabledComponentBehavior; import org.apache.wicket.protocol.http.PageExpiredException; +import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.request.RequestParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,13 +88,6 @@ // Get the IBehavior for the component based on the request parameters final Component component = getTarget(); - if (!component.isVisibleInHierarchy() || !component.isEnabledInHierarchy()) - { - // ignore this request - logger.warn(component not enabled or visible; ignoring call. Component: {}, component); - return; - } - final String id = getRequestParameters().getBehaviorId(); if (id == null) { @@ -124,6 +120,11 @@ logger.warn( behavior not enabled; ignoring call. behavior: {} at index: {} on component: {}, new Object[] { behavior, idAsInt, component }); + if (requestCycle.getRequest() instanceof WebRequest + ((WebRequest)requestCycle.getRequest()).isAjax()) + { + throw new AbortException(); + } return; } @@ -138,6 +139,20 @@ ; Component: + component.toString()); } + if (!component.isVisibleInHierarchy() || + (!(behaviorListener instanceof
Re: disabled components/behaviors fixes of WICKET-3098
that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List; +import org.apache.wicket.AbortException; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.RequestCycle; import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.behavior.IBehaviorListener; +import org.apache.wicket.behavior.IIgnoreDisabledComponentBehavior; import org.apache.wicket.protocol.http.PageExpiredException; +import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.request.RequestParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,13 +88,6 @@ // Get the IBehavior for the component based on the request parameters final Component component = getTarget(); - if (!component.isVisibleInHierarchy() || !component.isEnabledInHierarchy()) - { - // ignore this request - logger.warn(component not enabled or visible; ignoring call. Component: {}, component); - return; - } - final String id = getRequestParameters().getBehaviorId(); if (id == null) { @@ -124,6 +120,11 @@
Re: disabled components/behaviors fixes of WICKET-3098
i just fixed it in trunk. in 1.4 we dont really have a choice but to add the mixin interface, but can you at least make the method name match? cheers, -igor On Tue, Nov 23, 2010 at 1:04 PM, Johan Compagner jcompag...@gmail.com wrote: that i find a big hack then i need to have some none visible (in html not in java) label or something.. thats horrible then i need to add all kinds of stuff. I just want that behavior is executed. by a call. that call is not a user event (at least not directly) it is just (in this example) a resize event that is unrelated to the component being disabled. Disabled is just the look in the ui it doesnt mean that resizing shouldnt happen I get that disabled behaviors shouldnt work, i also get that behaviors shouldnt work on none visible components (there is no ui) but disabled components is just a visual thing. that doesnt mean that really all events are also disabled. for example in Swing on a button yes the click event (ActionListenter) is disabled but a ComponentListener (add/remove) still will work fine.. johan On Tue, Nov 23, 2010 at 21:52, Martin Grigorov mgrigo...@apache.org wrote: On Tue, Nov 23, 2010 at 11:02 AM, Johan Compagner jcompag...@gmail.comwrote: i am currently using this patch for our wicket code so that we can move on.. First check is that if it is an ajax request for that behavior then just throw an abort exception.. Dont just return null because the constantly a full page render is done instead of the ajax behavior request. Second is that i introduced an tagging interface so that behaviors can make them self work for disabled components if they want to. anybody a better idea? What about adding a companion component for the resize logic ? I.e. the ListView will be disabled, but the companion component will fire and repaint the ListView if necessary. This way you explicitly say that you want to modify disabled component. johan ### Eclipse Workspace Patch 1.0 #P wicket Index: src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java === --- src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) +++ src/main/java/org/apache/wicket/behavior/IIgnoreDisabledComponentBehavior.java (revision 0) @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.behavior; + +/** + * Interface that can be used to tag behaviors where response should be called on even if the + * component is disabled. + * + * @author jcompagner + */ +public interface IIgnoreDisabledComponentBehavior extends IBehavior +{ + +} Index: src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java === --- src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (revision 1033481) +++ src/main/java/org/apache/wicket/request/target/component/listener/BehaviorRequestTarget.java (working copy) @@ -18,13 +18,16 @@ import java.util.List; +import org.apache.wicket.AbortException; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.RequestCycle; import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.behavior.IBehaviorListener; +import org.apache.wicket.behavior.IIgnoreDisabledComponentBehavior; import org.apache.wicket.protocol.http.PageExpiredException; +import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.request.RequestParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,13 +88,6 @@ // Get the IBehavior for the component based on the request parameters final Component component = getTarget(); - if (!component.isVisibleInHierarchy() || !component.isEnabledInHierarchy()) - { - // ignore this request - logger.warn(component not enabled or visible; ignoring call.