Adding attributes to child components in a behavior.

2010-04-15 Thread Warren Bell
Is there a way to add attributes to child components in a behavior that
is added to a page? I want to create a behavior that is added to a page
that adds some js to the header and then adds some js in an onfocus
attribute of each child form component on the page. I have the list of
child form components, but can't figure out how to add the attribute to
the components.
 
Warren


Re: Adding attributes to child components in a behavior.

2010-04-15 Thread Cemal Bayramoglu
Warren,

See MarkupContainer#visitChildren

Regards - Cemal
jWeekend
OO  Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com

On 15 April 2010 18:44, Warren Bell warr...@clarksnutrition.com wrote:
 Is there a way to add attributes to child components in a behavior that
 is added to a page? I want to create a behavior that is added to a page
 that adds some js to the header and then adds some js in an onfocus
 attribute of each child form component on the page. I have the list of
 child form components, but can't figure out how to add the attribute to
 the components.

 Warren


-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Adding attributes to child components in a behavior.

2010-04-15 Thread Warren Bell
I have that figured out, I just don't know how to add the attribute to 
each component. I can't add a behavior, since Cannot modify component 
hierarchy after render phase has started (page version cant change then 
anymore) Can I even do this in a behavior?


Cemal Bayramoglu wrote:

Warren,

See MarkupContainer#visitChildren

Regards - Cemal
jWeekend
OO  Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com

On 15 April 2010 18:44, Warren Bell warr...@clarksnutrition.com wrote:
  

Is there a way to add attributes to child components in a behavior that
is added to a page? I want to create a behavior that is added to a page
that adds some js to the header and then adds some js in an onfocus
attribute of each child form component on the page. I have the list of
child form components, but can't figure out how to add the attribute to
the components.

Warren




-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

  



--
Thanks,

Warren Bell


-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



RE: Adding attributes to child components in a behavior.

2010-04-15 Thread Warren Bell
Sorry if this got double posted, I didn't see it up there.

I have that figured out, I just don't know how to add the attribute to
each component. I can't add a behavior, since Cannot modify component
hierarchy after render phase has started (page version cant change then
anymore) Can I even do this in a behavior?
 
Cemal Bayramoglu wrote:
 Warren,

 See MarkupContainer#visitChildren

 Regards - Cemal
 jWeekend
 OO  Java Technologies, Wicket
 Consulting, Development, Training
 http://jWeekend.com

 On 15 April 2010 18:44, Warren Bell warr...@clarksnutrition.com
wrote:
  
 Is there a way to add attributes to child components in a behavior
that
 is added to a page? I want to create a behavior that is added to a
page
 that adds some js to the header and then adds some js in an onfocus
 attribute of each child form component on the page. I have the list
of
 child form components, but can't figure out how to add the attribute
to
 the components.

 Warren

 

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org

   
 

-- 
Thanks,
 
Warren Bell


-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Adding attributes to child components in a behavior.

2010-04-15 Thread Michael O'Cleirigh

Hi Warren,

The way I normally handle this situation is to create a javascript 
emitting behaviour that is attached to the container.  This behaviour 
will emit the necessary javascript method to do what you need to do.


Then for each child component you can use an AttributeModifier to write 
their onclick callback to call the custom method being emitted by the 
container attached behavior.


All the logic can be handled in the implementation details of the custom 
method/Object that was emitted.


To get the onclick actions emitted before the rendering phase either 
include it within the container.onBeforeRender() method, to call the 
visitChildren method,  or perhaps within your behavior override the 
AbstractBehavior.beforeRender(Component c) method.


I've written something like this for a table of check boxes where each 
column header is a radio button.  Selecting column 2's radio button 
causes all of the check boxes in column 1 to become disabled and all the 
check boxes in column 2 to become enabled.  In my case I made the 
behaviour aware of the components in each column and then during 
rendering the javascript it writes out an array of markup id's for each 
table column.


But if you don't have the child components in scope when adding the 
behavior to the container adding the child behaviors before rendering 
starts should let things work.


Regards,

Mike






I have that figured out, I just don't know how to add the attribute to 
each component. I can't add a behavior, since Cannot modify component 
hierarchy after render phase has started (page version cant change 
then anymore) Can I even do this in a behavior?


Cemal Bayramoglu wrote:

Warren,

See MarkupContainer#visitChildren

Regards - Cemal
jWeekend
OO  Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com

On 15 April 2010 18:44, Warren Bell warr...@clarksnutrition.com wrote:

Is there a way to add attributes to child components in a behavior that
is added to a page? I want to create a behavior that is added to a page
that adds some js to the header and then adds some js in an onfocus
attribute of each child form component on the page. I have the list of
child form components, but can't figure out how to add the attribute to
the components.

