Subversion-Projekte lars-tiefland.prado

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php

Prado::using('Application.pages.ClassDefinition');

class Home extends TPage
{
        private $_classDefinition=null;

        public function getClassDefinition()
        {
                if(!$this->_classDefinition)
                        $this->_classDefinition=new ClassDefinition;
                return $this->_classDefinition;
        }

        public function onInit($param)
        {
                parent::onInit($param);
                if(!$this->IsPostBack)
                {
                        $properties=$this->ClassDefinition->Properties;
                        $properties[]=new PropertyDefinition;
                        $properties[]=new PropertyDefinition;
                        $properties[]=new PropertyDefinition;
                        $this->PropertyList->DataSource=$properties;
                        $this->dataBind();
                }
        }

        public function propertyAction($sender,$param)
        {
                if($param->CommandName==='add')
                        $this->ClassDefinition->Properties->add(new PropertyDefinition);
                if($param->CommandName==='remove')
                        $this->ClassDefinition->Properties->removeAt($param->CommandParameter);
                else if($param->CommandName==='up')
                {
                        $property=$this->ClassDefinition->Properties->itemAt($param->CommandParameter);
                        $this->ClassDefinition->Properties->removeAt($param->CommandParameter);
                        $this->ClassDefinition->Properties->insertAt($param->CommandParameter-1,$property);
                }
                else if($param->CommandName==='down')
                {
                        $property=$this->ClassDefinition->Properties->itemAt($param->CommandParameter);
                        $this->ClassDefinition->Properties->removeAt($param->CommandParameter);
                        $this->ClassDefinition->Properties->insertAt($param->CommandParameter+1,$property);
                }
                $this->PropertyList->DataSource=$this->ClassDefinition->Properties;
                $this->PropertyList->dataBind();
        }

        public function eventAction($sender,$param)
        {
                if($param->CommandName==='add')
                        $this->ClassDefinition->Events->add(new EventDefinition);
                else if($param->CommandName==='remove')
                        $this->ClassDefinition->Events->removeAt($param->CommandParameter);
                else if($param->CommandName==='up')
                {
                        $property=$this->ClassDefinition->Events->itemAt($param->CommandParameter);
                        $this->ClassDefinition->Events->removeAt($param->CommandParameter);
                        $this->ClassDefinition->Events->insertAt($param->CommandParameter-1,$property);
                }
                else if($param->CommandName==='down')
                {
                        $property=$this->ClassDefinition->Events->itemAt($param->CommandParameter);
                        $this->ClassDefinition->Events->removeAt($param->CommandParameter);
                        $this->ClassDefinition->Events->insertAt($param->CommandParameter+1,$property);
                }
                $this->EventList->DataSource=$this->ClassDefinition->Events;
                $this->EventList->dataBind();
        }

        public function onLoad($param)
        {
                parent::onLoad($param);
                //if($this->IsPostBack && $this->IsValid)
                if($this->IsPostBack)
                {
                        $def=$this->ClassDefinition;
                        $def->reset();
                        $def->ClassName=$this->ClassName->Text;
                        $def->ParentClass=$this->ParentClass->Text;
                        $def->Interfaces=$this->Interfaces->Text;
                        $def->Comments=$this->Comments->Text;
                        $def->Author=$this->AuthorName->Text;
                        $def->Email=$this->AuthorEmail->Text;
                        foreach($this->PropertyList->Items as $item)
                        {
                                $property=new PropertyDefinition;
                                $property->Name=$item->PropertyName->Text;
                                $property->Type=$item->PropertyType->Text;
                                $property->DefaultValue=$item->DefaultValue->Text;
                                $property->ReadOnly=$item->ReadOnly->Checked;
                                $property->IsProtected=$item->IsProtected->Checked;
                                $property->Comments=$item->Comments->Text;
                                $property->Storage=$item->Storage->Text;
                                $def->Properties[]=$property;
                        }
                        foreach($this->EventList->Items as $item)
                        {
                                $event=new EventDefinition;
                                $event->Name=$item->EventName->Text;
                                $event->Comments=$item->Comments->Text;
                                $def->Events[]=$event;
                        }
                }
        }

        public function generateCode($sender,$param)
        {
                $writer=Prado::createComponent('TTextWriter');
                $this->ClassDefinition->render($writer);
                $this->SourceCode->Text=$writer->flush();
        }
}

?>