maybe:

wicket.markup.html.navigation.paging.PagingNavigation
wicket.markup.html.navigation.paging.PagingNavigationLink
wicket.markup.html.navigation.paging.PagingNavigationIncrementLink
wicket.markup.html.navigation.paging.IPageable

okay, i'm starting to feel like we should take this offline and maybe do this
refactor for 1.2...

??

Jonathan Locke wrote:


ooh ooh. what's great about this refactor is that we will no longer need PageableListView. every ListView can implement IPageable. and the user of the IPageable thing can attach whatever paging component they want to it. much better! we could leave a deprecated stub class in there for compatibility, but the functionality of PageableListView could more or less go away. and my bet is the index calculations will get simpler and more private as
well.

Jonathan Locke wrote:


in fact, it feels to me like this PagingNavigation and IPageable really belong in a separate package somewhere. we can then use them to implement most (or hopefully all) of the existing list view navigation... although we might have to break compatibility slightly to get
it really right...

the package would hold the interface, the default implementation and any other implementations. there are actually a few different styles of doing paging out there...

Igor Vaynberg wrote:

Jonathan Locke wrote:
in fact, maybe the idea that the component is needed at all is the hack... just musing...



Perhaps in this situation it might be. In the future I foresee a need to
call modelChanging/Changed() though.

i don't think so. i think the other idea is a hack. how can an interface to a component that's pagable not yield the


component that's
to be paged?  it makes perfect sense to me.



Right, but putting getComponent() into the IPageableComponent will basically
make it an adapter and outside the class hirarchy.

Public Component getComponent() { return this; } would be pretty weird if a
component implements IPageableComponent directly.


-Igor


Igor Vaynberg wrote:

Just thought of adding getComponent() to


IPageableComponent, still a
hack in my opinion.

-Igor




-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On


Behalf Of Igor
Vaynberg
Sent: Tuesday, August 02, 2005 5:04 PM
To: [email protected]
Subject: RE: [Wicket-user] Sigin Example

I can see your point. My thinking has always been that


any abstract
class has an implicit interface which is the sum of its public methods, and that there really is no difference between evolving public methods in an abstract class and evolving an interface and its single implementation. This is of course different when an interface is intended as a joint point between two


systems or when
alternate implementations are expected.

I am far more interested in finding a good solution for the IPageableComponent than discussing philosophies.

The need for this arose when I was writing DataView. I wanted to reuse navigation components that worked with listview, such as PageableListViewNavigation,


PageableListViewNavigationLink, etc. In
their current state they were tightly coupled to


listview, so I had
to decouple them, thus the IPageableComponent interface.


Inside it
it has all the methods that those navigation components need to manipulate the listview, so now instead of getting the listview directly they get an instance of IPageableComponent and do the manipulation through that.

Now all my dataview had to do is implement


IPageableComponent and it
could magically be navigated by the navigation components.

Pretty clean and simple, however, the navigation


components expect
IPageableComponent to also be a component. For example, PageableListViewNavigationLink needs access to the page that the pageable component is on. Because of this I had to add a Page getPage() implemented by Component to the interface. This is the part that I am trying to find a cleaner solution for, and this is why I suggested Icomponent. If we had Icomponent


IPageableComponent
could extend that and also be used as a regular component.
An alternate solution I can see is to get rid of


IPageableComponent
and use a PageableAdapter class with a getComponent()


method inside.
So instead of PageableListViewLink(...., dataview) it would be PageableListViewLink(...., new PageableAdapter(dataview)). This solution seems a bit unnatural to me because it goes around the inheritance hirarchy.

What are your thoughts?

Thanks,
Igor


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf


Of Jonathan
Locke
Sent: Tuesday, August 02, 2005 3:41 PM
To: [email protected]
Subject: Re: [Wicket-user] Sigin Example


Igor Vaynberg wrote:

Jonathan,

Could you please elaborate on why interfaces are


"fragile".
It doesn't
click for me. How is it more fragile to have an interface


and a single
implementation as opposed to a base class with no interface?




an interface is fragile because it is an inflexible, fixed


contract.
it really is /set in stone/ for a large project with a long


lifespan
(which we all hope wicket will be).
if you think about it, on a very widely used framework you


really can
never ever change an interface. ever. i don't know about


you... but
i'm not smart enough to get an interface with more than


a couple of
methods right the first time and for all time. i


usually discover
weeks or months later (or days or hours...
DOH!) that i
forgot something.  that's the fragility i'm talking about.

i believe that one shouldn't generally define interfaces


