Non technical question: Editing registered service provider page help
Guys, I have a registered account on confluence but, I can't edit the service provider page. I'm missing something or do you need to add me? cheers. -- -m. --- This email, and any attachments, may be confidential and also privileged. If you are not the intended recipient, please notify the sender and delete all copies of this transmission along with any attachments immediately. You should not copy or use it for any purpose, nor disclose its contents to any other person. ---
RE: Question on Double Submit and rendering strategy
Thanks for that Martin - I understand. Thanks also for the alternate approaches. I think we might experiment with the AjaxChannel#ACTIVE approach as an alternative although we do have the veil approach ready to ship. Cheers. -Original Message- From: Martin Grigorov [mailto:mgrigo...@apache.org] Sent: Monday, 24 November 2014 7:08 PM To: users@wicket.apache.org Subject: Re: Question on Double Submit and rendering strategy Hi, What you observe is correct ! Wicket support for Redirect after Post http://en.wikipedia.org/wiki/Post/Redirect/Get is to prevent double submit of a form if the user reloads the page (Ctrl+R or F5) or if the user navigates back. In these cases usually the browser would ask you whether you want to re-send the form data. With the REDIRECT_TO_XYZ strategies this is avoided. As you have found out this doesn't cover the cases when the user clicks several times on a submit button/link. The only support for this in Wicket is to use AjaxChannel#ACTIVE for Ajax submit buttons/links. Using an active channel will prevent any following Ajax call while there is an active one with the same channel name. But this solution doesn't provide visual feedback for the user. It just silently ignores the click event. Other ways to prevent multiple submits are not so generic and that's why they are not provided by Wicket itself. These include: - Disable the button/link somehow Wicket 6.x replaces a with spanem by default but this is not acceptable by some applications. Wicket-Bootstrap https://github.com/l0rdn1kk0n/wicket-bootstrap for example follows Bootstrap recommendations for making the button/link look and act as disabled - Show a veil Some apps prefer to veil only the button. Others the whole screen. Others some area, e.g. just the form. The UI used as a veil also differs for most applications... That's why Wicket doesn't provide a generic solution here. Any feedback about this and other topics in Wicket are very welcome ! On Mon, Nov 24, 2014 at 1:36 AM, Hesketh, Mark mark.hesk...@act.gov.au wrote: Hi Please give more details what you try to avoid exactly by making changes in this area. [MH] Hello again, [MH] Well, I'm trying to avoid Double Submit through repeatedly button clicking (or submitting a form). We're currently [MH] porting all our web applications to Wicket. We have had to include a veil function around the Next button [MH] to block subsequent clicks explicitly as Wicket's Double Submit prevention (we are using the default RENDER_TO_BUFFER render strategy) [MH] is allowing repeated requests through. I've stepped through WebPageRenderer::respond() and noticed that there's a call [MH] to getAndRemoveBufferedResponse() and stopped looking since I could see that responses were being discarded. I just assumed that I am misunderstanding [MH] the full intent of the Double Submit treatment in Wicket. Hope that makes sense. I'm not wanting to *change* Wicket here, I'm chasing clarification only given what [MH] what I've stepped through and hear that from the maintainers directly. I guess I'm confused about what happens when there's more than one duplicate request when [MH] clearly the implementation is discarding (by design) the buffered response to an identical earlier request. [MH] [MH] Many thanks Hello, I just wanted to know what the impact of removing the buffered response (referring to javadoc below for REDIRECT_TO_BUFFER) for a request is if there's presumably a bunch of other duplicate requests following it on solving the Double Submit problem. ( http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/s et tings/IRequestCycleSettings.html ) I'm puzzled about throwing a response away when I would have thought it's buffered and reused to service the (duplicate) requests following? Many thanks cheers. -m. -- - This email, and any attachments, may be confidential and also privileged. If you are not the intended recipient, please notify the sender and delete all copies of this transmission along with any attachments immediately. You should not copy or use it for any purpose, nor disclose its contents to any other person. -- - -- - This email, and any attachments, may be confidential and also privileged. If you are not the intended recipient, please notify the sender and delete all copies of this transmission along with any attachments immediately. You should not copy or use it for any purpose, nor disclose its contents to any other person. -- - --- This email, and any attachments, may be confidential and also
RE: Question on Double Submit and rendering strategy
Hi Please give more details what you try to avoid exactly by making changes in this area. [MH] Hello again, [MH] Well, I'm trying to avoid Double Submit through repeatedly button clicking (or submitting a form). We're currently [MH] porting all our web applications to Wicket. We have had to include a veil function around the Next button [MH] to block subsequent clicks explicitly as Wicket's Double Submit prevention (we are using the default RENDER_TO_BUFFER render strategy) [MH] is allowing repeated requests through. I've stepped through WebPageRenderer::respond() and noticed that there's a call [MH] to getAndRemoveBufferedResponse() and stopped looking since I could see that responses were being discarded. I just assumed that I am misunderstanding [MH] the full intent of the Double Submit treatment in Wicket. Hope that makes sense. I'm not wanting to *change* Wicket here, I'm chasing clarification only given what [MH] what I've stepped through and hear that from the maintainers directly. I guess I'm confused about what happens when there's more than one duplicate request when [MH] clearly the implementation is discarding (by design) the buffered response to an identical earlier request. [MH] [MH] Many thanks Hello, I just wanted to know what the impact of removing the buffered response (referring to javadoc below for REDIRECT_TO_BUFFER) for a request is if there's presumably a bunch of other duplicate requests following it on solving the Double Submit problem. ( http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/set tings/IRequestCycleSettings.html ) I'm puzzled about throwing a response away when I would have thought it's buffered and reused to service the (duplicate) requests following? Many thanks cheers. -m. -- - This email, and any attachments, may be confidential and also privileged. If you are not the intended recipient, please notify the sender and delete all copies of this transmission along with any attachments immediately. You should not copy or use it for any purpose, nor disclose its contents to any other person. -- - --- This email, and any attachments, may be confidential and also privileged. If you are not the intended recipient, please notify the sender and delete all copies of this transmission along with any attachments immediately. You should not copy or use it for any purpose, nor disclose its contents to any other person. ---
Question on Double Submit and rendering strategy
Hello, I just wanted to know what the impact of removing the buffered response (referring to javadoc below for REDIRECT_TO_BUFFER) for a request is if there's presumably a bunch of other duplicate requests following it on solving the Double Submit problem. (http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/settings/IRequestCycleSettings.html) I'm puzzled about throwing a response away when I would have thought it's buffered and reused to service the (duplicate) requests following? Many thanks cheers. -m. --- This email, and any attachments, may be confidential and also privileged. If you are not the intended recipient, please notify the sender and delete all copies of this transmission along with any attachments immediately. You should not copy or use it for any purpose, nor disclose its contents to any other person. ---
Mixing Wicket + JQuery + JQueryUI to achieve infinite scroll.
Unfortunately I am a beginner to Wicket and looking for for guidance on integrating Wicket + JQuery + JQueryUI in a way to achieve infinite scroll. Ideally I would aim to achieve something like the following url that allows you to inject divs that contain both images and text into the page: http://masonry.desandro.com/demos/infinite-scroll.html. Anyone, with any advice on how to achieve this? From what I read Wicket 1.6 will be out soon and using JQuery as it's AJAX processor. Will this change things much? -- snippet -- http://apache-wicket.1842946.n4.nabble.com/Roadmap-for-Wicket-6-tt3777610.html#none 5. Ajax refactoring to use JQuery and provide proper JQuery integration in core -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Mixing-Wicket-JQuery-JQueryUI-to-achieve-infinite-scroll-tp4502701p4502701.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Page Map versions and Ajax Requests
1.5.3. I've narrowed the problem to a ListView being present on the page. Whenever there's a ListView with setReuseItems set to false (the default) the Page ID gets incremented whenever the back button is used to return to the page. I confirmed this with a call to getPage().getPageId() in an onComponentTag method. After returning via the back button the URL is still at the original Page ID while there's a newer version in the page map. Without a ListView present on the page using the back button does not increment the Page ID and everything works as expected. I have a quickstart app that illustrates the problem. Here is the page with the applicable code: http://pastebin.com/jn9czHK8 Mark On Friday, December 9, 2011 at 9:56 AM, Nazaret Kazarian wrote: Which version of Wicket are you using? 2011/12/7 Lichtenberg, Mark mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com): I have a page containing a number of AjaxLinks that when clicked fetch data and update some panels. When a user leaves one of these pages and returns via the back button the state of the page isn't always how they left it. However, this behavior happens only when the page is returned to the second time. Using the the request logger I've been able to partially explain this with the page IDs: 1. First visit to page X has a page ID of 3 2. AjaxLink requests for this page also have a page ID of 3. 3. User leaves page then returns to page X via the back button; this request also has ID of 3 4. User clicks AjaxLinks again, but here a new X page is created with an ID of 5 5. User leaves page and again returns with the back button. Here the page state is as they left it in #2, and the URL confirms the page ID of 3 I understand using the back button will always take the user to ID 3 since it is present in the URL. My workaround so far is to add the Page component to the target of my AjaxLink onClick()s. This increments the page ID whenever an AjaxLink is clicked and is reflected in the URL, so the back button always returns to the last state. So I have two questions - Why is a new page X created in step 4 above, and why does adding the Page component to the ajax request target make a new page map entry? Thanks, Mark - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org (mailto:users-unsubscr...@wicket.apache.org) For additional commands, e-mail: users-h...@wicket.apache.org (mailto:users-h...@wicket.apache.org)
Re: Page Map versions and Ajax Requests
That's exactly what I'm experiencing. In 1.5 it appears there's a few extra requests during a reload that I assume are retrieving the latest page version. I'll create a bug report. Thanks for your help. Mark On Friday, December 9, 2011 at 1:26 PM, Dan Retzlaff wrote: I confirmed this behavior in our application. Simply reloading a page with a ListView a few times advances the page ID but not the URL. AJAX links know to target the new page ID, but any updates they make get lost if the page gets reloaded from the URL. Sounds like a bug to me. Wicket 1.4 didn't behave this way. On Fri, Dec 9, 2011 at 10:26 AM, Dan Retzlaff dretzl...@gmail.com (mailto:dretzl...@gmail.com) wrote: Without reusing the ListView items, the item.add(...) will get called with each render. I expect that'll cause MarkupContainer#addedComponent() to WebPage#componentAdded() to WebPage#dirty() which sets a new page ID. Sorry I don't have time to test the theory at the moment. On Fri, Dec 9, 2011 at 8:27 AM, Mark Lichtenberg mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com) wrote: 1.5.3. I've narrowed the problem to a ListView being present on the page. Whenever there's a ListView with setReuseItems set to false (the default) the Page ID gets incremented whenever the back button is used to return to the page. I confirmed this with a call to getPage().getPageId() in an onComponentTag method. After returning via the back button the URL is still at the original Page ID while there's a newer version in the page map. Without a ListView present on the page using the back button does not increment the Page ID and everything works as expected. I have a quickstart app that illustrates the problem. Here is the page with the applicable code: http://pastebin.com/jn9czHK8 Mark On Friday, December 9, 2011 at 9:56 AM, Nazaret Kazarian wrote: Which version of Wicket are you using? 2011/12/7 Lichtenberg, Mark mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com) (mailto: mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com)): I have a page containing a number of AjaxLinks that when clicked fetch data and update some panels. When a user leaves one of these pages and returns via the back button the state of the page isn't always how they left it. However, this behavior happens only when the page is returned to the second time. Using the the request logger I've been able to partially explain this with the page IDs: 1. First visit to page X has a page ID of 3 2. AjaxLink requests for this page also have a page ID of 3. 3. User leaves page then returns to page X via the back button; this request also has ID of 3 4. User clicks AjaxLinks again, but here a new X page is created with an ID of 5 5. User leaves page and again returns with the back button. Here the page state is as they left it in #2, and the URL confirms the page ID of 3 I understand using the back button will always take the user to ID 3 since it is present in the URL. My workaround so far is to add the Page component to the target of my AjaxLink onClick()s. This increments the page ID whenever an AjaxLink is clicked and is reflected in the URL, so the back button always returns to the last state. So I have two questions - Why is a new page X created in step 4 above, and why does adding the Page component to the ajax request target make a new page map entry? Thanks, Mark - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org (mailto:users-unsubscr...@wicket.apache.org) (mailto: users-unsubscr...@wicket.apache.org (mailto:users-unsubscr...@wicket.apache.org)) For additional commands, e-mail: users-h...@wicket.apache.org (mailto:users-h...@wicket.apache.org) (mailto: users-h...@wicket.apache.org (mailto:users-h...@wicket.apache.org))
Re: Page Map versions and Ajax Requests
I'm seeing requests logged when the RequestLogger is enabled during page reloads and when the back button is used. The same code under 1.4 does not. I assumed the extra request was to fetch the latest render of the page if it was updated via ajax. On Friday, December 9, 2011 at 1:59 PM, Dan Retzlaff wrote: I wouldn't say there are extra requests, just extra page versions due to re-population of the list view. Seems like the re-population process should be engineered in a way that doesn't advance the page number. But I'll leave that to the experts. :) On Fri, Dec 9, 2011 at 11:50 AM, Mark Lichtenberg mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com) wrote: That's exactly what I'm experiencing. In 1.5 it appears there's a few extra requests during a reload that I assume are retrieving the latest page version. I'll create a bug report. Thanks for your help. Mark On Friday, December 9, 2011 at 1:26 PM, Dan Retzlaff wrote: I confirmed this behavior in our application. Simply reloading a page with a ListView a few times advances the page ID but not the URL. AJAX links know to target the new page ID, but any updates they make get lost if the page gets reloaded from the URL. Sounds like a bug to me. Wicket 1.4 didn't behave this way. On Fri, Dec 9, 2011 at 10:26 AM, Dan Retzlaff dretzl...@gmail.com (mailto:dretzl...@gmail.com)(mailto: dretzl...@gmail.com (mailto:dretzl...@gmail.com)) wrote: Without reusing the ListView items, the item.add(...) will get called with each render. I expect that'll cause MarkupContainer#addedComponent() to WebPage#componentAdded() to WebPage#dirty() which sets a new page ID. Sorry I don't have time to test the theory at the moment. On Fri, Dec 9, 2011 at 8:27 AM, Mark Lichtenberg mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com) wrote: 1.5.3. I've narrowed the problem to a ListView being present on the page. Whenever there's a ListView with setReuseItems set to false (the default) the Page ID gets incremented whenever the back button is used to return to the page. I confirmed this with a call to getPage().getPageId() in an onComponentTag method. After returning via the back button the URL is still at the original Page ID while there's a newer version in the page map. Without a ListView present on the page using the back button does not increment the Page ID and everything works as expected. I have a quickstart app that illustrates the problem. Here is the page with the applicable code: http://pastebin.com/jn9czHK8 Mark On Friday, December 9, 2011 at 9:56 AM, Nazaret Kazarian wrote: Which version of Wicket are you using? 2011/12/7 Lichtenberg, Mark mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com) (mailto: mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com)) (mailto: mlichtenb...@machenergy.com (mailto:mlichtenb...@machenergy.com)): I have a page containing a number of AjaxLinks that when clicked fetch data and update some panels. When a user leaves one of these pages and returns via the back button the state of the page isn't always how they left it. However, this behavior happens only when the page is returned to the second time. Using the the request logger I've been able to partially explain this with the page IDs: 1. First visit to page X has a page ID of 3 2. AjaxLink requests for this page also have a page ID of 3. 3. User leaves page then returns to page X via the back button; this request also has ID of 3 4. User clicks AjaxLinks again, but here a new X page is created with an ID of 5 5. User leaves page and again returns with the back button. Here the page state is as they left it in #2, and the URL confirms the page ID of 3 I understand using the back button will always take the user to ID 3 since it is present in the URL. My workaround so far is to add the Page component to the target of my AjaxLink onClick()s. This increments the page ID whenever an AjaxLink is clicked and is reflected in the URL, so the back button always returns
Page Map versions and Ajax Requests
I have a page containing a number of AjaxLinks that when clicked fetch data and update some panels. When a user leaves one of these pages and returns via the back button the state of the page isn't always how they left it. However, this behavior happens only when the page is returned to the second time. Using the the request logger I've been able to partially explain this with the page IDs: 1. First visit to page X has a page ID of 3 2. AjaxLink requests for this page also have a page ID of 3. 3. User leaves page then returns to page X via the back button; this request also has ID of 3 4. User clicks AjaxLinks again, but here a new X page is created with an ID of 5 5. User leaves page and again returns with the back button. Here the page state is as they left it in #2, and the URL confirms the page ID of 3 I understand using the back button will always take the user to ID 3 since it is present in the URL. My workaround so far is to add the Page component to the target of my AjaxLink onClick()s. This increments the page ID whenever an AjaxLink is clicked and is reflected in the URL, so the back button always returns to the last state. So I have two questions - Why is a new page X created in step 4 above, and why does adding the Page component to the ajax request target make a new page map entry? Thanks, Mark
Page Map versions and Ajax Requests
I have a page containing a number of AjaxLinks that when clicked fetch data and update some panels. When a user leaves one of these pages and returns via the back button the state of the page isn't always how they left it. However, this behavior happens only when the page is returned to the second time. Using the the request logger I've been able to partially explain this with the page IDs: First visit to page X has a page ID of 3 AjaxLink requests for this page also have a page ID of 3. User leaves page then returns to page X via the back button; this request also has ID of 3 User clicks AjaxLinks again, but here a new X page is created with an ID of 5 User leaves page and again returns with the back button. Here the page state is as they left it in #2, and the URL confirms the page ID of 3 I understand using the back button will always take the user to ID 3 since it is present in the URL. My workaround so far is to add the Page component to the target of my AjaxLink onClick()s. This increments the page ID whenever an AjaxLink is clicked and is reflected in the URL, so the back button always returns to the last state. So I have two questions - Why is a new page X created in step 4 above, and why does adding the Page component to the ajax request target make a new page map entry? Thanks, Mark
Wicket newbie seeks redirect idiom
Hello. I just finished reading Wicket In Action, and now I'm working on my first Wicket app. I have a simple question about page redirects. My application's homepage is WelcomePage.java, which I have mounted on /welcome. However, if the user has already authenticated and they have a session, I would like to immediately send them to HomePage.java if they happen to browse to /welcome. HomePage.java is a protected page that contains stuff only a logged user can see. Whereas WelcomePage.java is the unauthenticated user's restricted view of the site. As a first step, I have chosen to implement this redirect in the WelcomePage ctor as follows: public WelcomePage(PageParameters parameters) { add(new Label(message, blah)); if (AppSession.get().isAuthenticated()) { setResponsePage(HomePage.class); } } While checking the session for an authenticated user and setting the response page to HomePage.class seems to work, I don't know if it represents the Wicket Way. I was thinking there may be a more elegant way to affect the redirect, perhaps with one of the Page lifecycle methods. Would someone who has been here be kind enough to comment? Thank you. -- Mark - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: visural-wicket 0.6.5 released!
Great library. I always expected more of these since component creation and reuse is one of Wickets a key strengths. What I like about this lib is it's clean and finished. There is no feeling of immaturity or of a project that has died off. On Thu, Nov 25, 2010 at 2:02 PM, alex shubert alex.shub...@gmail.comwrote: I must ask it: why did you make such fat header at your page? Did you every try to take a look at this in 1600*900 notebook screen? All you writings begins in bottom second part of the screen. It is not my busenees of course, but why dont you kill that nice picture and resize header to just contain pragmatic without strong empty white line? Ah, forget it. At least you did not add banner on the top of all of that :) -- Best regards Alex - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Accessing the cells in a row of a DataTable
Of course, here is the entire Panel constructor: private DropDownChoiceString dropdown; public AjaxDropDownChoicePanel(String id, IModelString model, IModelListString choicesModel) { super(id); System.out.println(dropdown model = + model.getObject()); dropdown = new DropDownChoiceString(dropdown, model, choicesModel); dropdown.setOutputMarkupId(true); dropdown.add(new AjaxFormComponentUpdatingBehavior(onchange) { private static final long serialVersionUID = 1L; protected void onUpdate(AjaxRequestTarget target) { dropdown.setEnabled(false); System.err.println(Not yet implemented but you selected + dropdown.getDefaultModelObjectAsString()); target.addComponent(dropdown); } }); add(dropdown); } On Wed, Oct 27, 2010 at 4:54 AM, Jeremy Thomerson jer...@wickettraining.com wrote: Show the code for the dropdownchoice creation (in your panel) On Tue, Oct 26, 2010 at 6:14 PM, Mark Doyle markjohndo...@googlemail.com wrote: I suppose this is related so I'll keep the thread going. As part of the above use case I have created a custom PropertyColumn that uses a DropDownChoice. Everything seems to be working except for the initial display, this is always set to Choose One. The code that builds the dropdown is in the populateItem method of the custom Property Column. As you can see it has a model set (propertyModel) which wraps a String. PropertyModelString propertyModel = new PropertyModelString(rowModel, getPropertyExpression()); System.out.println(propertyModel value = + propertyModel.getObject()); AjaxDropDownChoicePanel cp = new AjaxDropDownChoicePanel(componentId, propertyModel, selectionOptionsModel); The AjaxDropDownChoicePanel is simply a panel that wraps the DropDown in a some select tags. It instantiates a DropDownChoice with the passed in parameters. The DropDownChoice is instantiated is of type String, that is, DropDownChoiceString. NOTE: The syso is printing the expected value. On Sat, Oct 23, 2010 at 10:18 PM, James Carman ja...@carmanconsulting.comwrote: Use a fragment. Search this list for my FragmentColumn. I think I've posted it before On Oct 23, 2010 4:04 PM, Mark Doyle markjohndo...@googlemail.com wrote: Ok, I've nearly got this finished. Does anybody know how to add a link in populateItem() that doesn't render as [cell]? I could create a customised Panel I suppose but it seems like overkill. Maybe a fragment...hmmm On Fri, Oct 22, 2010 at 11:56 AM, Mark Doyle markjohndo...@googlemail.comwrote: Oh and the table isn't the parent: // get the table to rerender target.addComponent(this.getParent()); I had to do a six step parental grab; I'm sure there is a better way! :D On Fri, Oct 22, 2010 at 11:54 AM, Mark Doyle markjohndo...@googlemail.com wrote: Thanks Mike, this was definitely a great pointer in the right direction; I'm beginning to grasp the column system now. I do have some issues though as detailed below. Firstly, my business model is out of my control so I had to wrap that in a class that contains the editable state. I don't like doing that it but it's useful to see if I can get it to work and it shouldn't effect the process on the whole. The main difference is I'm attempting to do this using different columns, that is, not having a custom column that takes a type and switches. The problem is that the models for each column seem to wrap different instances of the business object. The code below shows how I'm creating the columns. The link in the AbstractColumn grabs the business object and toggles editable. The EditablePropertyColumn's populateItem method then get's it's rowModel object (the business object) and checks the editable state. This is where it goes wrong as each column seems to have it's own copy of the rows business model object. I guess this is how the columns with with datagrid. /** * Creates the columns for the synonym data table * * @return */ @SuppressWarnings(serial) private ListIColumnEditStateSynonymWrapper createColumns() { ListIColumnEditStateSynonymWrapper columns = new ArrayListIColumnEditStateSynonymWrapper(); columns.add(new AbstractColumnEditStateSynonymWrapper(new ModelString(Edit)) { public void populateItem(ItemICellPopulatorEditStateSynonymWrapper cellItem, String componentId, IModelEditStateSynonymWrapper model) { AjaxFallbackLinkEditStateSynonymWrapper editLink = new AjaxFallbackLinkEditStateSynonymWrapper(componentId, model) { @Override public void onClick(AjaxRequestTarget target) { EditStateSynonymWrapper selected = (EditStateSynonymWrapper) getDefaultModelObject
Re: Accessing the cells in a row of a DataTable
Of course, here is the entire Panel constructor: private DropDownChoiceString dropdown; public AjaxDropDownChoicePanel(String id, IModelString model, IModelListString choicesModel) { super(id); System.out.println(dropdown model = + model.getObject()); dropdown = new DropDownChoiceString(dropdown, model, choicesModel); dropdown.setOutputMarkupId(true); dropdown.add(new AjaxFormComponentUpdatingBehavior(onchange) { private static final long serialVersionUID = 1L; protected void onUpdate(AjaxRequestTarget target) { dropdown.setEnabled(false); System.err.println(Not yet implemented but you selected + dropdown.getDefaultModelObjectAsString()); target.addComponent(dropdown); } }); add(dropdown); } On Wed, Oct 27, 2010 at 4:54 AM, Jeremy Thomerson jer...@wickettraining.com wrote: Show the code for the dropdownchoice creation (in your panel) On Tue, Oct 26, 2010 at 6:14 PM, Mark Doyle markjohndo...@googlemail.com wrote: I suppose this is related so I'll keep the thread going. As part of the above use case I have created a custom PropertyColumn that uses a DropDownChoice. Everything seems to be working except for the initial display, this is always set to Choose One. The code that builds the dropdown is in the populateItem method of the custom Property Column. As you can see it has a model set (propertyModel) which wraps a String. PropertyModelString propertyModel = new PropertyModelString(rowModel, getPropertyExpression()); System.out.println(propertyModel value = + propertyModel.getObject()); AjaxDropDownChoicePanel cp = new AjaxDropDownChoicePanel(componentId, propertyModel, selectionOptionsModel); The AjaxDropDownChoicePanel is simply a panel that wraps the DropDown in a some select tags. It instantiates a DropDownChoice with the passed in parameters. The DropDownChoice is instantiated is of type String, that is, DropDownChoiceString. NOTE: The syso is printing the expected value. On Sat, Oct 23, 2010 at 10:18 PM, James Carman ja...@carmanconsulting.comwrote: Use a fragment. Search this list for my FragmentColumn. I think I've posted it before On Oct 23, 2010 4:04 PM, Mark Doyle markjohndo...@googlemail.com wrote: Ok, I've nearly got this finished. Does anybody know how to add a link in populateItem() that doesn't render as [cell]? I could create a customised Panel I suppose but it seems like overkill. Maybe a fragment...hmmm On Fri, Oct 22, 2010 at 11:56 AM, Mark Doyle markjohndo...@googlemail.comwrote: Oh and the table isn't the parent: // get the table to rerender target.addComponent(this.getParent()); I had to do a six step parental grab; I'm sure there is a better way! :D On Fri, Oct 22, 2010 at 11:54 AM, Mark Doyle markjohndo...@googlemail.com wrote: Thanks Mike, this was definitely a great pointer in the right direction; I'm beginning to grasp the column system now. I do have some issues though as detailed below. Firstly, my business model is out of my control so I had to wrap that in a class that contains the editable state. I don't like doing that it but it's useful to see if I can get it to work and it shouldn't effect the process on the whole. The main difference is I'm attempting to do this using different columns, that is, not having a custom column that takes a type and switches. The problem is that the models for each column seem to wrap different instances of the business object. The code below shows how I'm creating the columns. The link in the AbstractColumn grabs the business object and toggles editable. The EditablePropertyColumn's populateItem method then get's it's rowModel object (the business object) and checks the editable state. This is where it goes wrong as each column seems to have it's own copy of the rows business model object. I guess this is how the columns with with datagrid. /** * Creates the columns for the synonym data table * * @return */ @SuppressWarnings(serial) private ListIColumnEditStateSynonymWrapper createColumns() { ListIColumnEditStateSynonymWrapper columns = new ArrayListIColumnEditStateSynonymWrapper(); columns.add(new AbstractColumnEditStateSynonymWrapper(new ModelString(Edit)) { public void populateItem(ItemICellPopulatorEditStateSynonymWrapper cellItem, String componentId, IModelEditStateSynonymWrapper model) { AjaxFallbackLinkEditStateSynonymWrapper editLink = new AjaxFallbackLinkEditStateSynonymWrapper(componentId, model) { @Override public void onClick(AjaxRequestTarget target) { EditStateSynonymWrapper selected = (EditStateSynonymWrapper) getDefaultModelObject
Re: Accessing the cells in a row of a DataTable
I think I may have circumnavigated this issue by discovering the wonders of AjaxEditableLabel and AjaxEditableChoiceLabel :D I'll post my results when I've tested it. Hopefully this will be helpful to somebody else in the future. On Wed, Oct 27, 2010 at 10:59 AM, Mark Doyle markjohndo...@googlemail.comwrote: Of course, here is the entire Panel constructor: private DropDownChoiceString dropdown; public AjaxDropDownChoicePanel(String id, IModelString model, IModelListString choicesModel) { super(id); System.out.println(dropdown model = + model.getObject()); dropdown = new DropDownChoiceString(dropdown, model, choicesModel); dropdown.setOutputMarkupId(true); dropdown.add(new AjaxFormComponentUpdatingBehavior(onchange) { private static final long serialVersionUID = 1L; protected void onUpdate(AjaxRequestTarget target) { dropdown.setEnabled(false); System.err.println(Not yet implemented but you selected + dropdown.getDefaultModelObjectAsString()); target.addComponent(dropdown); } }); add(dropdown); } On Wed, Oct 27, 2010 at 4:54 AM, Jeremy Thomerson jer...@wickettraining.com wrote: Show the code for the dropdownchoice creation (in your panel) On Tue, Oct 26, 2010 at 6:14 PM, Mark Doyle markjohndo...@googlemail.com wrote: I suppose this is related so I'll keep the thread going. As part of the above use case I have created a custom PropertyColumn that uses a DropDownChoice. Everything seems to be working except for the initial display, this is always set to Choose One. The code that builds the dropdown is in the populateItem method of the custom Property Column. As you can see it has a model set (propertyModel) which wraps a String. PropertyModelString propertyModel = new PropertyModelString(rowModel, getPropertyExpression()); System.out.println(propertyModel value = + propertyModel.getObject()); AjaxDropDownChoicePanel cp = new AjaxDropDownChoicePanel(componentId, propertyModel, selectionOptionsModel); The AjaxDropDownChoicePanel is simply a panel that wraps the DropDown in a some select tags. It instantiates a DropDownChoice with the passed in parameters. The DropDownChoice is instantiated is of type String, that is, DropDownChoiceString. NOTE: The syso is printing the expected value. On Sat, Oct 23, 2010 at 10:18 PM, James Carman ja...@carmanconsulting.comwrote: Use a fragment. Search this list for my FragmentColumn. I think I've posted it before On Oct 23, 2010 4:04 PM, Mark Doyle markjohndo...@googlemail.com wrote: Ok, I've nearly got this finished. Does anybody know how to add a link in populateItem() that doesn't render as [cell]? I could create a customised Panel I suppose but it seems like overkill. Maybe a fragment...hmmm On Fri, Oct 22, 2010 at 11:56 AM, Mark Doyle markjohndo...@googlemail.comwrote: Oh and the table isn't the parent: // get the table to rerender target.addComponent(this.getParent()); I had to do a six step parental grab; I'm sure there is a better way! :D On Fri, Oct 22, 2010 at 11:54 AM, Mark Doyle markjohndo...@googlemail.com wrote: Thanks Mike, this was definitely a great pointer in the right direction; I'm beginning to grasp the column system now. I do have some issues though as detailed below. Firstly, my business model is out of my control so I had to wrap that in a class that contains the editable state. I don't like doing that it but it's useful to see if I can get it to work and it shouldn't effect the process on the whole. The main difference is I'm attempting to do this using different columns, that is, not having a custom column that takes a type and switches. The problem is that the models for each column seem to wrap different instances of the business object. The code below shows how I'm creating the columns. The link in the AbstractColumn grabs the business object and toggles editable. The EditablePropertyColumn's populateItem method then get's it's rowModel object (the business object) and checks the editable state. This is where it goes wrong as each column seems to have it's own copy of the rows business model object. I guess this is how the columns with with datagrid. /** * Creates the columns for the synonym data table * * @return */ @SuppressWarnings(serial) private ListIColumnEditStateSynonymWrapper createColumns() { ListIColumnEditStateSynonymWrapper columns = new ArrayListIColumnEditStateSynonymWrapper(); columns.add(new AbstractColumnEditStateSynonymWrapper(new ModelString(Edit)) { public void populateItem(ItemICellPopulatorEditStateSynonymWrapper cellItem
Re: Accessing the cells in a row of a DataTable
I suppose this is related so I'll keep the thread going. As part of the above use case I have created a custom PropertyColumn that uses a DropDownChoice. Everything seems to be working except for the initial display, this is always set to Choose One. The code that builds the dropdown is in the populateItem method of the custom Property Column. As you can see it has a model set (propertyModel) which wraps a String. PropertyModelString propertyModel = new PropertyModelString(rowModel, getPropertyExpression()); System.out.println(propertyModel value = + propertyModel.getObject()); AjaxDropDownChoicePanel cp = new AjaxDropDownChoicePanel(componentId, propertyModel, selectionOptionsModel); The AjaxDropDownChoicePanel is simply a panel that wraps the DropDown in a some select tags. It instantiates a DropDownChoice with the passed in parameters. The DropDownChoice is instantiated is of type String, that is, DropDownChoiceString. NOTE: The syso is printing the expected value. On Sat, Oct 23, 2010 at 10:18 PM, James Carman ja...@carmanconsulting.comwrote: Use a fragment. Search this list for my FragmentColumn. I think I've posted it before On Oct 23, 2010 4:04 PM, Mark Doyle markjohndo...@googlemail.com wrote: Ok, I've nearly got this finished. Does anybody know how to add a link in populateItem() that doesn't render as [cell]? I could create a customised Panel I suppose but it seems like overkill. Maybe a fragment...hmmm On Fri, Oct 22, 2010 at 11:56 AM, Mark Doyle markjohndo...@googlemail.comwrote: Oh and the table isn't the parent: // get the table to rerender target.addComponent(this.getParent()); I had to do a six step parental grab; I'm sure there is a better way! :D On Fri, Oct 22, 2010 at 11:54 AM, Mark Doyle markjohndo...@googlemail.com wrote: Thanks Mike, this was definitely a great pointer in the right direction; I'm beginning to grasp the column system now. I do have some issues though as detailed below. Firstly, my business model is out of my control so I had to wrap that in a class that contains the editable state. I don't like doing that it but it's useful to see if I can get it to work and it shouldn't effect the process on the whole. The main difference is I'm attempting to do this using different columns, that is, not having a custom column that takes a type and switches. The problem is that the models for each column seem to wrap different instances of the business object. The code below shows how I'm creating the columns. The link in the AbstractColumn grabs the business object and toggles editable. The EditablePropertyColumn's populateItem method then get's it's rowModel object (the business object) and checks the editable state. This is where it goes wrong as each column seems to have it's own copy of the rows business model object. I guess this is how the columns with with datagrid. /** * Creates the columns for the synonym data table * * @return */ @SuppressWarnings(serial) private ListIColumnEditStateSynonymWrapper createColumns() { ListIColumnEditStateSynonymWrapper columns = new ArrayListIColumnEditStateSynonymWrapper(); columns.add(new AbstractColumnEditStateSynonymWrapper(new ModelString(Edit)) { public void populateItem(ItemICellPopulatorEditStateSynonymWrapper cellItem, String componentId, IModelEditStateSynonymWrapper model) { AjaxFallbackLinkEditStateSynonymWrapper editLink = new AjaxFallbackLinkEditStateSynonymWrapper(componentId, model) { @Override public void onClick(AjaxRequestTarget target) { EditStateSynonymWrapper selected = (EditStateSynonymWrapper) getDefaultModelObject(); System.out.println(selected value = + selected.wrappedSynonym.value); selected.setEditing(!selected.isEditing()); // FIXME WHAT!? There must be a better way than this to get the parent table. :D MarkupContainer dataTable = getParent().getParent().getParent().getParent().getParent().getParent(); target.addComponent(dataTable); } }; cellItem.add(editLink); // cellItem.add(new EditLinkFragment(componentId, SynonymAdminPanel.this, model)); } }); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Category), wrappedSynonym.category)); // columns.add(new EditablePropertyColumnEditStateSynonymWrapper(new ModelString(State), // wrappedSynonym.state, new PropertyModelSynonym(this, selected))); columns.add(new EditablePropertyColumnEditStateSynonymWrapper(new ModelString(State), wrappedSynonym.state)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Root), wrappedSynonym.root)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Value), wrappedSynonym.value)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Rational), wrappedSynonym.rational)); columns.add(new PropertyColumnEditStateSynonymWrapper(new
Re: Accessing the cells in a row of a DataTable
Ok, I've nearly got this finished. Does anybody know how to add a link in populateItem() that doesn't render as [cell]? I could create a customised Panel I suppose but it seems like overkill. Maybe a fragment...hmmm On Fri, Oct 22, 2010 at 11:56 AM, Mark Doyle markjohndo...@googlemail.comwrote: Oh and the table isn't the parent: // get the table to rerender target.addComponent(this.getParent()); I had to do a six step parental grab; I'm sure there is a better way! :D On Fri, Oct 22, 2010 at 11:54 AM, Mark Doyle markjohndo...@googlemail.com wrote: Thanks Mike, this was definitely a great pointer in the right direction; I'm beginning to grasp the column system now. I do have some issues though as detailed below. Firstly, my business model is out of my control so I had to wrap that in a class that contains the editable state. I don't like doing that it but it's useful to see if I can get it to work and it shouldn't effect the process on the whole. The main difference is I'm attempting to do this using different columns, that is, not having a custom column that takes a type and switches. The problem is that the models for each column seem to wrap different instances of the business object. The code below shows how I'm creating the columns. The link in the AbstractColumn grabs the business object and toggles editable. The EditablePropertyColumn's populateItem method then get's it's rowModel object (the business object) and checks the editable state. This is where it goes wrong as each column seems to have it's own copy of the rows business model object. I guess this is how the columns with with datagrid. /** * Creates the columns for the synonym data table * * @return */ @SuppressWarnings(serial) private ListIColumnEditStateSynonymWrapper createColumns() { ListIColumnEditStateSynonymWrapper columns = new ArrayListIColumnEditStateSynonymWrapper(); columns.add(new AbstractColumnEditStateSynonymWrapper(new ModelString(Edit)) { public void populateItem(ItemICellPopulatorEditStateSynonymWrapper cellItem, String componentId, IModelEditStateSynonymWrapper model) { AjaxFallbackLinkEditStateSynonymWrapper editLink = new AjaxFallbackLinkEditStateSynonymWrapper(componentId, model) { @Override public void onClick(AjaxRequestTarget target) { EditStateSynonymWrapper selected = (EditStateSynonymWrapper) getDefaultModelObject(); System.out.println(selected value = + selected.wrappedSynonym.value); selected.setEditing(!selected.isEditing()); // FIXME WHAT!? There must be a better way than this to get the parent table. :D MarkupContainer dataTable = getParent().getParent().getParent().getParent().getParent().getParent(); target.addComponent(dataTable); } }; cellItem.add(editLink); // cellItem.add(new EditLinkFragment(componentId, SynonymAdminPanel.this, model)); } }); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Category), wrappedSynonym.category)); // columns.add(new EditablePropertyColumnEditStateSynonymWrapper(new ModelString(State), // wrappedSynonym.state, new PropertyModelSynonym(this, selected))); columns.add(new EditablePropertyColumnEditStateSynonymWrapper(new ModelString(State), wrappedSynonym.state)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Root), wrappedSynonym.root)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Value), wrappedSynonym.value)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Rational), wrappedSynonym.rational)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Taxonomy parent), wrappedSynonym.taxonomyParent)); return columns; } On Thu, Oct 21, 2010 at 3:50 PM, Michael O'Cleirigh michael.ocleir...@rivulet.ca wrote: Hi Mark, The cell's of a datatable are created by the IColumn. So you need to create a wrapping object or additional IModel that contains the edit-ability of each row and then use that inside the populateItem(...) method of the column to figure out which case to show (i.e. the label or the textfield). One way to persist the change immediately is to use an AjaxFormComponentUpdatingBehavior on the onblur event of the textfield to push the changes through. Do something like this: class MyColumn extends AbstractColumnBusinessObject { public static enum ColumnType { LINK, COL1, COL2 }; private ColumnType type; public MyColumn (IModelStringheader, ColumnType type) { super (header); this.type = type; } @Override public void populateItem(ItemICellPopulatorBusinessObject cellItem, String componentId, IModelBusinessObject rowModel) { switch (this.type) { case LINK : // add in the ajax link to the cell item // inside the onclick do: // get the row model object and then set its editable field
Re: Accessing the cells in a row of a DataTable
Thanks Mike, this was definitely a great pointer in the right direction; I'm beginning to grasp the column system now. I do have some issues though as detailed below. Firstly, my business model is out of my control so I had to wrap that in a class that contains the editable state. I don't like doing that it but it's useful to see if I can get it to work and it shouldn't effect the process on the whole. The main difference is I'm attempting to do this using different columns, that is, not having a custom column that takes a type and switches. The problem is that the models for each column seem to wrap different instances of the business object. The code below shows how I'm creating the columns. The link in the AbstractColumn grabs the business object and toggles editable. The EditablePropertyColumn's populateItem method then get's it's rowModel object (the business object) and checks the editable state. This is where it goes wrong as each column seems to have it's own copy of the rows business model object. I guess this is how the columns with with datagrid. /** * Creates the columns for the synonym data table * * @return */ @SuppressWarnings(serial) private ListIColumnEditStateSynonymWrapper createColumns() { ListIColumnEditStateSynonymWrapper columns = new ArrayListIColumnEditStateSynonymWrapper(); columns.add(new AbstractColumnEditStateSynonymWrapper(new ModelString(Edit)) { public void populateItem(ItemICellPopulatorEditStateSynonymWrapper cellItem, String componentId, IModelEditStateSynonymWrapper model) { AjaxFallbackLinkEditStateSynonymWrapper editLink = new AjaxFallbackLinkEditStateSynonymWrapper(componentId, model) { @Override public void onClick(AjaxRequestTarget target) { EditStateSynonymWrapper selected = (EditStateSynonymWrapper) getDefaultModelObject(); System.out.println(selected value = + selected.wrappedSynonym.value); selected.setEditing(!selected.isEditing()); // FIXME WHAT!? There must be a better way than this to get the parent table. :D MarkupContainer dataTable = getParent().getParent().getParent().getParent().getParent().getParent(); target.addComponent(dataTable); } }; cellItem.add(editLink); // cellItem.add(new EditLinkFragment(componentId, SynonymAdminPanel.this, model)); } }); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Category), wrappedSynonym.category)); // columns.add(new EditablePropertyColumnEditStateSynonymWrapper(new ModelString(State), // wrappedSynonym.state, new PropertyModelSynonym(this, selected))); columns.add(new EditablePropertyColumnEditStateSynonymWrapper(new ModelString(State), wrappedSynonym.state)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Root), wrappedSynonym.root)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Value), wrappedSynonym.value)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Rational), wrappedSynonym.rational)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Taxonomy parent), wrappedSynonym.taxonomyParent)); return columns; } On Thu, Oct 21, 2010 at 3:50 PM, Michael O'Cleirigh michael.ocleir...@rivulet.ca wrote: Hi Mark, The cell's of a datatable are created by the IColumn. So you need to create a wrapping object or additional IModel that contains the edit-ability of each row and then use that inside the populateItem(...) method of the column to figure out which case to show (i.e. the label or the textfield). One way to persist the change immediately is to use an AjaxFormComponentUpdatingBehavior on the onblur event of the textfield to push the changes through. Do something like this: class MyColumn extends AbstractColumnBusinessObject { public static enum ColumnType { LINK, COL1, COL2 }; private ColumnType type; public MyColumn (IModelStringheader, ColumnType type) { super (header); this.type = type; } @Override public void populateItem(ItemICellPopulatorBusinessObject cellItem, String componentId, IModelBusinessObject rowModel) { switch (this.type) { case LINK : // add in the ajax link to the cell item // inside the onclick do: // get the row model object and then set its editable field. cellItem.add(new AjaxLink(componentId) { public void onClick(AjaxRequestTarget target) { BusinessObject bo = rowModel.getObject(); bo.setEditable(true); // get the table to rerender target.addComponent(this.getParent()); } }); break; case COL1: case COL2: BusinessObject bo = rowModel.getObject(); if (bo.isEditable
Re: Accessing the cells in a row of a DataTable
Oh and the table isn't the parent: // get the table to rerender target.addComponent(this.getParent()); I had to do a six step parental grab; I'm sure there is a better way! :D On Fri, Oct 22, 2010 at 11:54 AM, Mark Doyle markjohndo...@googlemail.comwrote: Thanks Mike, this was definitely a great pointer in the right direction; I'm beginning to grasp the column system now. I do have some issues though as detailed below. Firstly, my business model is out of my control so I had to wrap that in a class that contains the editable state. I don't like doing that it but it's useful to see if I can get it to work and it shouldn't effect the process on the whole. The main difference is I'm attempting to do this using different columns, that is, not having a custom column that takes a type and switches. The problem is that the models for each column seem to wrap different instances of the business object. The code below shows how I'm creating the columns. The link in the AbstractColumn grabs the business object and toggles editable. The EditablePropertyColumn's populateItem method then get's it's rowModel object (the business object) and checks the editable state. This is where it goes wrong as each column seems to have it's own copy of the rows business model object. I guess this is how the columns with with datagrid. /** * Creates the columns for the synonym data table * * @return */ @SuppressWarnings(serial) private ListIColumnEditStateSynonymWrapper createColumns() { ListIColumnEditStateSynonymWrapper columns = new ArrayListIColumnEditStateSynonymWrapper(); columns.add(new AbstractColumnEditStateSynonymWrapper(new ModelString(Edit)) { public void populateItem(ItemICellPopulatorEditStateSynonymWrapper cellItem, String componentId, IModelEditStateSynonymWrapper model) { AjaxFallbackLinkEditStateSynonymWrapper editLink = new AjaxFallbackLinkEditStateSynonymWrapper(componentId, model) { @Override public void onClick(AjaxRequestTarget target) { EditStateSynonymWrapper selected = (EditStateSynonymWrapper) getDefaultModelObject(); System.out.println(selected value = + selected.wrappedSynonym.value); selected.setEditing(!selected.isEditing()); // FIXME WHAT!? There must be a better way than this to get the parent table. :D MarkupContainer dataTable = getParent().getParent().getParent().getParent().getParent().getParent(); target.addComponent(dataTable); } }; cellItem.add(editLink); // cellItem.add(new EditLinkFragment(componentId, SynonymAdminPanel.this, model)); } }); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Category), wrappedSynonym.category)); // columns.add(new EditablePropertyColumnEditStateSynonymWrapper(new ModelString(State), // wrappedSynonym.state, new PropertyModelSynonym(this, selected))); columns.add(new EditablePropertyColumnEditStateSynonymWrapper(new ModelString(State), wrappedSynonym.state)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Root), wrappedSynonym.root)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Value), wrappedSynonym.value)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Rational), wrappedSynonym.rational)); columns.add(new PropertyColumnEditStateSynonymWrapper(new ModelString(Taxonomy parent), wrappedSynonym.taxonomyParent)); return columns; } On Thu, Oct 21, 2010 at 3:50 PM, Michael O'Cleirigh michael.ocleir...@rivulet.ca wrote: Hi Mark, The cell's of a datatable are created by the IColumn. So you need to create a wrapping object or additional IModel that contains the edit-ability of each row and then use that inside the populateItem(...) method of the column to figure out which case to show (i.e. the label or the textfield). One way to persist the change immediately is to use an AjaxFormComponentUpdatingBehavior on the onblur event of the textfield to push the changes through. Do something like this: class MyColumn extends AbstractColumnBusinessObject { public static enum ColumnType { LINK, COL1, COL2 }; private ColumnType type; public MyColumn (IModelStringheader, ColumnType type) { super (header); this.type = type; } @Override public void populateItem(ItemICellPopulatorBusinessObject cellItem, String componentId, IModelBusinessObject rowModel) { switch (this.type) { case LINK : // add in the ajax link to the cell item // inside the onclick do: // get the row model object and then set its editable field. cellItem.add(new AjaxLink(componentId) { public void onClick(AjaxRequestTarget target) { BusinessObject bo = rowModel.getObject(); bo.setEditable(true); // get the table
Accessing the cells in a row of a DataTable
Hi all, I'm having a bit of trouble wrapping my head around the DataTable with regards to what I need to do. The perfect example of my goal is in Wicket Examples, namely, the Ajax Editable Tree Table: http://wicketstuff.org/wicket14/ajax/tree/table/editable.0 http://wicketstuff.org/wicket14/ajax/tree/table/editable.0Rather than use the Tree table I must alter an existing DataTable. I was thinking that I could create an editable textfield for the cells which I could enable or disable using an edit link in the first column. A bit like this: Edit | col1 | col2 edit | text | ksfuh - edit | text | fsdkl Using the edit link I can get the model object of the row but I'm not sure how I can get the row that represents this and set it's cells to editable. The Editable text field is much like the one in the example and with the entire table wrapped in a form. This means I can deal with the submission of the changes easy enough. Perhaps this is the wrong way to go about ithmmm, thoughts?
Re: Trouble creating a behaviour that adds JS and also a Body onLoad event
Ah ok, I'll test that. I never thought of just adding it to the Page. What, if any, is the difference between this and adding the behaviour to the WebPage which is a kind of Component? On Fri, Jul 30, 2010 at 7:03 PM, Martin Makundi martin.maku...@koodaripalvelut.com wrote: Hi! You could try this: public class HomePage extends WebPage implements IHeaderContributor { @Override public void renderHead(IHeaderResponse response) { response.renderOnLoadJavascript(javascript) } ** Martin 2010/7/30 Mark Doyle markjohndo...@googlemail.com: Firstly, I'm having some trouble finding a decent behaviour tutorial. If anybody knows of one post a link up. Now, the problem I am having is creating a behaviour that adds some JS to the head and sets an onLoad method. The JS project instructs users to add: body onload=jsfunctionhere ( options, callback ); but I'm not sure how Wicket supports this. Any ideas? Cheers - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Trouble creating a behaviour that adds JS and also a Body onLoad event
Yeah, I actually messed up the behaviour because I never noticed the rendOnLoad method. I've done as you suggested in the behaviour and then simply added that to the component. It works perfectly, thanks Martin. The progression to more advanced Wicket certainly requires more web specific knowledge that Wicket has shielded me from in the past :) On Sat, Jul 31, 2010 at 12:48 PM, Martin Makundi martin.maku...@koodaripalvelut.com wrote: Headercontribution can be added to many things ... 2010/7/31 Mark Doyle markjohndo...@googlemail.com: Ah ok, I'll test that. I never thought of just adding it to the Page. What, if any, is the difference between this and adding the behaviour to the WebPage which is a kind of Component? On Fri, Jul 30, 2010 at 7:03 PM, Martin Makundi martin.maku...@koodaripalvelut.com wrote: Hi! You could try this: public class HomePage extends WebPage implements IHeaderContributor { @Override public void renderHead(IHeaderResponse response) { response.renderOnLoadJavascript(javascript) } ** Martin 2010/7/30 Mark Doyle markjohndo...@googlemail.com: Firstly, I'm having some trouble finding a decent behaviour tutorial. If anybody knows of one post a link up. Now, the problem I am having is creating a behaviour that adds some JS to the head and sets an onLoad method. The JS project instructs users to add: body onload=jsfunctionhere ( options, callback ); but I'm not sure how Wicket supports this. Any ideas? Cheers - 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
Trouble creating a behaviour that adds JS and also a Body onLoad event
Firstly, I'm having some trouble finding a decent behaviour tutorial. If anybody knows of one post a link up. Now, the problem I am having is creating a behaviour that adds some JS to the head and sets an onLoad method. The JS project instructs users to add: body onload=jsfunctionhere ( options, callback ); but I'm not sure how Wicket supports this. Any ideas? Cheers
Re: Best way to hide a component
Yeah, I do something similar. You can override the isVisible method in your components, possibly adding some logic that ties the visibility to a variable. You only have to manage the one variable then and all the components will know when to display or not. On Fri, Jul 23, 2010 at 9:02 AM, Nivedan Nadaraj shravann...@gmail.com wrote: I have done the setVisible too for hiding components. Sometimes if there were a group of them, placing them in a container(WebMarkupContainer) and setting the visibility to t/f on the container works too. Cheers Niv On Fri, Jul 23, 2010 at 2:36 PM, Andrea Selva selva.an...@gmail.com wrote: Hi, Instead of switching between components, i think that using the setVisible method of component class could be a better solution. This is the principle i read in the in Wicket in Action book when the want to hide a container of other thing. I hope this could help you Andrea On Thu, Jul 22, 2010 at 11:22 PM, mgoodson matt...@spidertracks.com wrote: Hi, this could be a stupid question but I am just wondering what the best way is to hide a component. Say I have a button on a form and when it renders sometimes I want it to show and some times not. I could either use 2 fragments, one with the button in it and one that's empty and switch between the two. Or the other option that I can think of is to turn the visibility on and off. Anyone got any reasons for or against with option? Thanks -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Best-way-to-hide-a-component-tp2299412p2299412.html Sent from the Wicket - User mailing list archive at Nabble.com. - 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
Sub tabs in Tabbed Panel
Hi all, Is there a component that will allows me to add a subset of panel links to a Tabbed panel which themselves link to new panels? Perhaps an example of the finished article would explain it better :) http://www.webdesignerwall.com/tutorials/css3-dropdown-menu/ I guess some tab links would change the panel whilst others would need a rollover effect that displays the sub-tab link. The sub tab links would then behave as normal tabs. If there is nothing out there already I guess hacking up an extended TabbedPanel is the only course of action! Cheers - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
RE: Wicket and JEE6
Thanks Olivier, Iskandar, and James! After getting Weld integration to work with the weld-wicket jar I realized that the integration is limited to classes that subclass from WebPage (or Page I suppose) to work within a request cycle. I cannot inject a DAO into a session or a singleton into an application class for example. In a JSF2 project there is no limitations. Plus the ability to annotate scope would be nice. This makes me wonder what the future holds for Wicket and JEE6. Is there work being done to fully integrate Wicket with JEE6's newly defined set of supported JSRs? It would be nice to see a comparison chart of JEE6 features and Wicket's current and expected future support for such features. I've been searching for something like this but haven't found anything. I'd love to see Wicket fully support JEE6 and become a drop in replacement for JSF2. This doesn't seem to be the case just yet. If I'm wrong be sure to let me know! -Mark -Original Message- From: Olivier Bourgeois [mailto:olivier.bourgeois@gmail.com] Sent: Monday, March 29, 2010 2:45 AM To: users@wicket.apache.org Subject: Re: Wicket and JEE6 Hi, Wicket has very good support in Weld, but to make it work I had to update the weld-integration.jar, otherwise the sample Numberguess application is looking for an unexisting method in the 1.0.0 Weld API : this is your problem. If you don't want to do it by hand like suggested by Iskandar, you can download one of the Glassfish nightly builds, this is what I have done. The latest builds are integrating Weld 1.0.1-final and the problem vanishes. If you want, I can provide you the maven profile to make the sample work nicely when you hit the run button in Netbeans, because there is another problem with the samples : the maven profile is not including the slf4j libraries, so there is an error in Glassfish when you run the sample. I assume this may be your next problem :) Also, you may run into trouble with the JPA2 code generation if you are using maven. But if you are using Eclipse annotation preprocessor to generate the metadata, you won't have the problem. -- Olivier - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Wicket and JEE6
Hi, I'm building a new java project using all JEE6 technologies. That means I'm using JPA, CDI, and JSF2 for example. Each layer came together great with fully annotated classes until I got to the JSF2 layer which drove me crazy because JSF wants to mess with HTML element ids and names. In looking for alternative view layers I came across Wicket. The technology seems great in terms of its philosophy to keep presentation code separate, except I'm not finding much information about its support for JEE6 technologies. In particular searches for support for CDI (aka WebBeans, aka Weld) only got me to an old example in the Seam project. I cannot find any current references to using Weld within a Wicket project where I can use annotations such as @Inject, @Named, @ApplicationScoped, etc. So my very first question for this list of experts is this: Is there currently any support for Weld in Wicket? Downloading the Weld project from JBoss, I included the weld-wicket.jar into my project and my application is subclassed from WeldApplication. No such luck. Any class injected using @Inject is still null. I am using GlassFish v3 which has all the JEE6 goodies included. Developing with Eclipse. Any help is *greatly* appreciated! -Mark
RE: Wicket and JEE6
Weld claims support, I don't know about built-in. When I use @Inject in a Wicket WebPage subclass the objects are null. Like I mentioned below, I added weld-wicket.jar and subclassed the WeldApplication and the injected objects in the Wicket WebPage subclass are still null. This was from following this example: http://docs.jboss.org/weld/reference/1.0.0/en-US/html/viewlayers.html If you track down the example code it seems that the examples from JBoss are using older versions of Wicket and Weld/Seam so I don't know if something has broken in either project, wicket or weld. Injection worked like a charm in a JSF2 controller class so I don't know what going wrong or what supporting jar is missing. Any additional help is greatly appreciated! -Mark -Original Message- From: James Carman [mailto:jcar...@carmanconsulting.com] Sent: Friday, March 26, 2010 10:52 AM To: users@wicket.apache.org Subject: Re: Wicket and JEE6 Weld has wicket support built-in I believe. On Fri, Mar 26, 2010 at 12:52 PM, Ericksen, Mark W (IS) mark.erick...@ngc.com wrote: Hi, I'm building a new java project using all JEE6 technologies. That means I'm using JPA, CDI, and JSF2 for example. Each layer came together great with fully annotated classes until I got to the JSF2 layer which drove me crazy because JSF wants to mess with HTML element ids and names. In looking for alternative view layers I came across Wicket. The technology seems great in terms of its philosophy to keep presentation code separate, except I'm not finding much information about its support for JEE6 technologies. In particular searches for support for CDI (aka WebBeans, aka Weld) only got me to an old example in the Seam project. I cannot find any current references to using Weld within a Wicket project where I can use annotations such as @Inject, @Named, @ApplicationScoped, etc. So my very first question for this list of experts is this: Is there currently any support for Weld in Wicket? Downloading the Weld project from JBoss, I included the weld-wicket.jar into my project and my application is subclassed from WeldApplication. No such luck. Any class injected using @Inject is still null. I am using GlassFish v3 which has all the JEE6 goodies included. Developing with Eclipse. Any help is *greatly* appreciated! -Mark - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
RE: Wicket and JEE6
Warning: Long Response with sample code to illustrate issue. I ran the following code in Glassfish v3 with the following jars: portlet-api_2.0_spec-1.0.jar (someone is relying on this??) slf4j-api-1.4.2.jar slf4j-jdk14-1.4.2.jar wicket-1.4.7.jar Be sure to add an empty beans.xml to the WEB-INF folder. After starting up Glassfish, type the following in the browser (WicketTest is the name of my project, yours may vary): localhost:8080/WicketTest/ The output it: No Util Class localhost:8080/WicketTest/jsf.faces The output is: Hello World! Code follows web.xml: ?xml version=1.0 encoding=UTF-8? web-app xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns=http://java.sun.com/xml/ns/javaee; xmlns:web=http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd; xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd; id=WebApp_ID version=2.5 display-nameWicketTest/display-name servlet servlet-nameFaces Servlet/servlet-name servlet-classjavax.faces.webapp.FacesServlet/servlet-class load-on-startup1/load-on-startup /servlet servlet-mapping servlet-nameFaces Servlet/servlet-name url-pattern/faces/*/url-pattern url-pattern*.faces/url-pattern /servlet-mapping filter filter-namewicket example/filter-name filter-classorg.apache.wicket.protocol.http.WicketFilter/filter-class init-param param-nameapplicationClassName/param-name param-valuecom.example.wicket.ExampleApplication/param-value /init-param /filter filter-mapping filter-namewicket example/filter-name url-pattern/*/url-pattern /filter-mapping /web-app EntityUtil.java: package com.example.wicket; public class EntityUtil { public String getEntity() { return Hello World!; } } ExampleApplication.java: package com.example.wicket; import org.apache.wicket.Page; import org.apache.wicket.protocol.http.WebApplication; public class ExampleApplication extends WebApplication { @Override public Class? extends Page getHomePage() { return HomePage.class; } } HomePage.java: package com.example.wicket; import javax.inject.Inject; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.Model; public class HomePage extends WebPage { @Inject private EntityUtil util; public HomePage() { super(); add(new Label(hello, new ModelString(this.getHello(; } private String getHello() { return (null != util) ? util.getEntity() : No Util Class; } } HomePage.html: !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd; html xmlns:wicket=http://wicket.apache.org; head meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 titleInsert wicket title here/title /head body span wicket:id=helloYo!/span /body /html jsf.xhtml (in context root): !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd; html xmlns=http://www.w3.org/1999/xhtml; xmlns:h=http://java.sun.com/jsf/html; h:head titleInsert jsf title here/title /h:head h:body span#{controller.hello}/span /h:body /html Controller.java: package com.example.wicket; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; @Named @RequestScoped public class Controller { @Inject private EntityUtil util; public String getHello() { return (null != util) ? util.getEntity() : No Util Class; } } -Original Message- From: James Carman [mailto:jcar...@carmanconsulting.com] Sent: Friday, March 26, 2010 11:36 AM To: users@wicket.apache.org Subject: Re: Wicket and JEE6 I started a JSR-299 integration project a while back, but at the time there was no portable way (across vendors) to get to the stuff you needed to inject into your components. I believe that's been fixed in the latest API, but I haven't had a chance to dig in and verify that and then use it. My guess is that there's really not that much to it (my code was pretty small). On Fri, Mar 26, 2010 at 1:35 PM, Ericksen, Mark W (IS) mark.erick...@ngc.com wrote: Weld claims support, I don't know about built-in. When I use @Inject in a Wicket WebPage subclass the objects are null. Like I mentioned below, I added weld-wicket.jar and subclassed the WeldApplication and the injected objects in the Wicket WebPage subclass are still null. This was from following this example: http://docs.jboss.org/weld/reference/1.0.0/en-US/html/viewlayers.html If you track down the example code it seems that the examples from JBoss are using older versions of Wicket and Weld/Seam so I don't know if something has broken in either project, wicket or weld. Injection worked like a charm in a JSF2 controller class so I don't know what going wrong
RE: Wicket and JEE6
Thanks Josh. With your idea in mind I dug deeper into what Weld's support for Wicket is/was. In the Weld download is a jar called weld-wicket.jar that has a WeldApplication class for doing what you suggest. However following the instruction for using their integration code only got me an error when including their jar in my project. java.lang.NoSuchMethodError: org.jboss.weld.Container.services()Lorg/jboss/weld/bootstrap/api/Service Registry; So I included the weld-wicket code in my simple project to see what was going on. Their integration solution provides a new RequestCycle class called WeldRequestCycle. In this class they attempt to preserve a long running conversation through weld/wicket trickery. There's a line of code in a few places that causes a runtime exception that stops the request cycle. ConversationContext conversationContext = Container.instance().services().get(ContextLifecycle.class).getConversat ionContext(); These are Weld classes, but stepping through the debugger shows it goes go back through the Wicket filter. Therefore I don't know who is at fault here. Maybe something in Wicket changed that is causing Weld to croak or Weld in Glassfish is the culprit. Either way I really don't care about long running conversation support at this point so I removed the class and any dependency on it in my modified version of the weld-wicket code base. With that exception out of the way and changing my application to subclass from WeldApplication, I have simple injection working with Weld. Yippee! I'll cross my fingers there are no other side effects. Problem is now what? I guess I can post this with the Seam/Weld team and hope someone updates the Weld-Wicket integration. Or I can hope someone from the Wicket team will take a look and see if it's something in the latest version of Wicket that caused this to break and could do a patch. Anyone? :) -Mark -Original Message- From: Josh Chappelle [mailto:jchappe...@4redi.com] Sent: Friday, March 26, 2010 2:59 PM To: users@wicket.apache.org Subject: RE: Wicket and JEE6 Mark, Try taking a look at the addComponentInstantiationListener method on the Application class. It takes one parameter of type IComponentInstantiationListener and that interface has one method which is onInstantiation(Component component). Every time a component gets instantiated it will be handed to this listener so maybe you can write your own dependency injection code there. I would think that is what the WeldApplication is doing under the covers but since it isn't working for you then you may have more luck just writing it yourself. The other trick is to making this work is obtaining a reference to your weld context. I use Spring so I'm not familiar with what it takes with Weld. I hope this helps. Thanks, Josh -Original Message- From: Ericksen, Mark W (IS) [mailto:mark.erick...@ngc.com] Sent: Friday, March 26, 2010 11:52 AM To: users@wicket.apache.org Subject: Wicket and JEE6 Hi, I'm building a new java project using all JEE6 technologies. That means I'm using JPA, CDI, and JSF2 for example. Each layer came together great with fully annotated classes until I got to the JSF2 layer which drove me crazy because JSF wants to mess with HTML element ids and names. In looking for alternative view layers I came across Wicket. The technology seems great in terms of its philosophy to keep presentation code separate, except I'm not finding much information about its support for JEE6 technologies. In particular searches for support for CDI (aka WebBeans, aka Weld) only got me to an old example in the Seam project. I cannot find any current references to using Weld within a Wicket project where I can use annotations such as @Inject, @Named, @ApplicationScoped, etc. So my very first question for this list of experts is this: Is there currently any support for Weld in Wicket? Downloading the Weld project from JBoss, I included the weld-wicket.jar into my project and my application is subclassed from WeldApplication. No such luck. Any class injected using @Inject is still null. I am using GlassFish v3 which has all the JEE6 goodies included. Developing with Eclipse. Any help is *greatly* appreciated! -Mark - 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
Wicketstuff - YUI - Can't get Sub menus in menu bar to work
Hi all, I am trying to get YUI menu bar working. I have downloaded the yui-1.4.1 jar from wicketstuff's subversion repository. I have the a createMenuBar method in my class and html template. -Class Method Called From Page Constructor- private void createMenuBar(){ menuBar = new YuiMenuBar(menuBar){ @Override protected String getOpts() { Attributes attributes = new Attributes(); attributes.add(new Attributes(visible, true)); attributes.add(new Attributes(clicktohide, true)); attributes.add(new Attributes(autosubmenudisplay, true)); attributes.add(new Attributes(hidedelay, 5000)); attributes.add(new Attributes(effect,{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25})); return attributes.toString(); } }; menuBar.setOutputMarkupId(true); YuiMenuBarItem sample = menuBar.addMenu(Sample1); YuiMenuBarItem sampleSet = menuBar.addMenu(Sample2); YuiMenuBarItem batch = menuBar.addMenu(Sample3); YuiMenuBarItem instrument = menuBar.addMenu(Sample4); YuiMenuBarItem report = menuBar.addMenu(Sample5); YuiMenuBarItem admin = menuBar.addMenu(Sample6); YuiMenu subMenu = sample.newSubMenu(mb_sample); subMenu.addMenuItem(new TestAction(Sub Sample1)); subMenu.addMenuItem(new TestAction(Sub Sample2)); subMenu = sampleSet.newSubMenu(Test); subMenu.addMenuItem(new TestAction(Sub Sample3)); subMenu.addMenuItem(new TestAction(Sub Sample4)); this.add(menuBar); } -HTML Template -- html headtitle wicket:id=pageTitlePage Title/title link rel=stylesheet type=text/css href=style.css/ /head body div wicket:id=menuBar[Menu Bar]/div /body /html I get the first level of the menu bar but no submenu's clicking or hovering on the main menu link just results in the menu item being highlighted in yellow. What am I missing? regards Mark - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Cannot figure out how to download/stream a file from an AjaxFallbackLink onClick method
I have a Wicket application which is required to retrieve files from the local networks it's connected to. The files can be located on a Windows or Linux file system. My strategy so far is to use JCIFS to grab the file and write it to a temporary local (to the webserver) file which is then transferred to the users browser. The first part is working well and I can extend Wicket's DownloadLink (which creates a ResourceStreamRequestTarget from a FileResourceStream and then sets the Request target) in order to achieve my goal. My problem is that I now need to migrate to an AjaxFallbackLink instead of the Link class which DownloadLink extends. If I simply migrate the DownloadLink OnClick() code to a new AjaxFallbackLink the file is streamed to the Ajax response (You can see this in the AJAX WICKET DEBUG) and nothing much happens from the users perspective. This kind of makes sense since I'm now dealing in Ajax requests and responses. I've checked the archive and found some similar looking problems which have pointed my towards things like Dynamic/shared resources or pre-pending JavaScript to the target but I've either not understood or not been able to implement these solutions. Any solutions, ideas, wiki pointers would be most welcome. Regards. Please help Logica to respect the environment by not printing this email / Pour contribuer comme Logica au respect de l'environnement, merci de ne pas imprimer ce mail / Bitte drucken Sie diese Nachricht nicht aus und helfen Sie so Logica dabei, die Umwelt zu schützen. / Por favor ajude a Logica a respeitar o ambiente nao imprimindo este correio electronico. This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you.
Is it possible to restart an AjaxSelfUpdatingBehaviour after it has been stopped?
I have a collection of Panels that are switched via an AjaxTabbedPanel Component. One of the panels has an AjaxSelfUpdatingBehaviour attached which works fine. However, if I switch to another panel the self updating behaviour is stopped because the component is no longer visible (a precondition check). This is perfectly reasonable logic. My problem is that when I switch back to the tab with the AjaxSelfUpdatingBehaviour it is still stopped and never restarts ( I'm guessing it's related to the stop flag in the behaviours class!). So is it possible to restart the behaviour? I've tried overriding the renderHead() to try and avoid the if stopped check but it didn't work so I guess there is something more complicated going on behind the scenes. Cheers, Mark Please help Logica to respect the environment by not printing this email / Pour contribuer comme Logica au respect de l'environnement, merci de ne pas imprimer ce mail / Bitte drucken Sie diese Nachricht nicht aus und helfen Sie so Logica dabei, die Umwelt zu schützen / Por favor ajude a Logica a respeitar o ambiente nao imprimindo este correio electronico. This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you.
Re: Any examples of a multiselect box in Wicket
thanks Igor, that helped. Igor Vaynberg wrote: ListMultipleChoice or Select/SelectOption these both allow you to select multiple items from the list, examples to both can be found in component reference. -igor On Tue, Jun 23, 2009 at 1:17 PM, m...@jumpingbean.co.za wrote: Hi all, Ok done some test and it looks like wicket can't handle this use case. I have tried the extensions select class and SelectOptions but it seems to work the same as dropdownchoice. There appears to be no example of a multi select for wicket on the net. I am beginning to think I should abandon the attempt to use multi-select. Any last minute pointers? thanks - 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 - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Mutiple select DropDownChoice component
Hi all, I am looking for info on how to handle a multi-select dropdownchoice component. Does the ModelObject need to be a List and will it get past a collection of selected items? How do I iterate over all the selected items if it is not provided in a list format? I have a AjaxFormComponentUpdatingBehavior attached to the control and it seems that the onchange event is fired each time the selected items are increased or decreased but I only get one item at a time passed through. i.e I don't get the entire collection of selected items. I would like to be able to detect if a single item has been selected, which I could do with a call to size() if the model object was a collection. I couldn't find much on google witht he words wicket mutiple select :( thanks - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Any examples of a multiselect box in Wicket
Hi all, Ok done some test and it looks like wicket can't handle this use case. I have tried the extensions select class and SelectOptions but it seems to work the same as dropdownchoice. There appears to be no example of a multi select for wicket on the net. I am beginning to think I should abandon the attempt to use multi-select. Any last minute pointers? thanks - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Can't find Wicket ajax resources
Here is the Wicket portion of the my web.xml filter filter-name ULandingWicketApp /filter-name filter-class org.apache.wicket.protocol.http.WicketFilter /filter-class init-param param-name applicationClassName /param-name param-value com.sri.uLanding.ULandingWicketApp /param-value /init-param /filter filter-mapping filter-name ULandingWicketApp /filter-name url-pattern //* /url-pattern /filter-mapping Mark Sloan SRI International, San Luis Obispo Office 805-542-9330 x107 mark.sl...@sri.com On May 18, 2009, at 6:33 PM, Jeremy Thomerson wrote: What's your web.xml mapping? -- Jeremy Thomerson http://www.wickettraining.com On Mon, May 18, 2009 at 6:41 PM, Mark Sloan mark.sl...@sri.com wrote: I am trying to do some basic Ajax in Wicket (1.4rc4) I have the following code fragment: TextFieldString loginField = new TextFieldString(login, new PropertyModelString(this, login)); loginField.add(new AjaxFormComponentUpdatingBehavior(onblur) { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { // doUpdate } }); } It produces the follwing: [WARN] 404 - GET /resources/org.apache.wicket.ajax.WicketAjaxReference/wicket- ajax.js;jsessionid=l0s7hr4i8tev WARN] 404 - GET /resources/org.apache.wicket.markup.html.WicketEventReference/ wicket-event.js;jsessionid=l0s7hr4i8tev [WARN] 404 - GET /resources/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/ wicket-ajax-debug.js;jsessionid=l0s7hr4i8tev What am I doing wrong here? Mark Sloan SRI International, San Luis Obispo Office 805-542-9330 x107 mark.sl...@sri.com - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org smime.p7s Description: S/MIME cryptographic signature
Re: Can't find Wicket ajax resources
Thank you. That was the cause of my problem. I think the //* got into our url mapping because we had a resources dir in our project, and the resources in it were not being found. So to fix the problem I have renamed our resources dir to uLandingResources and changed the url mapping from //* to /*. It seems like it would be a good idea if Wicket could use some other less common name for its own resources use. Thanks again. Mark Sloan SRI International, San Luis Obispo Office 805-542-9330 x107 mark.sl...@sri.com On May 19, 2009, at 9:49 AM, Jeremy Thomerson wrote: At a glance it looks right, with the exception that your / is doubled up in the mapping. I don't think this would create your issue, but you should fix it and try again. -- Jeremy Thomerson http://www.wickettraining.com On Tue, May 19, 2009 at 11:47 AM, Mark Sloan mark.sl...@sri.com wrote: Here is the Wicket portion of the my web.xml filter filter-name ULandingWicketApp /filter-name filter-class org.apache.wicket.protocol.http.WicketFilter /filter-class init-param param-name applicationClassName /param-name param-value com.sri.uLanding.ULandingWicketApp /param-value /init-param /filter filter-mapping filter-name ULandingWicketApp /filter-name url-pattern //* /url-pattern /filter-mapping Mark Sloan SRI International, San Luis Obispo Office 805-542-9330 x107 mark.sl...@sri.com On May 18, 2009, at 6:33 PM, Jeremy Thomerson wrote: What's your web.xml mapping? -- Jeremy Thomerson http://www.wickettraining.com On Mon, May 18, 2009 at 6:41 PM, Mark Sloan mark.sl...@sri.com wrote: I am trying to do some basic Ajax in Wicket (1.4rc4) I have the following code fragment: TextFieldString loginField = new TextFieldString(login, new PropertyModelString(this, login)); loginField.add(new AjaxFormComponentUpdatingBehavior(onblur) { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { // doUpdate } }); } It produces the follwing: [WARN] 404 - GET /resources/org.apache.wicket.ajax.WicketAjaxReference/wicket- ajax.js;jsessionid=l0s7hr4i8tev WARN] 404 - GET /resources/org.apache.wicket.markup.html.WicketEventReference/ wicket-event.js;jsessionid=l0s7hr4i8tev [WARN] 404 - GET /resources/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/ wicket-ajax-debug.js;jsessionid=l0s7hr4i8tev What am I doing wrong here? Mark Sloan SRI International, San Luis Obispo Office 805-542-9330 x107 mark.sl...@sri.com - 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 smime.p7s Description: S/MIME cryptographic signature
Can't find Wicket ajax resources
I am trying to do some basic Ajax in Wicket (1.4rc4) I have the following code fragment: TextFieldString loginField = new TextFieldString(login, new PropertyModelString(this, login)); loginField.add(new AjaxFormComponentUpdatingBehavior(onblur) { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { // doUpdate } }); } It produces the follwing: [WARN] 404 - GET /resources/org.apache.wicket.ajax.WicketAjaxReference/ wicket-ajax.js;jsessionid=l0s7hr4i8tev WARN] 404 - GET /resources/ org.apache.wicket.markup.html.WicketEventReference/wicket- event.js;jsessionid=l0s7hr4i8tev [WARN] 404 - GET /resources/ org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/wicket-ajax- debug.js;jsessionid=l0s7hr4i8tev What am I doing wrong here? Mark Sloan SRI International, San Luis Obispo Office 805-542-9330 x107 mark.sl...@sri.com smime.p7s Description: S/MIME cryptographic signature
Newbie question
Hello all, I'm following the wicket in action book. I'm trying the cheese store in chapter 3. I was following along the code by reading a bit and coding a bit on my own. The code defining the ListView for the cheese cart is originally: add(new ListView(cart, new PropertyModel(this, cart.cheeses)) { ... } The way I ended up coding it was: add(new ListView(cart, getCart().getCheeses())) { ... } Which seems to be working fine, but If I click repeatedly fast on the 'add to cart' link, the ArrayList in session gets its size changed correctly when adding elements, but the ListView element size doesnt change accordingly. Basically, the list size keeps growing on each click, but the number of items in the ListView doesnt grow anymore. Any ideas whats wrong? Thanks.
Re: Newbie question
Hi, Basically, getCart().getCheeses().size() != cartListView.size() On Wed, Dec 10, 2008 at 12:31 AM, Bruno Cesar Borges [EMAIL PROTECTED] wrote: I think you are talking about the 'viewSize' property of ListView. This indicates how many viewable items will be displayed within a ListView. -Original Message- From: Mark Daniel [mailto:[EMAIL PROTECTED] Sent: Tuesday, December 09, 2008 6:23 PM To: users@wicket.apache.org Subject: Newbie question Hello all, I'm following the wicket in action book. I'm trying the cheese store in chapter 3. I was following along the code by reading a bit and coding a bit on my own. The code defining the ListView for the cheese cart is originally: add(new ListView(cart, new PropertyModel(this, cart.cheeses)) { ... } The way I ended up coding it was: add(new ListView(cart, getCart().getCheeses())) { ... } Which seems to be working fine, but If I click repeatedly fast on the 'add to cart' link, the ArrayList in session gets its size changed correctly when adding elements, but the ListView element size doesnt change accordingly. Basically, the list size keeps growing on each click, but the number of items in the ListView doesnt grow anymore. Any ideas whats wrong? Thanks. *** Atenção: Esta mensagem foi enviada para uso exclusivo do(s) destinatários(s) acima identificado(s), podendo conter informações e/ou documentos confidencias/privilegiados e seu sigilo é protegido por lei. Caso você tenha recebido por engano, por favor, informe o remetente e apague-a de seu sistema. Notificamos que é proibido por lei a sua retenção, disseminação, distribuição, cópia ou uso sem expressa autorização do remetente. Opiniões pessoais do remetente não refletem, necessariamente, o ponto de vista da CETIP, o qual é divulgado somente por pessoas autorizadas. Warning: This message was sent for exclusive use of the addressees above identified, possibly containing information and or privileged/confidential documents whose content is protected by law. In case you have mistakenly received it, please notify the sender and delete it from your system. Be noticed that the law forbids the retention, dissemination, distribution, copy or use without express authorization from the sender. Personal opinions of the sender do not necessarily reflect CETIP's point of view, which is only divulged by authorized personnel. *** - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Newbie question
Hi Igor, I just changed one line the original source (in my original post), and built a war and deployed on tomcat, and got the behavior I mentioning. I think they both point to the same list. On Wed, Dec 10, 2008 at 1:12 AM, Igor Vaynberg [EMAIL PROTECTED]wrote: you gave listview a list instance, but its probably not the same instance of list you are adding items to. that is why the original code uses a model to give listview the list. read the models chapter... -igor On Tue, Dec 9, 2008 at 12:23 PM, Mark Daniel [EMAIL PROTECTED] wrote: Hello all, I'm following the wicket in action book. I'm trying the cheese store in chapter 3. I was following along the code by reading a bit and coding a bit on my own. The code defining the ListView for the cheese cart is originally: add(new ListView(cart, new PropertyModel(this, cart.cheeses)) { ... } The way I ended up coding it was: add(new ListView(cart, getCart().getCheeses())) { ... } Which seems to be working fine, but If I click repeatedly fast on the 'add to cart' link, the ArrayList in session gets its size changed correctly when adding elements, but the ListView element size doesnt change accordingly. Basically, the list size keeps growing on each click, but the number of items in the ListView doesnt grow anymore. Any ideas whats wrong? Thanks. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Newbie question
By original source, I meant I just tried it on the book source code download. On Wed, Dec 10, 2008 at 1:20 AM, Mark Daniel [EMAIL PROTECTED] wrote: Hi Igor, I just changed one line the original source (in my original post), and built a war and deployed on tomcat, and got the behavior I mentioning. I think they both point to the same list. On Wed, Dec 10, 2008 at 1:12 AM, Igor Vaynberg [EMAIL PROTECTED]wrote: you gave listview a list instance, but its probably not the same instance of list you are adding items to. that is why the original code uses a model to give listview the list. read the models chapter... -igor On Tue, Dec 9, 2008 at 12:23 PM, Mark Daniel [EMAIL PROTECTED] wrote: Hello all, I'm following the wicket in action book. I'm trying the cheese store in chapter 3. I was following along the code by reading a bit and coding a bit on my own. The code defining the ListView for the cheese cart is originally: add(new ListView(cart, new PropertyModel(this, cart.cheeses)) { ... } The way I ended up coding it was: add(new ListView(cart, getCart().getCheeses())) { ... } Which seems to be working fine, but If I click repeatedly fast on the 'add to cart' link, the ArrayList in session gets its size changed correctly when adding elements, but the ListView element size doesnt change accordingly. Basically, the list size keeps growing on each click, but the number of items in the ListView doesnt grow anymore. Any ideas whats wrong? Thanks. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Detect LoginPage redirection with swarm
That worked perfectly. Thanks! Mark On [Jun 10], at 2:59 AM, Maurice Marrink wrote: It should be fairly simple to show a message on the login page stating the user will be redirected to whichever page they were trying to visit. It would be a lot more difficult i think to show a warning prior to redirecting to the login paging. But as i understand it that is fortunately not what you want :) Swarm uses ISecurityChecks to solve authorization and authentication, only a few checks should ever have to worry about redirecting to the login page. The most prominent place this happens is during the instantiation check in the ClassSecurityCheck By default this is used on every page implementing ISecurePage interface. The interface is customizable but it is also possible to override this per page. So what you could do is extend ClassSecurityCheck to store the page in the session you came from and then in the login page check for that and display an appropriate message. There might be other ways but i am not aware of them. :) public class LoggingClasssecurityCheck extends ClassSecurityCheck { public boolean isActionAuthorized(WaspAction action) { if (getClazz() == getLoginPage()) return true; if (isAuthenticated()) return getStrategy().isClassAuthorized(getClazz(), action); //not authenticated, log and redirect ((MySession)Session.get()).logRedirect(getClazz()); throw new RestartResponseAtInterceptPageException(getLoginPage()); } } To use this check instead of the default just add a static final field containing an instance of the check to your page. The entire class hierarchy is searched so you could put it on your basepage to affect every page. If multiple static final fields containing ISecurityChecks are found in a class hierarchy all of them have to validate. Ofcourse annotations would be much nicer for this but swarm is still using java 1.4. Maurice On Tue, Jun 10, 2008 at 12:08 AM, Mark Lichtenberg [EMAIL PROTECTED] wrote: Hi - We have a fairly straightforward app in which each page extends SecureWebPage such that if a user attempts to directly land on a mounted page, they will be redirected to our login page (as supplied in our Application.getLoginpage() method). After logging in, the user is directed to the originally requested page. We have a requirement to alert a user that they will be redirected on the login page - but I can not find a way to detect this in our Login page class. I've tried getRequestCycle().isRedirect(), but this returns false whether the page is loaded directly or as an intercept page. Anyone know how I should approach this? Thanks. Mark - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Detect LoginPage redirection with swarm
Hi - We have a fairly straightforward app in which each page extends SecureWebPage such that if a user attempts to directly land on a mounted page, they will be redirected to our login page (as supplied in our Application.getLoginpage() method). After logging in, the user is directed to the originally requested page. We have a requirement to alert a user that they will be redirected on the login page - but I can not find a way to detect this in our Login page class. I've tried getRequestCycle().isRedirect(), but this returns false whether the page is loaded directly or as an intercept page. Anyone know how I should approach this? Thanks. Mark - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
StackOverflowError using 1.3.2
Hi, We've been experiencing StackOverflowErrors when our application is under a load of around 4 sessions, mostly clicks to load pages without necessarily waiting for the previous click to finish. I saw this was addressed with jira issue 1365, and was part of 1.3.2, which we are using. For good measure, we took out all instance variables referencing Page objects, which was mentioned in the jira issue, but this did not help either. We also tried the wicket nightly today, but got the same results. Seems to be due to page deserialization - a snippet of the exception is below. Any help would be greatly appreciated. 11:15:15,497 ERROR [[default]] Servlet.service() for servlet default threw exception java.lang.StackOverflowError at java.io.ObjectInputStream $PeekInputStream.read(ObjectInputStream.java:2213) at java.io.ObjectInputStream $PeekInputStream.readFully(ObjectInputStream.java:2226) at java.io.ObjectInputStream $BlockDataInputStream.readUTFBody(ObjectInputStream.java:2963) at java.io.ObjectInputStream $BlockDataInputStream.readUTF(ObjectInputStream.java:2764) at java.io.ObjectInputStream.readUTF(ObjectInputStream.java:1032) at java.io.ObjectStreamClass.readNonProxy(ObjectStreamClass.java:600) at java.io.ObjectInputStream.readClassDescriptor(ObjectInputStream.java: 789) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java: 1534) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1699) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at java.util.HashSet.readObject(HashSet.java:278) at sun.reflect.GeneratedMethodAccessor121.invoke(Unknown Source) at sun .reflect .DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java: 946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java: 1809) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java: 1908) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java: 1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at java.util.HashMap.readObject(HashMap.java:1067) at sun.reflect.GeneratedMethodAccessor122.invoke(Unknown Source) at sun .reflect .DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java: 946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java: 1809) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1719) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at org.apache.wicket.util.lang.Objects.byteArrayToObject(Objects.java: 392) at org .apache .wicket .protocol .http .pagestore.AbstractPageStore.deserializePage(AbstractPageStore.java:228) at org .apache .wicket .protocol.http.pagestore.DiskPageStore.getPage(DiskPageStore.java:706) at org.apache.wicket.protocol.http.SecondLevelCacheSessionStore $SecondLevelCachePageMap.get(SecondLevelCacheSessionStore.java:311) at org.apache.wicket.Session.getPage(Session.java:751) at org.apache.wicket.protocol.http.pagestore.AbstractPageStore $PageHolder.readResolve(AbstractPageStore.java:363) at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source) at sun .reflect .DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) .. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Wicket + Hibernate + Spring + Terracotta + Tomcat + Apache
For the servlet container you can use either Tomcat or JBoss with the Apache Portable Runtime. Performance will be similar to using Apache as a frontend, but is simpler to setup. http://labs.jboss.com/jbossweb/index.html As for whether to go with Tomcat or JBoss, perhaps that will depend on whether it is likely you will want other J2EE features, eg JMS. I've tended to settle on JBoss because those extra libraries are there if I need them. Mark -Original Message- From: beam [mailto:[EMAIL PROTECTED] Sent: Friday, 28 September 2007 12:24 AM To: users@wicket.apache.org Subject: Wicket + Hibernate + Spring + Terracotta + Tomcat + Apache Hello everybody! I've used wicket, spring jdbc and tomcat in my last project. Now, we want to start a web project, some kind of social network. And we'll go to use wicket as a web framework, hibernate for persistence and spring for DI. So, this project must be deployed on a cluster. I've decided to use Open Terracotta for this kind of cluster. But I don't know which app. server(JBoss) or servlet container(Tomcat?) to use. This is a first question. Second, as far as I know, tomcat or any app. server like JBoss isn't a very good solution to deliver static content(e.g. images, video or even *.css files), so I decide to use Apache Web Server or Nginx as a Frontend, and terrcotta cluster with Tomcats(or JBoss) for dynamic backend. But, I don't have enough experience to do this :) So, I need an advise, how to do this, maybe one of you, java-guru, can help me? And third, I want to use C-JDBC(Sequoia) to cluster mysql database - is it a good solution for DB clustering, or better to use mysql 5.1 with native cluster support? Thank you very much for any kind of answers, and sorry for my bad english :) -- View this message in context: http://www.nabble.com/Wicket-%2B-Hibernate-%2B-Spring-%2B-Terracotta-%2B-Tom cat-%2B-Apache-tf4528720.html#a12922367 Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]