Referencing DataTable rows within the table column header

2014-09-09 Thread Ephraim Rosenfeld
Hello All,

I am creating a table with a DropDownChoice component in the header of one of 
the columns. When a selection is made in the drop down in the column header, I 
want to update all of the rows in the table.

Would the following snippet be the best approach to reference each row Item 
component from the column header, or is there an alternative to using the get() 
method?

Thank you in advance,

- Ephraim

WebMarkupContainer container = 
((WebMarkupContainer)dropDownChoice.findParent(DataTable.class).get(1));
   DataGridView gridView  = 
(DataGridView)container.get(0);
   for(int i = 0; i  NUM_OF_ROWS; i++) {
   Item item = (Item)gridView.get(i);
// do row updates
}


Re: Referencing DataTable rows within the table column header

2014-09-09 Thread Martin Grigorov
Hi,

Why don't you update the table itself ? This will update all its children
components too.

Otherwise I'd use Wicket's Event system to send a notification to all
interested parties.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov


On Tue, Sep 9, 2014 at 7:01 PM, Ephraim Rosenfeld erosenf...@knoa.com
wrote:

 Hello All,

 I am creating a table with a DropDownChoice component in the header of one
 of the columns. When a selection is made in the drop down in the column
 header, I want to update all of the rows in the table.

 Would the following snippet be the best approach to reference each row
 Item component from the column header, or is there an alternative to using
 the get() method?

 Thank you in advance,

 - Ephraim

 WebMarkupContainer container =
 ((WebMarkupContainer)dropDownChoice.findParent(DataTable.class).get(1));
DataGridView gridView  =
 (DataGridView)container.get(0);
for(int i = 0; i  NUM_OF_ROWS; i++) {
Item item = (Item)gridView.get(i);
 // do row updates
 }



RE: Referencing DataTable rows within the table column header

2014-09-09 Thread Ephraim Rosenfeld
Hi Martin:



Thank you for your quick response.



I was initially updating the entire table, but that was causing me to lose 
focus from the drop-down menu in which I made the selection. Also, my hope was 
that I could update as few row items/components as possible, thereby expediting 
the table-refresh process.



When you mention 'Wicket's Event System', are you referring to inter-component 
events, like the example portrayed here: 
http://savicprvoslav.blogspot.com/2012/06/wicket-15-inter-component-events.html



Regards,



- Ephraim



-Original Message-
From: Martin Grigorov [mailto:mgrigo...@apache.org]
Sent: Tuesday, September 09, 2014 12:10 PM
To: users@wicket.apache.org
Subject: Re: Referencing DataTable rows within the table column header



Hi,



Why don't you update the table itself ? This will update all its children 
components too.



Otherwise I'd use Wicket's Event system to send a notification to all 
interested parties.



Martin Grigorov

Wicket Training and Consulting

https://twitter.com/mtgrigorov





On Tue, Sep 9, 2014 at 7:01 PM, Ephraim Rosenfeld 
erosenf...@knoa.commailto:erosenf...@knoa.com

wrote:



 Hello All,



 I am creating a table with a DropDownChoice component in the header of

 one of the columns. When a selection is made in the drop down in the

 column header, I want to update all of the rows in the table.



 Would the following snippet be the best approach to reference each row

 Item component from the column header, or is there an alternative to

 using the get() method?



 Thank you in advance,



 - Ephraim



 WebMarkupContainer container =

 ((WebMarkupContainer)dropDownChoice.findParent(DataTable.class).get(1));

DataGridView gridView  =

 (DataGridView)container.get(0);

for(int i = 0; i  NUM_OF_ROWS; i++) {

Item item = (Item)gridView.get(i);

 // do row updates

 }




Re: Referencing DataTable rows within the table column header

2014-09-09 Thread Paul Bors
Hey Ephraim,

At Knoa for the console code I created an API around those components.
You don't have to re-invent the wheel, all you have to do is get familiar
with the console commons and which DropDown component to use.

Remember wicket is a component driven framework similar to Swing.

I would recommend using one of the Ajax enabled drop downs and override the
method to refresh the data table rows of interest. There are plenty of
examples in the console's code base... look at how other table such as the
ones for the End User attributes are refreshed or how the edit button in a
table cell will turn the table row into form components. Use the same
principle.

Also, if this is just a filter toolbar, then look at how other Ajax filter
toolbars work and you won't loos focus of the drop down since it's Ajax
that does the refresh.

If you are to re-implement this from scratch and re-invent the wheel you
can also but I won't recommend it.
Just look over the current available components in your commons API and use
the appropriate one, or extend it and make it do what you need.

Martin was referring to the event mechanism build in Wicket documented in
the Wicket Guide at:
http://wicket.apache.org/guide/guide/single.html#advanced_1

But for a simple filter toolbar you don't need to get that complicated.

~ Have fun,
   Paul Bors

