Scroll to navigation

Prima::DetailedList(3) User Contributed Perl Documentation Prima::DetailedList(3)

NAME

Prima::DetailedList - multi-column list viewer with controlling header widget

SYNOPSIS

use Prima::DetailedList;

        use Prima qw(DetailedList Application);
        my $l = Prima::DetailedList->new(
                columns => 2,
                headers => [ 'Column 1', 'Column 2' ],
                items => [
                        ['Row 1, Col 1', 'Row 1, Col 2'],
                        ['Row 2, Col 1', 'Row 2, Col 2']
                ],
        );
        $l-> sort(1);
        run Prima;

DESCRIPTION

Prima::DetailedList is a descendant of Prima::ListViewer and as such also provides a certain level of abstraction. It overloads the format of items in order to support multi-column ( 2D ) cell span. It also inserts Prima::Widget::Header widget on top of the list so that the user can interactively move, resize, and sort the content of the list. The sorting mechanism is also realized inside the package; it can be activated by the mouse click on a header tab.

Since the class inherits from Prima::ListViewer, some functionality, like 'item search by key', or "get_item_text" method can not operate on 2D lists. Therefore, the mainColumn property is introduced, that selects the column representing the textual data.

API

Events

Called inside the sort method to facilitate custom sorting algorithms. If the callback procedure is willing to sort by COLUMN index, then it must call "clear_event" to signal that the event flow must stop. The DIRECTION is a boolean flag, specifying whether the sorting must be performed in ascending ( 1 ) or descending ( 0 ) order.

The callback procedure must operate on the internal storage of "{items}", which is an array of arrays of scalars.

The default action is the literal sorting algorithm where the precedence is arbitrated by the "cmp" operator ( see "Equality Operators" in perlop ) .

Properties

An array of the "ta::" align constants where each defines the column alignment. If an item in the array is undef, it means that the value of the "align" property must be used.
Manages the number of columns in items. If set-called, and the new number is different from the old number, both items and headers are restructured.

Default value: 0

Assigns the header class.

Create-only property.

Default value: "Prima::Widget::Header"

Assigns a hash of properties passed to the header widget during the creation.

Create-only property.

Assigns list of delegated notifications to the header widget.

Create-only property.

An array of strings passed to the header widget as column titles.
An array of arrays of scalars of any kind. The default behavior, however, assumes that the scalars are strings. The data direction is from left to right and from top to bottom.
Selects the column responsible for textual representation of all the data. When the user clicks a header tab "mainColumn" is automatically changed to the corresponding column.

Default value: 0

Methods

Sorts items by the COLUMN index in ascending order. If COLUMN is not specified, sorts by the last specified column, or by #0 if it is the first "sort" invocation.

If the COLUMN was specified, and the last specified column equals to COLUMN, the sort direction is reversed.

The method does not perform sorting itself, but calls the Sort notification, so that the sorting algorithms can be customized.

AUTHOR

Dmitry Karasik, <dmitry@karasik.eu.org>.

SEE ALSO

Prima, Prima::Lists, Prima::Widget::Header, examples/sheet.pl

2024-02-01 perl v5.38.2