diff options
| -rw-r--r-- | demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.page | 121 | ||||
| -rw-r--r-- | demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.php | 46 | ||||
| -rw-r--r-- | framework/Exceptions/messages.txt | 1 | ||||
| -rw-r--r-- | framework/Web/UI/TControl.php | 2 | ||||
| -rw-r--r-- | framework/Web/UI/WebControls/TListControl.php | 4 | 
5 files changed, 111 insertions, 63 deletions
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.page index 43ab16f7..776fc073 100644 --- a/demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.page +++ b/demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.page @@ -1,81 +1,92 @@  <com:TContent ID="body">
 -<h1>TTextBox Samples</h1>
 +<h1>TListBox Samples</h1>
  <div class="samplepanel">
 -<div class="sampletitle">SingleLine and Password Text Boxes</div>
 -
 -Text box with default settings:
 -<com:TTextBox />
 -<br/>
 -
 -Password text box:
 -<com:TTextBox TextMode="Password" />
 +<div class="sampletitle"><tt>Single</tt> Selection List Box</div>
 +List box with default settings:<br/>
 +<com:TListBox />
  <br/>
 -Text box with customized color, font, columns, maximum length:
 -<com:TTextBox
 -	Text="text"
 -	ForeColor="yellow"
 -	BackColor="blue"
 -	Font.Size="14pt"
 -	Columns="4"
 -	MaxLength="6"
 -/>
 +List box with initial items:<br/>
 +<com:TListBox>
 +  <com:TListItem Value="value 1" Text="item 1" />
 +  <com:TListItem Value="value 2" Text="item 2" Selected="true" />
 +  <com:TListItem Value="value 3" Text="item 3" />
 +  <com:TListItem Value="value 4" Text="item 4" />
 +</com:TListBox>
  <br/>
 -Disabled text box:
 -<com:TTextBox Text="disabled" Enabled="false" />
 +List box with customized row number, color and font:<br/>
 +<com:TListBox Rows="3" ForeColor="blue" Font.Size="14pt">
 +  <com:TListItem Value="value 1" Text="item 1" />
 +  <com:TListItem Value="value 2" Text="item 2" Selected="true" />
 +  <com:TListItem Value="value 3" Text="item 3" />
 +  <com:TListItem Value="value 4" Text="item 4" />
 +</com:TListBox>
  <br/>
 -Read-only text box:
 -<com:TTextBox Text="read only" ReadOnly="true" />
 +Auto postback list box:<br/>
 +<com:TListBox AutoPostBack="true" SelectedIndexChanged="selectionChanged">
 +  <com:TListItem Value="value 1" Text="item 1" />
 +  <com:TListItem Value="value 2" Text="item 2" Selected="true" />
 +  <com:TListItem Value="value 3" Text="item 3" />
 +  <com:TListItem Value="value 4" Text="item 4" />
 +</com:TListBox>
 +<com:TLabel ID="SelectionResult" ForeColor="red" />
  <br/>
 -Auto postback text box:
 -<com:TTextBox Text="change me" AutoPostBack="true" TextChanged="textChanged" />
 +List box's behavior upon postback:<br/>
 +<com:TListBox ID="ListBox1">
 +  <com:TListItem Value="value 1" Text="item 1" />
 +  <com:TListItem Value="value 2" Text="item 2" Selected="true" />
 +  <com:TListItem Value="value 3" Text="item 3" />
 +  <com:TListItem Value="value 4" Text="item 4" />
 +</com:TListBox>
 +<com:TButton Text="Submit" Click="buttonClicked"/>
 +<com:TLabel ID="SelectionResult2" ForeColor="red" />
  <br/>
 -
 -Text box's behavior upon postback:
 -<com:TTextBox ID="TextBox1" Text="text" />
 -<com:TButton Text="Submit" Click="submitText" />
 -
  </div>
  <div class="samplepanel">
 -<div class="sampletitle">MultiLine Text Boxes</div>
 -
 -Text box with default settings:<br/>
 -<com:TTextBox TextMode="MultiLine" />
 +<div class="sampletitle"><tt>Multiple</tt> Selection List Box</div>
 +<i>Use Shift + Left Click to change selection</i>
  <br/>
 -
 -Text box with customized dimensions, font and content:<br/>
 -<com:TTextBox TextMode="MultiLine" Rows="6" Columns="60" Font.Italic="true">
 -<prop:Text>
 -This is a multiline text box.
 -In HTML, it is displayed as a textarea.
 -</prop:Text>
 -</com:TTextBox>
 +List box with default settings:<br/>
 +<com:TListBox SelectionMode="Multiple" />
  <br/>
 -Disabled text box:<br/>
 -<com:TTextBox
 -	TextMode="MultiLine"
 -	Text="disabled"
 -	Enabled="false" />
 +List box with initial items:<br/>
 +<com:TListBox SelectionMode="Multiple">
 +  <com:TListItem Value="value 1" Text="item 1" />
 +  <com:TListItem Value="value 2" Text="item 2" Selected="true" />
 +  <com:TListItem Value="value 3" Text="item 3" />
 +  <com:TListItem Value="value 4" Text="item 4" Selected="true" />
 +</com:TListBox>
  <br/>
 -Read-only text box with text-wrapping disabled:<br/>
 -<com:TTextBox
 -	TextMode="MultiLine"
 -	Text="This is a read-only text box with text-wrapping disabled."
 -	ReadOnly="true"
 -	Wrap="false"/>
 +Auto postback list box:<br/>
 +<br/>
 +<com:TListBox AutoPostBack="true" SelectionMode="Multiple" SelectedIndexChanged="multiSelectionChanged">
 +  <com:TListItem Value="value 1" Text="item 1" />
 +  <com:TListItem Value="value 2" Text="item 2" Selected="true" />
 +  <com:TListItem Value="value 3" Text="item 3" />
 +  <com:TListItem Value="value 4" Text="item 4" Selected="true" />
 +</com:TListBox>
 +<br/>
 +<com:TLabel ID="MultiSelectionResult" ForeColor="red" />
  <br/>
 -Auto postback text box:<br/>
 -<com:TTextBox TextMode="MultiLine" Text="change me" AutoPostBack="true" TextChanged="textChanged" />
 +List box's behavior upon postback:<br/>
 +<com:TListBox ID="ListBox2" SelectionMode="Multiple">
 +  <com:TListItem Value="value 1" Text="item 1" />
 +  <com:TListItem Value="value 2" Text="item 2" Selected="true" />
 +  <com:TListItem Value="value 3" Text="item 3" />
 +  <com:TListItem Value="value 4" Text="item 4" Selected="true" />
 +</com:TListBox>
 +<com:TButton Text="Submit" Click="buttonClicked2" />
  <br/>
 -</div>
 +<com:TLabel ID="MultiSelectionResult2" ForeColor="red" />
 +</div>
  </com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.php b/demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.php index 5f812c9e..6b1d07e1 100644 --- a/demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.php +++ b/demos/quickstart/protected/pages/Controls/Samples/TListBox/Home.php @@ -1,15 +1,51 @@  <?php
 -class Samples extends TPage
 +class Home extends TPage
  {
 -	public function textChanged($sender,$param)
 +	public function selectionChanged($sender,$param)
  	{
 -		$sender->Text="text changed";
 +		$index=$sender->SelectedIndex;
 +		$value=$sender->SelectedValue;
 +		$text=$sender->SelectedItem->Text;
 +		$this->SelectionResult->Text="Your selection is (Index: $index, Value: $value, Text: $text).";
  	}
 -	public function submitText($sender,$param)
 +	public function buttonClicked($sender,$param)
  	{
 -		$this->TextBox1->Text="You just entered '".$this->TextBox1->Text."'.";
 +		$index=$this->ListBox1->SelectedIndex;
 +		$value=$this->ListBox1->SelectedValue;
 +		$text=$this->ListBox1->SelectedItem->Text;
 +		$this->SelectionResult2->Text="Your selection is (Index: $index, Value: $value, Text: $text).";
 +	}
 +
 +	public function multiSelectionChanged($sender,$param)
 +	{
 +		$indices=$sender->SelectedIndices;
 +		$result='';
 +		foreach($indices as $index)
 +		{
 +			$item=$sender->Items[$index];
 +			$result.="(Index: $index, Value: $item->Value, Text: $item->Text)\n";
 +		}
 +		if($result==='')
 +			$this->MultiSelectionResult->Text='Your selection is empty.';
 +		else
 +			$this->MultiSelectionResult->Text='Your selection is: '.$result;
 +	}
 +
 +	public function buttonClicked2($sender,$param)
 +	{
 +		$indices=$this->ListBox2->SelectedIndices;
 +		$result='';
 +		foreach($indices as $index)
 +		{
 +			$item=$this->ListBox2->Items[$index];
 +			$result.="(Index: $index, Value: $item->Value, Text: $item->Text)\n";
 +		}
 +		if($result==='')
 +			$this->MultiSelectionResult2->Text='Your selection is empty.';
 +		else
 +			$this->MultiSelectionResult2->Text='Your selection is: '.$result;
  	}
  }
 diff --git a/framework/Exceptions/messages.txt b/framework/Exceptions/messages.txt index c31c49d2..8547527f 100644 --- a/framework/Exceptions/messages.txt +++ b/framework/Exceptions/messages.txt @@ -130,6 +130,7 @@ theme_databind_forbidden				= Databind cannot be used in theme '%s' for control  theme_property_readonly					= Skin is being applied to a read-only control property '%s.%s'.
  theme_property_undefined				= Skin is being applied to an inexistent control property '%s.%s'.
 +control_object_reregistered				= Duplicated object ID '%s' found.
  control_id_invalid						= %s.ID '%s' is invalid. Only alphanumeric and underline characters are allowed. The first character must be an alphabetic or underline character.
  control_skinid_unchangeable				= %s.SkinID cannot be modified after a skin has been applied to the control or the child controls have been created.
  control_enabletheming_unchangeable		= %s.EnableTheming cannot be modified after the child controls have been created.
 diff --git a/framework/Web/UI/TControl.php b/framework/Web/UI/TControl.php index 372e87df..545bdf66 100644 --- a/framework/Web/UI/TControl.php +++ b/framework/Web/UI/TControl.php @@ -828,6 +828,8 @@ class TControl extends TComponent  	 */
  	public function registerObject($name,$object)
  	{
 +		if(isset($this->_rf[self::RF_NAMED_OBJECTS][$name]))
 +			throw new TInvalidOperationException('control_object_reregistered',$name);
  		$this->_rf[self::RF_NAMED_OBJECTS][$name]=$object;
  	}
 diff --git a/framework/Web/UI/WebControls/TListControl.php b/framework/Web/UI/WebControls/TListControl.php index 7e81fd6c..ec7df0c9 100644 --- a/framework/Web/UI/WebControls/TListControl.php +++ b/framework/Web/UI/WebControls/TListControl.php @@ -24,6 +24,7 @@ abstract class TListControl extends TDataBoundControl  			$writer->addAttribute('multiple','multiple');
  		if($this->getAutoPostBack() && $page->getClientSupportsJavaScript())
  		{
 +			$writer->addAttribute('id',$this->getClientID());
  			$options = $this->getAutoPostBackOptions();
  			$scripts = $this->getPage()->getClientScript();
  			$postback = $scripts->getPostBackEventReference($this,'',$options,false);
 @@ -387,9 +388,6 @@ abstract class TListControl extends TDataBoundControl  	}
  }
 -
 -
 -
  class TListItemCollection extends TList
  {
  	private $_items=null;
  | 