for things
that have contracts that are likely to evolve.
especially if they are likely to evolve significantly


and/or rapidly.
if you have more than a few methods, the odds seem to increase exponentially with each added method that you'll eventually


have that
DOH! moment where you realize that you didn't really fully


understand
the contract you long ago (or not so long ago) thought was so clever...

an abstract base class has all the abstractness of an


interface, but
allows flexible default implementation that is not fixed


for all time.
you can think of it very loosely as a mixture between a


class and an
interface if you like.
non-abstract methods can at least be added even if the existing abstract methods can't be changed without breaking the world. interestingly, you can also theoretically /remove/ the


abstractness of
abstract methods (loosening the
contract) without breaking subclasses by concretizing


methods later.
in any case, for things that need the ability to evolve


in the way
that Component has (take a look at the revision history,


we're on
version
#164 of that file... and I don't think that includes 100+


versions of
that code from my original codebase), an interface doesn't


make sense
unless there's some other urgent, overriding need for it.

in general, there can be other arguments that override the disadvantage of interface inflexibility, such as a


requirement to
allow alternate implementations not based on the same root
functionality, enabling mix-in usage or some other usage


driven need
like making something Remote. none of these seemed or seem like important factors in wicket.

As far as mixins go, I only ran into one situation so far. The IPageableComponent interface has to have getPage() method


which really
has nothing to do with the implementation being pageable,


but with the
fact that it is a component. Everything that uses


IPageableComponent
expects a component with pageable behaviour, not just a


pageable
something. Im not screaming interfaces for everything, but


in this case it would be nice.


i don't know enough about this case to comment. but i


highly suspect
that there is some answer that doesn't involve making


Component or
Page an interface.

Thanks,
Igor







-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf


Of Jonathan
Locke
Sent: Tuesday, August 02, 2005 2:29 PM
To: [email protected]
Subject: Re: [Wicket-user] Sigin Example


i think you're awfully, awfully full of yourself (in fact,


you sound
like me about 10 years ago... ;-)). have you even


considered the
possibility that it might be /you/ that doesn't get it?

       from my perspective:


 loose coupled interfaces == bell bottom jeans

people think that they're the solution to everything right now.
and just like bell bottom jeans, some people really did


look good in
them.  they were cool.  but what were we thinking!?
does /everyone/ look good in bell bottom jeans? hardly. just watch "that 70's show" sometime... the neighbor guy


with the
curly hair.
he's an example of a guy that definitely doesn't need loose


coupling.
when you've been doing this as long as i have, you


start
to notice
patterns in the fads that sweep through the industry.
and you eventually start to ignore the hype where it


doesn't make any
sense.
i could see this whole "bind-everything-with-xml" fad


several years
ago coming from a mile away.  and now what?  people are


attracted to
wicket because it didn't follow that fad. i think


you're simply
missing the forest for the trees. loose coupled


interfaces are the
right design pattern for a whole host of problems.  but the


design for
a web ui framework is not one of them. this was one


of
the things
that turned me off when i looked at tapestry. all


these gigantic
interfaces?
why?  yuck.

don't get me wrong... please, keep thinking.  we all have


to learn by
experience. i promise i won't stop you from trying to


loose couple
every object in /your/ project with gigantic fragile


interfaces that
serve no practical purpose.  but please don't try to do it


to wicket.
interfaces have been used judiciously in wicket.  i'm not


saying it's
perfect.
i'm not even saying we shouldn't add an interface here or


there.  we
just have yet to hear an even remotely reasonable argument


that wicket
components should be mixins.  and that's why they aren't.

David Liebeherr wrote:


Uh ohh, i started reading the dicussion about


interfaces
in wicket.
I think Eleco and Jonathan might be wrong in some ways.

One /very/ important reason not to use interfaces in this


case is that:

interfaces are hard to evolve. Interfaces have to be


pretty darn
stable  before even considering throwing them out in the


public, as

there is no  way (not without a tough fight at least) you


can alter

it later on - even adding a new method will break


all clients.


He sais that interfaces have to be more stable than an


object without

interface.
But he misses a very important fact:
Assume you have "String str = new String()" String is


a concrete
class. but: String in this context is _ALSO_ an interface!
Every reference is an interface no mather if it's a


concrete class or

an interface/abstract class!
And i think it should be not that hard to design


proper
interfaces!
jonathan: interfaces should always be a set of


methods that you
cannot ever imagine extending


"interface B extends A" ? interface inheritance is fun,


isn't it? :-)

[22:43] jonathan: my ideal number of methods in an


