view Lib/Form/ItemId.pm @ 56:117b6956d5a5

Web application in progress
author wizard
date Thu, 04 Mar 2010 15:46:17 +0300
parents 16ada169ca75
children
line wrap: on
line source

package Form::ItemId;
use strict;
use Common;
our @ISA = qw(Object);

BEGIN {
    DeclareProperty Name => ACCESS_READ;
    DeclareProperty Canonical => ACCESS_READ;
    DeclareProperty InstanceID => ACCESS_READ;
    DeclareProperty Parent => ACCESS_READ;
}

sub CTOR {
    my ($this,$name,$instance_id,$parent) = @_;
    
    $this->{$Name} = $name or die new Exception('A name is required for the item id');
    $this->{$InstanceID} = $instance_id;
    $this->{$Parent} = $parent;
    
    $this->{$Canonical} = ($parent && !$parent->isa('Form::ItemId::Root') ? $parent->Canonical.'/':'').$name.(defined $instance_id ? $instance_id : '');
}

sub ToNAVPath {
    my ($this) = @_;
    
    return ($this->{$Parent} ? ($this->{$Parent}->ToNAVPath,$this) : $this);
}

package Form::ItemId::Prev;
our @ISA = qw(Form::ItemId);

sub CTOR {
    my ($this,$parent) = @_;
    $this->SUPER::CTOR('(prev)',undef,$parent);
}

package Form::ItemId::Root;
our @ISA = qw(Form::ItemId);

sub CTOR {
    my ($this,$parent) = @_;
    $this->SUPER::CTOR('(root)',undef,$parent);
}


1;