simplify value widgets to reduce PROCESS calls, make some classes immutable which...
groditi [Fri, 5 Oct 2007 19:28:51 +0000 (19:28 +0000)]
24 files changed:
lib/ComponentUI/Model/TestModel.pm
lib/ComponentUI/TestModel.pm
lib/ComponentUI/View/Site.pm
lib/Reaction/Meta/Attribute.pm
lib/Reaction/Meta/Class.pm
lib/Reaction/UI/Widget/DisplayField/List.pm
lib/Reaction/UI/Widget/Field.pm
lib/Reaction/UI/Widget/Value.pm
lib/Reaction/UI/Widget/Value/Boolean.pm
lib/Reaction/UI/Widget/Value/Collection.pm
lib/Reaction/UI/Widget/Value/DateTime.pm
lib/Reaction/UI/Widget/Value/List.pm
lib/Reaction/UI/Widget/Value/RelatedObject.pm
share/skin/default/layout/value/boolean.tt
share/skin/default/layout/value/collection.tt
share/skin/default/layout/value/date_time.tt
share/skin/default/layout/value/list.tt
share/skin/default/layout/value/number.tt
share/skin/default/layout/value/related_object.tt
share/skin/default/layout/value/string.tt
share/skin/default/layout/value/text.tt
t/lib/RTest/TestDB/Bar.pm
t/lib/RTest/TestDB/Baz.pm
t/lib/RTest/TestDB/Foo.pm

index deef6d0..3d633f3 100644 (file)
@@ -1,7 +1,13 @@
 package ComponentUI::Model::TestModel;
 
 use lib 't/lib';
-use base 'Catalyst::Model::Reaction::InterfaceModel::DBIC';
+use aliased 'Catalyst::Model::Reaction::InterfaceModel::DBIC';
+
+use Reaction::Class;
+
+class TestModel is DBIC, which {
+
+};
 
 __PACKAGE__->config
   (
index 71c9672..2559776 100644 (file)
@@ -5,7 +5,6 @@ use base 'Reaction::InterfaceModel::Object';
 use Reaction::Class;
 use Reaction::InterfaceModel::Reflector::DBIC;
 
-
 my $reflector = Reaction::InterfaceModel::Reflector::DBIC->new;
 
 $reflector->reflect_schema
@@ -15,4 +14,5 @@ $reflector->reflect_schema
    sources => [qw/Foo Bar Baz/],
   );
 
+
 1;
index fa89c0a..280b41e 100644 (file)
@@ -11,29 +11,3 @@ class Site is TT, which {
 
 __END__;
 
-use Class::MOP;
-
-{
-  my @reflect_widgets = qw(ActionForm ObjectView ListView
-                           Field::File
-                           Field::Password
-                           Field::Text        DisplayField::Text
-                           Field::Number      DisplayField::Number
-                           Field::String      DisplayField::String
-                           Field::Boolean     DisplayField::Boolean
-                           Field::DateTime    DisplayField::DateTime
-                           Field::ChooseOne   DisplayField::RelatedObject
-                           Field::ChooseMany  DisplayField::Collection
-                           Field::HiddenArray DisplayField::List
-                          );
-
-
-  for (@reflect_widgets){
-    my $base = "Reaction::UI::Widget::${_}";
-    my $target = "ComponentUI::View::Site::Widget::${_}";
-    Class::MOP::load_class( $base );
-    $base->meta->create($target, superclasses => [$base]);
-  }
-}
-
-1;
index 9f444df..01540e0 100644 (file)
@@ -43,6 +43,8 @@ around _process_options => sub {
     $super->($class, $name, $options);
 };
 
+__PACKAGE__->meta->make_immutable(inline_constructor => 0);
+
 1;
 
 __END__;
index e963586..27c084f 100644 (file)
@@ -12,4 +12,7 @@ around initialize => sub {
     $super->($class, $pkg, 'attribute_metaclass' => 'Reaction::Meta::Attribute', @_ );
 };
 
+
+__PACKAGE__->meta->make_immutable;
+
 1;
index 3b3d779..e444bd5 100644 (file)
@@ -6,7 +6,7 @@ class List, which {
   widget renders [ qw/label list item/ =>  { viewport => func(self => 'viewport') } ];
   label  renders [ string { $_{viewport}->label } ];
   list   renders [ item over func('viewport', 'value_names') ];
-  item   renders [ string { $_{_} } ];
+  item   renders [ string { $_ } ];
 };
 
 1;
index 11f2c67..aa0abf9 100644 (file)
@@ -16,11 +16,11 @@ class Field, which {
                        viewport => func('self', 'viewport'),  }
                  ];
 
+  field   renders [ string { $_{viewport}->value },   ];
+
   label   renders [ string { $_{viewport}->label   }, ];
   message renders [ string { $_{viewport}->message }, ];
 
-  field  renders [ string { $_{viewport}->value },  ];
-
 };
 
 1;
