aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Reaction/UI/ViewPort/Action.pm
diff options
context:
space:
mode:
authormatthewt <matthewt@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-02-07 15:58:53 +0000
committermatthewt <matthewt@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-02-07 15:58:53 +0000
commitd9a3266fb7015bb1211171c1c113df3b1b7cd700 (patch)
tree719e70251d6c17719e44b7388e6a23bc40c26a45 /lib/Reaction/UI/ViewPort/Action.pm
parenta945c8a0dce9badd5dd743795da28f7fce2a74a7 (diff)
downloadreaction-d9a3266fb7015bb1211171c1c113df3b1b7cd700.tar.gz
reaction-d9a3266fb7015bb1211171c1c113df3b1b7cd700.zip
complete MooseX::Types port
Diffstat (limited to 'lib/Reaction/UI/ViewPort/Action.pm')
-rw-r--r--lib/Reaction/UI/ViewPort/Action.pm27
1 files changed, 23 insertions, 4 deletions
diff --git a/lib/Reaction/UI/ViewPort/Action.pm b/lib/Reaction/UI/ViewPort/Action.pm
index acd8c94..4b58173 100644
--- a/lib/Reaction/UI/ViewPort/Action.pm
+++ b/lib/Reaction/UI/ViewPort/Action.pm
@@ -2,6 +2,10 @@ package Reaction::UI::ViewPort::Action;
use Reaction::Class;
+use aliased 'Reaction::UI::ViewPort::Object';
+
+BEGIN { *DEBUG_EVENTS = \&Reaction::UI::ViewPort::DEBUG_EVENTS; }
+
use aliased 'Reaction::UI::ViewPort::Field::Mutable::Text';
use aliased 'Reaction::UI::ViewPort::Field::Mutable::Array';
use aliased 'Reaction::UI::ViewPort::Field::Mutable::String';
@@ -16,7 +20,7 @@ use aliased 'Reaction::UI::ViewPort::Field::Mutable::ChooseMany';
#use aliased 'Reaction::UI::ViewPort::Field::Mutable::File';
#use aliased 'Reaction::UI::ViewPort::Field::Mutable::TimeRange';
-class Action is 'Reaction::UI::ViewPort::Object', which {
+class Action is Object, which {
has model => (is => 'ro', isa => 'Reaction::InterfaceModel::Action', required => 1);
#has '+model' => (isa => 'Reaction::InterfaceModel::Action');
@@ -44,11 +48,26 @@ class Action is 'Reaction::UI::ViewPort::Object', which {
implements can_apply => as {
my ($self) = @_;
foreach my $field ( @{ $self->fields } ) {
- return 0 if $field->needs_sync;
+ if ($field->needs_sync) {
+ if (DEBUG_EVENTS) {
+ $self->ctx->log->debug(
+ "Failing out of can_apply on ${\ref($self)} at ${\$self->location}"
+ ." because field for ${\$field->attribute->name} needs sync"
+ );
+ }
+ }
# if e.g. a datetime field has an invalid value that can't be re-assembled
# into a datetime object, the action may be in a consistent state but
# not synchronized from the fields; in this case, we must not apply
}
+ if (DEBUG_EVENTS) {
+ my $ret = $self->model->can_apply;
+ $self->ctx->log->debug(
+ "model can_apply returned ${ret}"
+ ." on ${\ref($self)} at ${\$self->location}"
+ );
+ return $ret;
+ }
return $self->model->can_apply;
};
@@ -121,7 +140,7 @@ class Action is 'Reaction::UI::ViewPort::Object', which {
$self->_build_simple_field(attribute => $attr, class => Boolean, %$args);
};
- implements _build_fields_for_type_SimpleStr => as {
+ implements _build_fields_for_type_Reaction_Types_Core_SimpleStr => as {
my ($self, $attr, $args) = @_;
$self->_build_simple_field(attribute => $attr, class => String, %$args);
};
@@ -140,7 +159,7 @@ class Action is 'Reaction::UI::ViewPort::Object', which {
}
};
- implements _build_fields_for_type_Password => as {
+ implements _build_fields_for_type_Reaction_Types_Core_Password => as {
my ($self, $attr, $args) = @_;
$self->_build_simple_field(attribute => $attr, class => Password, %$args);
};