interface is 1
[22:43] jonathan: ;-) [22:44] jonathan: 2 is okay in


some cases
[22:44] jonathan: 3 often should be re-thought


i don't see what's the sens of defining a random number as


an limit
for number of methos in an interface.
an interface should be designed by the needs of the


context and the
purposal.
i just disagree with him!

I wonder what it is you want
to do with a proxy that you can"t do by simply


subclassing? Or AOP?

He considers to use such a complex thing like AOP but


refuses to use

such a basic thing like Interfaces?

Did you and your colegues read the links i sent in my


last mail?
If not i suggest it would be a good idea to do so.
It's worth it, trust me!

Johan Compagner wrote:
But this is not really possible because the


internals
of page are


pretty
importand for wicket to let it work


This is a serious indication that the design has some flaws


in it. A

design should always be as interchangebale and


modular
as possible.
Again: I think in the discussion it's missed that you can


even resuse

an implementation in a interfaces based design by


delegation...
And it ignores the fact that you can extend


interfaces as well
(interface inheritance is a nice thing)...
I can't imagine what's so hard to have a Page just as


Interface. If
you can not deal with client objects as interfaced objects


you have a

problem in your design. I do use interfaces every day and i


have never

ever had a big problem with that. It's all about how


familiar and
comfortable you with good modular design pratics. Loosly


coupling is

the key word! and loosly coupling is possible. you may have


to think a

bit more about your design, but it safes you so much


time later...
Maybe if i have some time i will rewrite a very little part


of wicket

to use interfaces to show that it's definetly not a


problem to use
interfaces and that you will get good benefits from it.
Btw: A good design isn't done in a sec, but it's worth to


thake the
time to do so...

Another thing i don't understand is, that some ppl


sometimes say that

the refuse to use interfaces on wicket but sometimes


there are
interfaces used in wicket. So if you can use an


interface for a
sessionFactory then why can't you use an interface


for
the session
itself?

Well, however, i think when wicket reaches 2.0 and it's


clear enough

which functionalities are implemented i may be a good idea


to review

the source and move over to use interfaces where they


make sense...
And one thing not to forget: Wicket uses "wicket:id" tags


to loosly
couple html with the logic-code. That is the most valuable


thing about

wicket!
But it's a bad thing to not continue the loosly coupling


aproach in
the api. Think about it! Loosly compling on the html/code


side is the

key thing that makes wicket better than other frameworks.


So continue

to use that in the api and you have done the best way that


is possible

with java!


And please remeber: It's cunstructive critism which i try


to provide.
I just want to get wicket as the best what's possible


bc
the basic
ideas of wicket are great!

Thanx for your attention,
Dave

PS: I don't say i know the overall truth i just


provided
my toughts
:-)

Juergen Donnerstag wrote:

David,

we did have a very hot discussion about that topic just a


week or two

ago. Please check the mail archiv (gmane) for details. But


I can tell

you it was a very deliberate decison to implement it the


way it is.
Juergen

On 8/2/05, David Liebeherr <[EMAIL PROTECTED]> wrote:


Hi Juergen,

Juergen Donnerstag wrote:


David,

yes you're right we have to work on the docs, has been


on our list

and is under construction. Did you check out our wiki and (the
outdated) user guide. it should provide at a beginner


some inside into Wicket.

You mentioned you would simplifiy the API even


further. You
mentioned IModel. Anything else that comes into your mind?


I my gosh, do you realy want to get me started on


that?


:-) No, for

real:
There are lot's of things that need very much


simplification.
When i have some time, we may discuss that in detail


(if you are
interested) in a chat or something like that (Log of


chat goes to
maillinglist/wiki of course).

One of the much important things is to realize the


"programm to an

interface, not to an implementation" principle.
For exmaple:
Session should be an Interface and SessionImpl should


be (one!)
implementation of it.
Btw: Don't name interfaces with a I prefix, that is


not so good.
It should be always like that:
Car exmaple:
interface Car {};
class CarImpl impements Car {}; or class BmwImpl implements Car{};

I know ppl have different opinions about such things,


but the i
discussed those things for a rather long time with a lot of developers and some very very good (actually one of


the best
programmers out there). I have lot's of serious reasons


why i think

you should follow this naming convention. And the most


important
thing is: Use interfaces rather then concrete


implementation!
And another very very thing is: Use delegation rather


than concrete

inheritance!

Again, i have very serious reasons why i think that way.
And it does not mean much more work to do with proper


coding tools

(Like IntelliJ IDEA).

