As I explained, all components (including Page A) must declare
public List<Class> getNestedComponents();
this replaces the external configuration file that component developers
must define and it contains roughly similar information. The benefit of
this approach, however, is that you get compile-time errors if you
reference a nonexistant component.
So in your example, your Page would look something like this:
public class PageA extends WebPage {
public PageA() {
}
public List<Class> getNestedComponents() {
List<Class> result = new ArrayList<Class>();
result.add(PageB.class);
result.add(PageC.class);
return result;
}
public init() {
Form a=new SomeForm();
a.add(new Button() {
public void onSubmit() {
setResponsePage(new PageB());
}
add(new Link() {
public void onClick() {
setResponsePage(new PageC());
}
}
}
}
As for the second part of your question, if you add bookmarkable pages
from 3rd party libraries and they are not reachable from any other Page,
then it would be your responsibility to add them into the Application. I
would dare say, however, that this will never occur. 3rd party libs
usually add Pages you point into, not Pages that clients hit directly. I
don't think there is a real-life use case where this would occur but
even if there was we can continue working to automate that as well.
Gili
Igor Vaynberg wrote:
Does it make more sense now?
Ummm....not really...
How do you get PageB and PageC from the following? And what if PageA comes
from a 3rd party lib?
public class PageA extends WebPage {
public PageA() {
Form a=new SomeForm();
a.add(new Button() {
public void onSubmit() {
setResponsePage(new PageB());
}
add(new Link() {
public void onClick() {
setResponsePage(new PageC());
}
}
}
}
-Igor
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Gili
Sent: Thursday, August 11, 2005 9:49 AM
To: [email protected]
Subject: Re: [Wicket-develop] feedback refactor and paging navigation
That's not true.
Any pages referenced from your root pages do not have
to be added. So for example, you'd add your homepage and if
it is possible to reach all other pages from that page
(recursive search) then that's the only page you ever need to add.
So in summary, root pages consist of all your bookmarkable pages
*minus* any bookmarkable page which can be reached from a
preexisting root page.
So for example, if my bookmarkable pages are A, B, C
but A references B and C (directly or indirectly), I only
need to add Page A.
Does it make more sense now?
Gili
Igor Vaynberg wrote:
What do you mean by *root pages* - all pages are root pages.
-Igor
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of Gili
Sent: Thursday, August 11, 2005 9:41 AM
To: [email protected]
Subject: Re: [Wicket-develop] feedback refactor and paging
navigation
You'd only have to register the *root* Pages. All other pages
(including bundled third party ones) are discovered for free.
Gili
Igor Vaynberg wrote:
I think it would really suck to have to register all your
pages. Also
what about pages that come bundled with a third party lib -
same problem remains.
-igor
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of Gili
Sent: Thursday, August 11, 2005 9:26 AM
To: [email protected]
Subject: Re: [Wicket-develop] feedback refactor and paging
navigation
I suggested, multiple times now, how we can completely
eliminate the
need for these external configuration files. No one has yet
to explain
to me why this idea would not work or why it is worse than
the current
design.
Why not use this mechanism?
public interface IComponentInitializer {
public void init(Application application);
public List<Class> getNestedComponents(); }
where getNestedComponents() returns the class names of
all components
that will be added into the component. This will allow you
to discover
(recursively) all the components in a given Application.
An end-user then only has to say:
Application.add(rootPage1);
Application.add(rootPage2);
and Wicket will then automatically find out about all
the remaining
components by invoking getNestedComponents().
Finally, as I already explained, we move component
configuration
(calling add() etc...) from the constructor (where it currently
resides) into a separate method (i.e.
init()) and the default constructor for Page should do
nothing. This
way Wicket can easily construct pages, invoke
getNestedComponents() to find out all nested components in a very
efficient manner.
Gili
Johan Compagner wrote:
I don't think you can search for that..
If you know a way then i am will check that out.
because how would you do that? How do you can through ALL
packages (==
directories)
johan
Igor Vaynberg wrote:
Yes I see Jon. Thank you for a very long and detailed
explanation as
to why
my idea sucked. I still think there is some room for
improvement in the
current situation. Cant we do a saerch through avail
packages looking
for a
.resources file (im not sure how this would be done).
It would be nice to simply have DatePicker.resources side
by side with
DatePicker.java. It would eliminate refactoring headaches
at least as
far as
the package names go and it wouldn't be sitting in some
separate folder.
-Igor
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of
Jonathan Locke
Sent: Thursday, August 11, 2005 1:17 AM
To: [email protected]
Subject: Re: [Wicket-develop] feedback refactor and
paging navigation
actually it's not just that the service registration info
has to be
put somewhere, it's that a client component that's using
a service to
create a dynamic resource like, for example, some kind of
panel that
wants a dynamic button image created...
/that component/ would have to be able to create its
images /when the
app starts/ (because of clustering and server restarts).
and /only
the panel component itself/ can or should know about this
/and/ it
has to be done on startup. wicket's resource handling
classes are
already fully featured, object-oriented "services" (but
less vague
and more OO powerful) by virtue of the fact that
they implement
the IResourceListener interface and respond to requests
for resources
(ANY resource). so i just don't see any value at all in
this service
concept beyond what we've already got. in fact, i think
it would
significantly /subtract/ from wicket's existing support
for dynamic
resources (think "service" if you prefer)... and again,
even if we
did change the world, it wouldn't solve the bootstrapping
problem we
have for components.
Johan Compagner wrote:
how does a component with a dynamically generated
image make that
image available in your scheme?
the component has to register the image with the
service, doesn't
it?
The component doesn't need to register an image with a
service, it
can register the service that creates the images.
The images themselves can be created on the first request
http://www..../app?service=mydynamicbuttons&button=A
Whenever this url is hit wicket forwards the control to the
registered mydynamicbuttons service (registered by whatever
component) which creates the image A, caches it, and
streams it to
response. Or precreate whatever you need when the
service
object is
created and registered with the application.
And THIS last part is just the problem
how does it register itself? When?
Where is it specified that a component does that?
I think in the end we have exactly the same thing...
you have a file like:
mydynamicbuttons=my.class.that.exposes.this.Service
johan
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software
Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development
Lifecycle
Practices Agile & Plan-Driven Development * Managing
Projects & Teams
* Testing & QA Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software
Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development
Lifecycle
Practices Agile & Plan-Driven Development * Managing
Projects & Teams
* Testing & QA Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software
Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development
Lifecycle
Practices Agile & Plan-Driven Development * Managing Projects &
Teams * Testing
& QA
Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software
Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development
Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams
* Testing & QA
Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
--
http://www.desktopbeautifier.com/
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software
Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle
Practices Agile & Plan-Driven Development * Managing
Projects & Teams
* Testing & QA Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle
Practices Agile & Plan-Driven Development * Managing
Projects & Teams
* Testing & QA Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
--
http://www.desktopbeautifier.com/
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle
Practices Agile & Plan-Driven Development * Managing
Projects & Teams
* Testing & QA Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle
Practices Agile & Plan-Driven Development * Managing
Projects & Teams
* Testing & QA Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
--
http://www.desktopbeautifier.com/
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development
Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams *
Testing & QA
Security * Process Improvement & Measurement *
http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop
--
http://www.desktopbeautifier.com/
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop