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.com>wrote:
>>>>>>>
>>>>>>>> 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
>>>>>>>> IIgnoreDisabledComponentBehavior)
>>>>>>>> && !component.isEnabledInHierarchy()))
>>>>>>>> +               {
>>>>>>>> +                       // ignore this request
>>>>>>>> +                       logger.warn("component not enabled or visible;
>>>>>>>> ignoring call.
>>>>>>>> Component: {}", component);
>>>>>>>> +                       if (requestCycle.getRequest() instanceof 
>>>>>>>> WebRequest
>>>>>>>> &&
>>>>>>>> +
>>>>>>>> ((WebRequest)requestCycle.getRequest()).isAjax())
>>>>>>>> +                       {
>>>>>>>> +                               throw new AbortException();
>>>>>>>> +                       }
>>>>>>>> +                       return;
>>>>>>>> +               }
>>>>>>>> +
>>>>>>>> +
>>>>>>>>                // Invoke the interface method
>>>>>>>>                behaviorListener.onRequest();
>>>>>>>>         }
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Nov 23, 2010 at 09:42, Johan Compagner <jcompag...@gmail.com>
>>>>>>>> wrote:
>>>>>>>> > 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
>>>>>>>> >
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to