Ticket #1288 (new enhancement)
Table / Select iterators
| Reported by: | Jani Laakso | Owned by: | Joonas Lehtinen |
|---|---|---|---|
| Priority: | undefined | Milestone: | IT Mill Sponsored Backlog |
| Component: | Server-side framework | Version: | |
| Keywords: | Cc: | ||
| Known Issue description: | |||
| Hours estimate: | Deadline (dd.mm.yyyy): | ||
| Known Issue version (since): | Known Issue title: | ||
| Hours done: | Depends to: | ||
| Affects documentation: | no | ||
| Known Issue workaround: | |||
| Affects release notes: | yes | Contract: | |
Description
Consider adding similar functionality as below at least for Table component. Useful e.g. when user deletes single row from a table, UI should select next "available" row automatically.
This is used in Testing Toolkit.
/**
* Get previous table item id
*
* @param table
* @param id
* @return
*/
@SuppressWarnings("unchecked")
public static Object getPrevTableItemId(Table table, Object id) {
Object prevId = null;
for (Iterator it = table.getItemIds().iterator(); it.hasNext();) {
Object itemId = it.next();
if (itemId.equals(id)) {
return prevId;
}
prevId = itemId;
}
return null;
}
/**
* Get next table item id
*
* @param table
* @param itemId
* @return
*/
@SuppressWarnings("unchecked")
public static Object getNextTableItemId(Table table, Object itemId) {
Iterator it = table.getItemIds().iterator();
for (; it.hasNext();) {
Object nextItemId = it.next();
if (nextItemId.equals(itemId)) {
break;
}
}
return (it.hasNext() ? it.next() : null);
}
/**
* Get next table item id, if next null then return first item.
*
* @param table
* @param itemId
* @return
*/
public static Object getNextTableItemIdWrapped(Table table, Object itemId) {
Object nextItemId = getNextTableItemId(table, itemId);
if (nextItemId != null)
return nextItemId;
else {
// wrapped
nextItemId = table.firstItemId();
// return null if table has only one item
if (itemId.equals(nextItemId))
return null;
else
return nextItemId;
}
}
Change History
Note: See
TracTickets for help on using
tickets.
