/**
  * Class constructor
  * Creates the page
  */
 function __construct()
 {
     parent::__construct();
     $this->form = new TForm();
     $list1 = new TSortList('list1');
     $list2 = new TSortList('list2');
     $list1->addItems(array('1' => 'One', '2' => 'Two', '3' => 'Three'));
     $list2->addItems(array('a' => 'A', 'b' => 'B', 'c' => 'C'));
     $list1->setSize(200, 100);
     $list2->setSize(200, 100);
     $list1->connectTo($list2);
     $list2->connectTo($list1);
     // creates the action button
     $button1 = new TButton('action1');
     $button1->setAction(new TAction(array($this, 'onSave')), 'Save');
     $button1->setImage('ico_save.png');
     $table = new TTable();
     $row = $table->addRow();
     $row->addCell($list1);
     $row->addCell($list2);
     $table->addRow()->addCell($button1);
     $this->form->setFields(array($list1, $list2, $button1));
     $this->form->add($table);
     // wrap the page content using vertical box
     $vbox = new TVBox();
     $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
     $vbox->add($this->form);
     parent::add($vbox);
 }
 /**
  * Class Constructor
  * @param  $name     widget's name
  * @param  $database database name
  * @param  $model    model class name
  * @param  $key      table field to be used as key in the combo
  * @param  $value    table field to be listed in the combo
  * @param  $ordercolumn column to order the fields (optional)
  * @param  $criteria criteria (TCriteria object) to filter the model (optional)
  */
 public function __construct($name, $database, $model, $key, $value, $ordercolumn = NULL, TCriteria $criteria = NULL)
 {
     // executes the parent class constructor
     parent::__construct($name);
     // carrega objetos do banco de dados
     TTransaction::open($database);
     // instancia um repositório de Estado
     $repository = new TRepository($model);
     if (is_null($criteria)) {
         $criteria = new TCriteria();
     }
     $criteria->setProperty('order', isset($ordercolumn) ? $ordercolumn : $key);
     // carrega todos objetos
     $collection = $repository->load($criteria, FALSE);
     // adiciona objetos na combo
     if ($collection) {
         $items = array();
         foreach ($collection as $object) {
             $items[$object->{$key}] = $object->{$value};
         }
         parent::addItems($items);
     }
     TTransaction::close();
 }