On Tue, Sep 9, 2014 at 12:29 PM, Ephraim Rosenfeld erosenf...@knoa.com
wrote:

 Hi Martin:



 Thank you for your quick response.



 I was initially updating the entire table, but that was causing me to lose
 focus from the drop-down menu in which I made the selection. Also, my hope
 was that I could update as few row items/components as possible, thereby
 expediting the table-refresh process.



 When you mention 'Wicket's Event System', are you referring to
 inter-component events, like the example portrayed here:
 http://savicprvoslav.blogspot.com/2012/06/wicket-15-inter-component-events.html



 Regards,



 - Ephraim



 -Original Message-
 From: Martin Grigorov [mailto:mgrigo...@apache.org]
 Sent: Tuesday, September 09, 2014 12:10 PM
 To: users@wicket.apache.org
 Subject: Re: Referencing DataTable rows within the table column header



 Hi,



 Why don't you update the table itself ? This will update all its children
 components too.



 Otherwise I'd use Wicket's Event system to send a notification to all
 interested parties.



 Martin Grigorov

 Wicket Training and Consulting

 https://twitter.com/mtgrigorov





 On Tue, Sep 9, 2014 at 7:01 PM, Ephraim Rosenfeld erosenf...@knoa.com
 mailto:erosenf...@knoa.com

 wrote:



  Hello All,

 

  I am creating a table with a DropDownChoice component in the header of

  one of the columns. When a selection is made in the drop down in the

  column header, I want to update all of the rows in the table.

 

  Would the following snippet be the best approach to reference each row

  Item component from the column header, or is there an alternative to

  using the get() method?

 

  Thank you in advance,

 

  - Ephraim

 

  WebMarkupContainer container =

  ((WebMarkupContainer)dropDownChoice.findParent(DataTable.class).get(1));

 DataGridView gridView  =

  (DataGridView)container.get(0);

 for(int i = 0; i  NUM_OF_ROWS; i++) {

 Item item = (Item)gridView.get(i);

  // do row updates

  }

 



Re: Referencing DataTable rows within the table column header

2014-09-09 Thread Paul Bors
Another piece of advice,

Avoid unnecessary casts (Wicket 6 supports generics) and try not to use
code to navigate the wicket component tree unnecessary like this line of
code:

WebMarkupContainer container = ((WebMarkupContainer)
dropDownChoice.findParent(DataTable.class).get(1));

Get familiar with the best practices documented at:
http://wicket.apache.org/guide/guide/single.html#bestpractices

You should give the free guide a read back to back and treat it as your
bible until you get a bit more intimate with Wicket :)

Other resources available for you to learn and master Wicket are the Wicket
Stuff (http://wicketstuff.org/) and the examples at:
http://www.wicket-library.com/wicket-examples-6.0.x/index.html

Get familiar to those as well.

For a filter toolbar see:
http://www.wicket-library.com/wicket-examples-6.0.x/repeater/wicket/bookmarkable/org.apache.wicket.examples.repeater.DataTableFilterToolbarPage;jsessionid=03E1374082C8198F0F052CED6E54F7A1?0

Although is not using a drop-down but you'll get the idea :)

~ Thank you,
   Paul Bors


On Tue, Sep 9, 2014 at 2:57 PM, Paul Bors p...@bors.ws wrote:

 Hey Ephraim,

 At Knoa for the console code I created an API around those components.
 You don't have to re-invent the wheel, all you have to do is get familiar
 with the console commons and which DropDown component to use.

 Remember wicket is a component driven framework similar to Swing.

 I would recommend using one of the Ajax enabled drop downs and override
 the method to refresh the data table rows of interest. There are plenty of
 examples in the console's code base... look at how other table such as the
 ones for the End User attributes are refreshed or how the edit button in a
 table cell will turn the table row into form components. Use the same
 principle.

 Also, if this is just a filter toolbar, then look at how other Ajax filter
 toolbars work and you won't loos focus of the drop down since it's Ajax
 that does the refresh.

 If you are to re-implement this from scratch and re-invent the wheel you
 can also but I won't recommend it.
 Just look over the current available components in your commons API and
 use the appropriate one, or extend it and make it do what you need.

 Martin was referring to the event mechanism build in Wicket documented in
 the Wicket Guide at:
 http://wicket.apache.org/guide/guide/single.html#advanced_1

 But for a simple filter toolbar you don't need to get that complicated.

 ~ Have fun,
Paul Bors

 On Tue, Sep 9, 2014 at 12:29 PM, Ephraim Rosenfeld erosenf...@knoa.com
 wrote:

 Hi Martin:



 Thank you for your quick response.



 I was initially updating the entire table, but that was causing me to
 lose focus from the drop-down menu in which I made the selection. Also, my
 hope was that I could update as few row items/components as possible,
 thereby expediting the table-refresh process.



 When you mention 'Wicket's Event System', are you referring to
 inter-component events, like the example portrayed here:
 http://savicprvoslav.blogspot.com/2012/06/wicket-15-inter-component-events.html



 Regards,



 - Ephraim



 -Original Message-
 From: Martin Grigorov [mailto:mgrigo...@apache.org]
 Sent: Tuesday, September 09, 2014 12:10 PM
 To: users@wicket.apache.org
 Subject: Re: Referencing DataTable rows within the table column header



 Hi,



 Why don't you update the table itself ? This will update all its children
 components too.



 Otherwise I'd use Wicket's Event system to send a notification to all
 interested parties.



 Martin Grigorov

 Wicket Training and Consulting

 https://twitter.com/mtgrigorov





 On Tue, Sep 9, 2014 at 7:01 PM, Ephraim Rosenfeld erosenf...@knoa.com
 mailto:erosenf...@knoa.com

 wrote:



  Hello All,

 

  I am creating a table with a DropDownChoice component in the header of

  one of the columns. When a selection is made in the drop down in the

  column header, I want to update all of the rows in the table.

 

  Would the following snippet be the best approach to reference each row

  Item component from the column header, or is there an alternative to

  using the get() method?

 

  Thank you in advance,

 

  - Ephraim

 

  WebMarkupContainer container =

  ((WebMarkupContainer)dropDownChoice.findParent(DataTable.class).get(1));

 DataGridView gridView  =

  (DataGridView)container.get(0);

 for(int i = 0; i  NUM_OF_ROWS; i++) {

 Item item = (Item)gridView.get(i);

  // do row updates

  }