index 07db1c0..a968279 100644 (file)
@@ -3,8 +3,12 @@ package Reaction::UI::Widget::Value;
 use Reaction::UI::WidgetClass;
 
 class Value, which {
-  widget renders [ qw/value/ => { viewport => func(self => 'viewport') } ];
-  value  renders [ string { $_{viewport}->value } ];
+  widget renders [ string {""} ],
+    { value => sub{
+        my $vp = $_{self}->{viewport};
+        $vp->can('value_string') ? $vp->value_string : $vp->value;
+      }
+    };
 };
 
 1;
index 21a0f3f..392f79d 100644 (file)
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::Value::Boolean;
 use Reaction::UI::WidgetClass;
 
 class Boolean is 'Reaction::UI::Widget::Value', which {
-  value  renders [ string { $_{viewport}->value_string } ];
+
 };
 
 1;
index 073911d..caae18a 100644 (file)
@@ -5,7 +5,7 @@ use Reaction::UI::WidgetClass;
 class Collection, which {
   widget renders [ qw/list/ =>  { viewport => func(self => 'viewport') } ];
   list   renders [ item over func('viewport', 'value_names') ];
-  item   renders [ string { $_ } ];
+  item   renders [ string {""} ], { value => $_ };
 };
 
 1;
index 63159c5..b598c71 100644 (file)
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::Value::DateTime;
 use Reaction::UI::WidgetClass;
 
 class DateTime is 'Reaction::UI::Widget::Value', which {
-  value renders [ string { $_{viewport}->value_string } ];
+
 };
 
 1;
index bd713e4..638cbfb 100644 (file)
@@ -3,9 +3,9 @@ package Reaction::UI::Widget::Value::List;
 use Reaction::UI::WidgetClass;
 
 class List, which {
-  widget renders [ qw/list item/ =>  { viewport => func(self => 'viewport') } ];
+  widget renders [ qw/list/ =>  { viewport => func(self => 'viewport') } ];
   list   renders [ item over func('viewport', 'value_names') ];
-  item   renders [ string { $_{_} } ];
+  item   renders [ string {""} ], { value => $_ };
 };
 
 1;
index 4617514..b7fbd6f 100644 (file)
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::Value::RelatedObject;
 use Reaction::UI::WidgetClass;
 
 class RelatedObject is 'Reaction::UI::Widget::Value', which {
-  value  renders [ string { $_{viewport}->value_string } ];
+
 };
 
 1;
index 1ce3367..310783b 100644 (file)
@@ -1,9 +1,5 @@
 =for layout widget
 
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
 
 =cut
\ No newline at end of file
index d376ecc..c866aa8 100644 (file)
@@ -1,6 +1,6 @@
 =for layout widget
 
-[% list  %]
+[% list %]
 
 =for layout list
 
@@ -10,6 +10,6 @@
 
 =for layout item
 
-<li>[% content | html %]</li>
+<li>[% value | html %]</li>
 
 =cut
index e35741c..0ee0d75 100644 (file)
@@ -1,9 +1,5 @@
 =for layout widget
 
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
 
 =cut
index eea4e02..bd8ad27 100644 (file)
@@ -1,6 +1,6 @@
 =for layout widget
 
-[% list  %]
+[% list %]
 
 =for layout list
 
@@ -10,6 +10,6 @@
 
 =for layout item
 
-<li>[% content | html %]</li>
+<li>[% value | html %]</li>
 
 =cut
\ No newline at end of file
index e35741c..0ee0d75 100644 (file)
@@ -1,9 +1,5 @@
 =for layout widget
 
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
 
 =cut
index e35741c..0ee0d75 100644 (file)
@@ -1,9 +1,5 @@
 =for layout widget
 
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
 
 =cut
index 1ce3367..310783b 100644 (file)
@@ -1,9 +1,5 @@
 =for layout widget
 
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
 
 =cut
\ No newline at end of file
index 1ce3367..310783b 100644 (file)
@@ -1,9 +1,5 @@
 =for layout widget
 
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
 
 =cut
\ No newline at end of file
index 4e22d06..1af3f05 100644 (file)
@@ -31,4 +31,7 @@ __PACKAGE__->belongs_to(
   { 'foreign.id' => 'self.foo_id' }
 );
 
+__PACKAGE__->meta->make_immutable;
+
+
 1;
index 848cb4f..47cc019 100644 (file)
@@ -26,4 +26,6 @@ __PACKAGE__->set_primary_key('id');
 __PACKAGE__->has_many('links_to_foo_list' => 'RTest::TestDB::FooBaz', 'baz');
 __PACKAGE__->many_to_many('foo_list' => 'links_to_foo_list' => 'foo');
 
+__PACKAGE__->meta->make_immutable;
+
 1;
index 5733054..7e3cd2f 100644 (file)
@@ -39,4 +39,7 @@ __PACKAGE__->many_to_many('baz_list' => 'links_to_baz_list' => 'baz');
   *get_baz_list = sub { [ shift->baz_list->all ] };
 }
 
+
+__PACKAGE__->meta->make_immutable;
+
 1;