SwatViewSelector Demo

Radio Selector (Select One)

 FruitMakes JamMakes Pie
Apple Yes
Orange  
StrawberryYes 

Checkbox Selector (Select Many)

 FruitMakes JamMakes Pie
Apple Yes
Orange  
StrawberryYes 

SwatML for this demo:


<?xml version="1.0" standalone="no"?>
<!DOCTYPE swatml SYSTEM "http://swat.silverorange.com/swatml1.dtd">
<swatml>
  <widget class="SwatForm" id="my_form">

    <widget class="SwatFrame">
      <property name="title">Radio Selector (Select One)</property>

      <widget class="SwatTableView" id="radio_table_view">
        <object class="SwatTableViewColumn">
          <object class="SwatRadioButtonCellRenderer">
            <property name="value" type="data">title</property>
          </object>
        </object>
        <object class="SwatTableViewColumn">
          <property name="title">Fruit</property>
          <object class="SwatTextCellRenderer">
            <property name="text" type="data">title</property>
          </object>
        </object>
        <object class="SwatTableViewColumn">
          <property name="title">Makes Jam</property>
          <object class="SwatBooleanCellRenderer">
            <property name="value" type="data">makes_jam</property>
          </object>
        </object>
        <object class="SwatTableViewColumn">
          <property name="title">Makes Pie</property>
          <object class="SwatBooleanCellRenderer">
            <property name="value" type="data">makes_pie</property>
          </object>
        </object>
      </widget>

    </widget>

    <widget class="SwatFrame">
      <property name="title">Checkbox Selector (Select Many)</property>

      <widget class="SwatTableView" id="checkbox_table_view">
        <object class="SwatTableViewCheckboxColumn">
          <object class="SwatCheckboxCellRenderer">
            <property name="value" type="data">title</property>
          </object>
        </object>
        <object class="SwatTableViewColumn">
          <property name="title">Fruit</property>
          <object class="SwatTextCellRenderer">
            <property name="text" type="data">title</property>
          </object>
        </object>
        <object class="SwatTableViewColumn">
          <property name="title">Makes Jam</property>
          <object class="SwatBooleanCellRenderer">
            <property name="value" type="data">makes_jam</property>
          </object>
        </object>
        <object class="SwatTableViewColumn">
          <property name="title">Makes Pie</property>
          <object class="SwatBooleanCellRenderer">
            <property name="value" type="data">makes_pie</property>
          </object>
        </object>
      </widget>

    </widget>

  </widget>
</swatml>

PHP for this demo:


<?php

/* vim: set noexpandtab tabstop=4 shiftwidth=4 foldmethod=marker: */

require_once 'Demo.php';

/**
 * A demo using view selectors
 *
 * @package   SwatDemo
 * @copyright 2009 silverorange
 * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
 */
class ViewSelectorDemo extends Demo
{
  
// {{{ public function buildDemoUI();

  
public function buildDemoUI(SwatUI $ui)
  {
    
$data = array(
      array(
'images/apple.png'2828'Apple''red'falsetrue,
        new 
SwatDate('2005-09-01'), 0.5),
      array(
'images/orange.png'2828'Orange''orange'falsefalse,
        new 
SwatDate('2005-04-20'), 0.75),
      array(
'images/strawberry.png'2828'Strawberry''red'truefalse,
        new 
SwatDate('2005-07-05'), 0.6)
    );

    
$table_store = new SwatTableStore();

    foreach (
$data as $datum) {
      
$fruit = new FruitObject();
      
$fruit->image $datum[0];
      
$fruit->image_width $datum[1];
      
$fruit->image_height $datum[2];
      
$fruit->title $datum[3];
      
$fruit->color $datum[4];
      
$fruit->makes_jam $datum[5];
      
$fruit->makes_pie $datum[6];
      
$fruit->harvest_date $datum[7];
      
$fruit->cost $datum[8];

      
$table_store->addRow($fruit);
    }

    
$table_view $ui->getWidget('radio_table_view');
    
$table_view->model $table_store;

    
$table_view $ui->getWidget('checkbox_table_view');
    
$table_view->model $table_store;
  }

  
// }}}
}

/**
 * A demo using view selectors
 *
 * @package   SwatDemo
 * @copyright 2009 silverorange
 * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
 */
class FruitObject
{
  
// {{{ public properties

  
public $image '';
  public 
$image_width 0;
  public 
$image_height 0;
  public 
$title '';
  public 
$color '';
  public 
$makes_jam false;
  public 
$makes_pie false;
  public 
$harvest_date null;
  public 
$cost 0;

  
// }}}
}

?>