Warren



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org







-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Adding attributes to child components in a behavior.

2010-04-15 Thread Cemal Bayramoglu
I assume you were trying this in beforeRender of your behaviour, which
as you say is too late.
If you really need to use a behaviour encapsulate all this, try
something like the following, but some may feel its a little
politically incorrect to do this in bind.
class MyBehaviour extends AbstractBehavior{
@Override
public void bind(Component component) { 
if(!(component instanceof MarkupContainer)){
throw new RuntimeException(contaıners only 
please);
}
visitChildren(new IVisitorComponent(){
@Override
public Object component(Component component) {
component.add(new 
SimpleAttributeModifier(class,goodChild));
return IVisitor.CONTINUE_TRAVERSAL;
}
});
}
}

Regards - Cemal
jWeekend
OO  Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com


On 15 April 2010 20:17, Warren Bell warrenbe...@gmail.com wrote:
 I have that figured out, I just don't know how to add the attribute to each
 component. I can't add a behavior, since Cannot modify component hierarchy
 after render phase has started (page version cant change then anymore) Can
 I even do this in a behavior?

 Cemal Bayramoglu wrote:

 Warren,

 See MarkupContainer#visitChildren

 Regards - Cemal
 jWeekend
 OO  Java Technologies, Wicket
 Consulting, Development, Training
 http://jWeekend.com

 On 15 April 2010 18:44, Warren Bell warr...@clarksnutrition.com wrote:


 Is there a way to add attributes to child components in a behavior that
 is added to a page? I want to create a behavior that is added to a page
 that adds some js to the header and then adds some js in an onfocus
 attribute of each child form component on the page. I have the list of
 child form components, but can't figure out how to add the attribute to
 the components.

 Warren



 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




 --
 Thanks,

 Warren Bell


 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Adding attributes to child components in a behavior.

2010-04-15 Thread Cemal Bayramoglu
... and if you're not building your component tree before you add such
an IBehaviour to the parent container you can instead override
onBeforeRender on that container to do something like:

@Override
public void onBeforeRender() {
super.onBeforeRender();
visitChildren(new IVisitorComponent(){
@Override
public Object 
component(Component component) {
component.add(new 
SimpleAttributeModifier(class,goodChild));
return 
IVisitor.CONTINUE_TRAVERSAL;
}
});
}


Regards - Cemal
jWeekend
OO  Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com

On 15 April 2010 21:17, Cemal Bayramoglu jweekend_for...@cabouge.com wrote:
 I assume you were trying this in beforeRender of your behaviour, which
 as you say is too late.
 If you really need to use a behaviour encapsulate all this, try
 something like the following, but some may feel its a little
 politically incorrect to do this in bind.
        class MyBehaviour extends AbstractBehavior{
               �...@override
                public void bind(Component component) {
                        if(!(component instanceof MarkupContainer)){
                                throw new RuntimeException(contaıners only 
 please);
                        }
                        visitChildren(new IVisitorComponent(){
                               �...@override
                                public Object component(Component component) {
                                        component.add(new 
 SimpleAttributeModifier(class,goodChild));
                                        return IVisitor.CONTINUE_TRAVERSAL;
                                }
                        });
                }
        }

 Regards - Cemal
 jWeekend
 OO  Java Technologies, Wicket
 Consulting, Development, Training
 http://jWeekend.com


 On 15 April 2010 20:17, Warren Bell warrenbe...@gmail.com wrote:
 I have that figured out, I just don't know how to add the attribute to each
 component. I can't add a behavior, since Cannot modify component hierarchy
 after render phase has started (page version cant change then anymore) Can
 I even do this in a behavior?

 Cemal Bayramoglu wrote:

 Warren,

 See MarkupContainer#visitChildren

 Regards - Cemal
 jWeekend
 OO  Java Technologies, Wicket
 Consulting, Development, Training
 http://jWeekend.com

 On 15 April 2010 18:44, Warren Bell warr...@clarksnutrition.com wrote:


 Is there a way to add attributes to child components in a behavior that
 is added to a page? I want to create a behavior that is added to a page
 that adds some js to the header and then adds some js in an onfocus
 attribute of each child form component on the page. I have the list of
 child form components, but can't figure out how to add the attribute to
 the components.

 Warren



 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




 --
 Thanks,

 Warren Bell


 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Adding attributes to child components in a behavior.

2010-04-15 Thread Warren Bell
I ended up doing it in bind of the behavior and it works fine. I just have to 
remember to add the behavior to the page after all the other components. Thanks
 
 
 
