if youre list is static then you don;t have ANY problem
because all the links that are generated are the onces that youre list
can display and can always display.
So i really don't see youre problem.
The problem lays in dynamic list.
You render, with 25 items
and you have 3 links (3 pages, 1-10,11-20,21-25)
Then before you click on the third link 6 items where deleted.
on click the setCurrentPage is triggered by the link on the IPageable
with page 3
But then the list is read back in and suddenly you have only 2 pages
then i want just page 2 displayed.
In my eyes this is logical. I never want an error in that case.
Google also doesn't error...
johan
Gili wrote:
Right, but from a error-prevention point of view, if I provided a
user with a link to "next page" and he clicks on it and sees the same
page a second time, that looks like a bug to him (and to me too).
From the point of view of your use-case (the underlying data is
constantly changing) it make sense so I can see your point of view.
But from my point of view where the underlying data is static it is
always an error to provide a link to "next page" if no such page exists.
To me this question is equivilent to Autoboxing. When Sun
introduced autoboxing there was a question on whether to cast "null"
Integer to 0 int or to throw an exception. They chose the latter
(mostly because of lots of user feedback pointing them in that
direction) because unlike C (and the errno mechanism) we don't want to
count on developers explicitly checking for errors. What if they forget?
Gili
Igor Vaynberg wrote:
The pageable component decides what the actual page number is
Navigator.setCurrentPage(int page) {
pageable.setCurrentPage(page);
}
PaegableDataView.setCurrentPage(int page) { if (page<0) page=0;
if (page>=pagecount) page=pagecount-1;
currentpage=page;
}
This handles the out of bounds quietly instead of always throwing an
exception.
-Igor
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Christian Essl
Sent: Saturday, August 20, 2005 12:13 PM
To: wicket-user@lists.sourceforge.net
Subject: Re: [Wicket-user] Re: ColumnedDataProvider startIndex problems
I am a bit of track now. Please help me getting back. My question is
who finds the real last page? The one who calls setCurrentPage() (the
navigator) or the one who implements setCurrentPage() (the pageable
component).
To me it currently makes no sense to speak about
IndexOutOfBoundExceptions or template methods, before this is not
clear - to me.
Please help.
Christian
On Sat, 20 Aug 2005 13:40:54 -0400, Gili <[EMAIL PROTECTED]>
wrote:
I too prefer finding the *real* last page and going
there. At least,
that makes sense for my use-case.
Gili
Johan Compagner wrote:
hmm i don't know about this.
Because the DataView is the one that gives the total
pagecount. The
navigator just uses it.
And if the navigator sets a page that is suddenly out of
range then 2
things can be done:
Math.min(wantedPageCount,maxPageCount)
or if(wantedPageCount > maxPageCount) wantedPage = 0
because the view you get in the browser is very strange.
You see nothing in the list, You don't see any selection in the
navigator (because the 'currentpage' isn't listed anymore)
I prefer to go the the last page. Because it wanted to
show data that
was further on.
johan
Christian Essl wrote:
I do not know about ListView, but I think DataView and
PagableDataView could be merged quite easaly.
It already has the data-set size and the rows-count per
page. All we
would need is to add a currentPage property and than we
just render
from the startIndex+offsetOfPage.
On bounding: I think we should strictly adhear to the
navigator for
the current page property. If DataView is instructed to
show ie page
7 and there is nothing anymore on page 7 than it should just show
nothing. The navigator should deal with that, it is the one who
shows the current page-label. Especially DataView should
not do any
more bounding than Math.max(0,settedPage). That is
because you can
realy get some nasty bugs if a property value is set, than
internally changed in the setMethod and than not
afterwards reread.
Alternatively we should at least throw an IndexOutOfBoundsEx.
I think I'll (try to) implement Igor's Grid example as a
Component
after the IPageable is stable and DataView/PagabelDataView
implements it. I guess before this it is just redundant work and
there is the example which does with just one copy-paste
the job very well.
Christian
On Fri, 19 Aug 2005 09:28:27 -0700, Igor Vaynberg
<[EMAIL PROTECTED]> wrote:
I really like the idea of having a listview that shows
everything
by default, and when you attach a pager to it it becomes
pageable.
So something like irangepageable { getrowsperpage()
setrowsperpage() getmaxrows() }But that's just me.
Btw whats getmaxrows() is that getrowcount()?
I don't see why the listview cannot have
setrowsperpage() anyways
which defaults to showing everything until used.
-Igor
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Johan Compagner
Sent: Friday, August 19, 2005 2:29 AM
To: wicket-user@lists.sourceforge.net
Subject: Re: [Wicket-user] Re: ColumnedDataProvider startIndex
problems
Alternatively we should make an PageableOrderedRepeatingView.
I want to wait for the new navigation to be done so we
don't need to
have the regular - pageable pairs.
I am currently inclined to keep this difference.
Because now i have
IPageable
{
getCurrentPage();
setCurrentPage(int);
getPageCount();
}
and i think i will make this one:
IRangePageable extends IPageable
{
getRowsPerPage();
getMaxRows();
}
instead of
IRangePageable extends IPageable
{
setRowsPerPage(int);
getMaxRows();
}
i think setting the number of rows a page should display is a
property of the View that displays them Not something of the
Navigation/Navigator that is attached to it..
But if others are more in for pushing the rows per page
instead of
pulling then i could change my mind.
and ListView doesn't have to be a RangePageable it
could also be
used to display a panel and that it is only a Pageable
So giving a
listview by default the RangePageable interface is also wrong.
ListView could be directly an IPageable and PageableListView an
IRangePageable.
looks that logical?
johan
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-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user
-------------------------------------------------------
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-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user
-------------------------------------------------------
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-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user
--
Christian Essl
___________________________________________________________
Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier
anmelden: http://mail.yahoo.de
-------------------------------------------------------
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-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user
-------------------------------------------------------
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-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user
-------------------------------------------------------
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-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user