9c3c69ea7823b2d77f5e9893e1a8b459dfbc3c43
[catagits/Reaction.git] / lib / Reaction / UI / Widget.pm
1 package Reaction::UI::Widget;
2
3 use Reaction::Class;
4 use aliased 'Reaction::UI::ViewPort';
5 use aliased 'Reaction::UI::View';
6 use aliased 'Reaction::UI::LayoutSet';
7
8 class Widget which {
9
10   has 'view' => (isa => View, is => 'ro', required => 1);
11   has 'layout_set' => (isa => LayoutSet, is => 'ro', required => 1);
12
13   implements 'render' => as {
14     my ($self, $rctx, $passed_args) = @_;
15     my $args = { self => $self, %$passed_args };
16     $self->render_widget($rctx, $args);
17   };
18
19   implements 'render_viewport' => as {
20     my ($self, $rctx, $args) = @_;
21     my $vp = $args->{'_'};
22     $self->view->render_viewport($rctx, $vp);
23   };
24
25 };
26
27 1;
28
29 =head1 NAME
30
31 Reaction::UI::Widget
32
33 =head1 DESCRIPTION
34
35 =head1 AUTHORS
36
37 See L<Reaction::Class> for authors.
38
39 =head1 LICENSE
40
41 See L<Reaction::Class> for the license.
42
43 =cut