I assume you were trying this in beforeRender of your behaviour, which
as you say is too late.
If you really need to use a behaviour encapsulate all this, try
something like the following, but some may feel its a little
politically incorrect to do this in bind.
 class MyBehaviour extends AbstractBehavior{
  @Override
  public void bind(Component component) {  
   if(!(component instanceof MarkupContainer)){
throw new RuntimeException(contaıners only please);
   }
   visitChildren(new IVisitorComponent(){
@Override
public Object component(Component component) {
 component.add(new SimpleAttributeModifier(class,goodChild));
 return IVisitor.CONTINUE_TRAVERSAL;
}
   });
  }
 }
 
Regards - Cemal
jWeekend
OO  Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com
 

On 15 April 2010 20:17, Warren Bell warrenbe...@gmail.com wrote:
  I have that figured out, I just don't know how to add the attribute to each
  component. I can't add a behavior, since Cannot modify component hierarchy
  after render phase has started (page version cant change then anymore) Can
  I even do this in a behavior?
 
  Cemal Bayramoglu wrote:
 
  Warren,
 
  See MarkupContainer#visitChildren
 
  Regards - Cemal
  jWeekend
  OO  Java Technologies, Wicket
  Consulting, Development, Training
  http://jWeekend.com
 
  On 15 April 2010 18:44, Warren Bell warr...@clarksnutrition.com wrote:
 
 
  Is there a way to add attributes to child components in a behavior that
  is added to a page? I want to create a behavior that is added to a page
  that adds some js to the header and then adds some js in an onfocus
  attribute of each child form component on the page. I have the list of
  child form components, but can't figure out how to add the attribute to
  the components.
 
  Warren
 
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
  For additional commands, e-mail: users-h...@wicket.apache.org
 
 
 
 
  --
  Thanks,
 
  Warren Bell
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
  For additional commands, e-mail: users-h...@wicket.apache.org
 
 
 
-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org
 
 


Re: Adding attributes to child components in a behavior.

2010-04-15 Thread Jeremy Thomerson
Yes, this is risky.  Why not add the appropriate onclick handler via JS on
the client side?  i.e., you could output javascript (jQuery in this example)
that says:

$('#myTableID tr').click(function() {
  // do whatever your onclick should do
});

That's just another option - not necessarily the best way either.

--
Jeremy Thomerson
http://www.wickettraining.com



2010/4/15 Warren Bell warr...@clarksnutrition.com

 I ended up doing it in bind of the behavior and it works fine. I just have
 to remember to add the behavior to the page after all the other components.
 Thanks



 I assume you were trying this in beforeRender of your behaviour, which
 as you say is too late.
 If you really need to use a behaviour encapsulate all this, try
 something like the following, but some may feel its a little
 politically incorrect to do this in bind.
  class MyBehaviour extends AbstractBehavior{
  @Override
  public void bind(Component component) {
   if(!(component instanceof MarkupContainer)){
throw new RuntimeException(contaıners only please);
   }
   visitChildren(new IVisitorComponent(){
@Override
public Object component(Component component) {
 component.add(new SimpleAttributeModifier(class,goodChild));
 return IVisitor.CONTINUE_TRAVERSAL;
}
   });
  }
  }

 Regards - Cemal
 jWeekend
 OO  Java Technologies, Wicket
 Consulting, Development, Training
 http://jWeekend.com


 On 15 April 2010 20:17, Warren Bell warrenbe...@gmail.com wrote:
   I have that figured out, I just don't know how to add the attribute to
 each
   component. I can't add a behavior, since Cannot modify component
 hierarchy
   after render phase has started (page version cant change then anymore)
 Can
   I even do this in a behavior?
  
   Cemal Bayramoglu wrote:
  
   Warren,
  
   See MarkupContainer#visitChildren
  
   Regards - Cemal
   jWeekend
   OO  Java Technologies, Wicket
   Consulting, Development, Training
   http://jWeekend.com
  
   On 15 April 2010 18:44, Warren Bell warr...@clarksnutrition.com
 wrote:
  
  
   Is there a way to add attributes to child components in a behavior
 that
   is added to a page? I want to create a behavior that is added to a
 page
   that adds some js to the header and then adds some js in an onfocus
   attribute of each child form component on the page. I have the list
 of
   child form components, but can't figure out how to add the
 attribute to
   the components.
  
   Warren
  
  
  
   -
   To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
   For additional commands, e-mail: users-h...@wicket.apache.org
  
  
  
  
   --
   Thanks,
  
   Warren Bell
  
  
   -
   To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
   For additional commands, e-mail: users-h...@wicket.apache.org
  
  

 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org