Ticket #1288 (new enhancement)

Opened 12 months ago

Last modified 8 months ago

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

Changed 10 months ago by Jani Laakso

Testing Tools Server uses these, check code from there..

Changed 8 months ago by Joonas Lehtinen

  • milestone set to IT Mill Sponsored Backlog
Note: See TracTickets for help on using tickets.