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

Reply via email to