Mercurial > pub > Impl
view Lib/Form/ItemId.pm @ 37:c2e7f7c96bcd
performance improvements, DOM reworked (a little)
author | Sergey |
---|---|
date | Mon, 23 Nov 2009 00:59:06 +0300 |
parents | 03e58a454b20 |
children | 16ada169ca75 |
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;