}
1;
+
+__END__;
+
+=head1 NAME
+
+Reaction::UI::Widget::Controller
+
+=head1 DESCRIPTION
+
+Base Reaction Controller class. Inherits from:
+
+=over 4
+
+=item L<Catalyst::Controller>
+=item L<Catalyst::Component::ACCEPT_CONTEXT>
+=item L<Reaction::Object>
+
+=back
+
+=head1 METHODS
+
+=head2 push_viewport $vp_class, %args
+
+Will create a new instance of $vp_class with the arguments of %args merged in with
+any arguments in the ViewPort attribute of the current Catalyst action
+(also accessible through the controller config), add it to the main FocusStack
+(C<$c-E<gt>stash-E<gt>{focus_stack}>) and return the instantiated viewport.
+
+TODO: explain how next_action as a scalar gets converted to the redirect arrayref thing
+
+=head2 pop_viewport
+
+=head2 pop_viewport_to $vp
+
+Shortcut to subs of the same name in the main FocusStack (C<$c-E<gt>stash-E<gt>{focus_stack}>)
+
+=head2 redirect_to $c, $to, $captures, $args, $attrs
+
+If C<$to> is a string then redirects to the action of the same name in the current
+ controller (C<$c-E<gt>controller> not C<$self>).
+
+If C<$to> isa L<Catalyst::Action>
+it will pass the argument directly to C<$c-E<gt>uri_for>.
+
+If C<$to> is an ArrayRef with two items it will treat the first as a Controller name
+and the second as the action name whithin that controller.
+
+C<$captures>, C<$args>, and C<$attrs> are equivalent to the same arguments in
+C<uri_for>. If left blank the current request captures and args will be used
+and C<$attrs> will be passed as an empty HashRef.
+
+=head1 AUTHORS
+
+See L<Reaction::Class> for authors.
+
+=head1 LICENSE
+
+See L<Reaction::Class> for the license.
+
+=cut