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