Re: [Wicket-user] Implementing a PopupPanel
Ah, I see. If your popup functionality is pure client-side Javascript, couldn't you just turn it into a Behavior that you attach to a Label, Image, or whatever, that sets the "onclick" attribute of whatever you attached it to? jk On Wed, May 30, 2007 at 10:13:40AM -0400, Ravindra Wankar wrote: >Thanks John. I was suspecting no one to reply to a long mail. > >Unfortunately, in my case the getTitle() returns a component not the label >text. The component returned by the child can either be a "label" or an >"image" component. The derived class gets the label text in its >constructor which it uses to construct the label but the parent calls >getTitle() too soon. > >As there are 2 components within the parent (title and contents) that the >child needs to fill, I could not use markup inheritance. > >Thanks, >Ravi. > >John Krasnay wrote: > > One way to solve the "abstract method from the constructor" problem (or > more precisely, the "non-final method from the constructor" problem) is > to use a Model, e.g... > > public class PopupPanel extends Panel { > public abstract String getTitle(); > public PopupPanel(String id) { > add(new Label("foo", new AbstractReadOnlyModel() { > public Object getObject(Component component) { > return getTitle(); > } > } > } > } > > The model's getObject is only called some time after the object has > been constructed. > > jk > > > On Tue, May 29, 2007 at 07:36:59AM -0400, Ravindra Wankar wrote: > > > This looks more like a design question but I think there must be a > better, Wicket way. > > I wrote a PopupPanel that allows you to have a "div" popup in a page by > clicking a link. The contents of the div can be static/loaded via Ajax. > The popup part with Ajax is working. The link that activates the popup > can either have an image or text label. So I have... > >PopupPanel >| abstract getTitle() and getContent() >| constructor calls getTitle() and > getContents() >| > -- > || > LabelLinkedPopupPanelImageLinkedPopupPanel > implements getTitle() implements getTitle() > > > To use it, new LabelLinkedPopupPanel(...) and override the getContent() > method. I can't get the title to work because of "abstract method from > the constructor" problem. My options then are > > 1. Have a setTitle() and setContent() method that is called by the > subclasses but failing to call them won't be caught till runtime. > 2. Have PopupPanel constructor take in components for title and content. > The sub classes then just act as wrappers. > 3. Replace the subclasses with PopupPanelFactory with 2 methods > newLabelLinkedPopup() and newImageLinkedPopup. > > I don't think a border suits this requirement but I'm not sure. Is there > a better way? > > Thanks > Ravi > > - > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > ___ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > - > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > ___ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > - > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > ___ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ Wicket-user mailing list Wicket-user@lists.sourcefo
Re: [Wicket-user] Implementing a PopupPanel
Thanks John. I was suspecting no one to reply to a long mail. Unfortunately, in my case the getTitle() returns a component not the label text. The component returned by the child can either be a "label" or an "image" component. The derived class gets the label text in its constructor which it uses to construct the label but the parent calls getTitle() too soon. As there are 2 components within the parent (title and contents) that the child needs to fill, I could not use markup inheritance. Thanks, Ravi. John Krasnay wrote: One way to solve the "abstract method from the constructor" problem (or more precisely, the "non-final method from the constructor" problem) is to use a Model, e.g... public class PopupPanel extends Panel { public abstract String getTitle(); public PopupPanel(String id) { add(new Label("foo", new AbstractReadOnlyModel() { public Object getObject(Component component) { return getTitle(); } } } } The model's getObject is only called some time after the object has been constructed. jk On Tue, May 29, 2007 at 07:36:59AM -0400, Ravindra Wankar wrote: This looks more like a design question but I think there must be a better, Wicket way. I wrote a PopupPanel that allows you to have a "div" popup in a page by clicking a link. The contents of the div can be static/loaded via Ajax. The popup part with Ajax is working. The link that activates the popup can either have an image or text label. So I have... PopupPanel | abstract getTitle() and getContent() | constructor calls getTitle() and getContents() | -- || LabelLinkedPopupPanelImageLinkedPopupPanel implements getTitle() implements getTitle() To use it, new LabelLinkedPopupPanel(...) and override the getContent() method. I can't get the title to work because of "abstract method from the constructor" problem. My options then are 1. Have a setTitle() and setContent() method that is called by the subclasses but failing to call them won't be caught till runtime. 2. Have PopupPanel constructor take in components for title and content. The sub classes then just act as wrappers. 3. Replace the subclasses with PopupPanelFactory with 2 methods newLabelLinkedPopup() and newImageLinkedPopup. I don't think a border suits this requirement but I'm not sure. Is there a better way? Thanks Ravi - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user
Re: [Wicket-user] Implementing a PopupPanel
One way to solve the "abstract method from the constructor" problem (or more precisely, the "non-final method from the constructor" problem) is to use a Model, e.g... public class PopupPanel extends Panel { public abstract String getTitle(); public PopupPanel(String id) { add(new Label("foo", new AbstractReadOnlyModel() { public Object getObject(Component component) { return getTitle(); } } } } The model's getObject is only called some time after the object has been constructed. jk On Tue, May 29, 2007 at 07:36:59AM -0400, Ravindra Wankar wrote: > > This looks more like a design question but I think there must be a > better, Wicket way. > > I wrote a PopupPanel that allows you to have a "div" popup in a page by > clicking a link. The contents of the div can be static/loaded via Ajax. > The popup part with Ajax is working. The link that activates the popup > can either have an image or text label. So I have... > > PopupPanel > | abstract getTitle() and getContent() > | constructor calls getTitle() and > getContents() > | > -- > || >LabelLinkedPopupPanelImageLinkedPopupPanel >implements getTitle() implements getTitle() > > > To use it, new LabelLinkedPopupPanel(...) and override the getContent() > method. I can't get the title to work because of "abstract method from > the constructor" problem. My options then are > > 1. Have a setTitle() and setContent() method that is called by the > subclasses but failing to call them won't be caught till runtime. > 2. Have PopupPanel constructor take in components for title and content. > The sub classes then just act as wrappers. > 3. Replace the subclasses with PopupPanelFactory with 2 methods > newLabelLinkedPopup() and newImageLinkedPopup. > > I don't think a border suits this requirement but I'm not sure. Is there > a better way? > > Thanks > Ravi > > - > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > ___ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user
[Wicket-user] Implementing a PopupPanel
This looks more like a design question but I think there must be a better, Wicket way. I wrote a PopupPanel that allows you to have a "div" popup in a page by clicking a link. The contents of the div can be static/loaded via Ajax. The popup part with Ajax is working. The link that activates the popup can either have an image or text label. So I have... PopupPanel | abstract getTitle() and getContent() | constructor calls getTitle() and getContents() | -- || LabelLinkedPopupPanelImageLinkedPopupPanel implements getTitle() implements getTitle() To use it, new LabelLinkedPopupPanel(...) and override the getContent() method. I can't get the title to work because of "abstract method from the constructor" problem. My options then are 1. Have a setTitle() and setContent() method that is called by the subclasses but failing to call them won't be caught till runtime. 2. Have PopupPanel constructor take in components for title and content. The sub classes then just act as wrappers. 3. Replace the subclasses with PopupPanelFactory with 2 methods newLabelLinkedPopup() and newImageLinkedPopup. I don't think a border suits this requirement but I'm not sure. Is there a better way? Thanks Ravi - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user