diff options
author | matthewt <matthewt@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2007-09-12 18:11:34 +0000 |
---|---|---|
committer | matthewt <matthewt@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2007-09-12 18:11:34 +0000 |
commit | 7adfd53f17f66ffe93763e944ed1d3fc52a369dc (patch) | |
tree | 19e599e74419b41cbbe651fd226b81e8b73551d3 /lib/Reaction/UI/Widget/ListView.pm | |
parent | c728c97cb1061330e63c7cc048e768ef74988fe6 (diff) | |
download | reaction-7adfd53f17f66ffe93763e944ed1d3fc52a369dc.tar.gz reaction-7adfd53f17f66ffe93763e944ed1d3fc52a369dc.zip |
moved shit to trunk
Diffstat (limited to 'lib/Reaction/UI/Widget/ListView.pm')
-rw-r--r-- | lib/Reaction/UI/Widget/ListView.pm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/Reaction/UI/Widget/ListView.pm b/lib/Reaction/UI/Widget/ListView.pm new file mode 100644 index 0000000..ab80d93 --- /dev/null +++ b/lib/Reaction/UI/Widget/ListView.pm @@ -0,0 +1,54 @@ +package Reaction::UI::Widget::ListView; + +use Reaction::UI::WidgetClass; +use aliased 'Reaction::UI::ViewPort::ListView' => 'ListView_VP'; + +class ListView which { + + has 'viewport' => (isa => ListView_VP, is => 'ro', required => 1); + + widget renders [ + qw(header body) => { viewport => func(self => 'viewport') } + ]; + + header renders [ header_entry over func(viewport => 'field_names') ]; + + header_entry renders [ string { $_{viewport}->field_label_map->{ $_ } } ]; + + body renders [ row over func(viewport => 'current_page_collection') ]; + + row renders [ + col_entry over func(viewport => 'field_names') => { row => $_ } + ]; + + col_entry renders [ + string { + my $proto = $_{row}->$_; + if (blessed($proto) && $proto->can('display_name')) { + return $proto->display_name; + } + return "${proto}"; + } + ]; + +}; + +1; + +=head1 NAME + +Reaction::UI::Widget::ListView + +=head1 DESCRIPTION + +=head2 viewport + +=head1 AUTHORS + +See L<Reaction::Class> for authors. + +=head1 LICENSE + +See L<Reaction::Class> for the license. + +=cut |