I think the Idea of Wicket is geniusly!
Especialy the part that code is attached to free


placeable tags with

a proper wicket:id!

But i think at this point the API needs a revision to


simplify it
and to realy follow some very important rules (like


avoiding
concrete inheritance).
Btw: have a look on that:
http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-too


lbox.html
AND AFTER THAT ALSO READ THAT! --> http://jtiger.org/articles/why-extends-is-not-evil.html

It explains very very well what's the problem with concrete inheritance.

And last but not least:
I think you core developers have done a very good job and


i'm very

happy to use wicket!
Everything i said (and will say) is not meant as a


complain i realy

want to participate in wicket and to make it the


best WebApp
framework that exists (And i think wicket can reach that


target! If

i think about all that XMl-Config files crap like with


Struts and
JSF :-))

So please always thake what i say at what is it meant to be:
Constructive critism.

Thanx again for your Work,
Dave




Juergen

On 8/2/05, David Liebeherr


<[EMAIL PROTECTED]> wrote:

Juergen Donnerstag wrote:

Sorry, I guess except the javadoc there is no extra


doc on it.
What is
your question? Signin and Signin2 and not very complex.



I think this is precisely the Problem.
I found it already out by myself, but it took me some


time to find

and understand that the key thing is the


checkAccess-method.
You think it is very simple code. But you are one of the Developers that wrote the Libs, so you know what


checkAccess do
and you know that you do not have to search in the WebApplication-Class code to search where it is


redirected to the

Login-Page.
So i think the problem is for outsiders and newbees of


the project

many many things are not so clear as you might think.

I think the lack of good Documentation - and by


documentation i
don't mean a simple doc of the API methods, rather a


documentation

describes the realtionships between components and how


to use them

- is one of the biggest problems (or todos) for wicket.

Another Problem is, that's at least my personal


opinion (and
please thake it as constructive critic and not just as


a complain)

is that the api is yet to complex. I thought one of the


main goals

of wicket was to keep the learning curve as low as


possible. But

the api is to complex for that i think. Especialy the


IModel API

is very complex and i think it would be a very


good idea to
simplify it much more.

I mean at this time i am a newbee to wicket for my


self. But that

is good bc that way i can provide the "sight of a


newbee".
Developers of the proect may thing that something is


"quite easy",

but if i'm a developer of the project i know too much


already to

tell if a thing can be easy understood.

But however thanks for your help, Dave


Juergen

On 8/1/05, David Liebeherr


<[EMAIL PROTECTED]> wrote:
Is there any documentation/tutorial available for


the Signin
Exmaple?
I realy have some problems understanding how it works.

Thanx,
Dave

PS: Wicket ROCKS!


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux


Migration
Strategies
from IBM. Find simple to follow Roadmaps,


straightforward
articles,


informative Webcasts and more! Get everything you


need to get up

to speed, fast.
http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy


Linux Migration
Strategies
from IBM. Find simple to follow Roadmaps, straightforward


articles,


informative Webcasts and more! Get everything you need


to get up

to speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
_______________________________________________
Wicket-user mailing list
[email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux


Migration
Strategies
from IBM. Find simple to follow Roadmaps, straightforward


articles,



informative Webcasts and more! Get everything you need


to get up

to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux


Migration
Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and


more! Get
everything you need to get up to speed, fast.
http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
_______________________________________________
Wicket-user mailing list
[email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps,


straightforward

articles, informative Webcasts and more! Get everything


you need to

get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user




-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration


Strategies


from IBM. Find simple to follow Roadmaps, straightforward




articles,
informative Webcasts and more! Get everything you need to


get up to
speed, fast.


http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration


Strategies
from IBM. Find simple to follow Roadmaps, straightforward




articles,
informative Webcasts and more! Get everything you need


to
get up to
speed, fast.
http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user







-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration


Strategies

from IBM. Find simple to follow Roadmaps, straightforward




articles,
informative Webcasts and more! Get everything you need to


get up to
speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&opÌk
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user





-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration


Strategies
from IBM. Find simple to follow Roadmaps,


straightforward articles,
informative Webcasts and more! Get everything you need


to get up to
speed, fast.
http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user






-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps,


straightforward
articles, informative Webcasts and more! Get everything


you need to
get up to speed, fast.
http://ads.osdn.com/?ad_idt77&alloc_id492&op=ick
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user








-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps,


straightforward
articles, informative Webcasts and more! Get everything


you need to
get up to speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&opÌk
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user





-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration


Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user









-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&opÌk
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to