summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwei <>2006-09-30 01:49:58 +0000
committerwei <>2006-09-30 01:49:58 +0000
commit6b1d87352911e43672b46b7a65a3c90dd8e5b8b1 (patch)
treefb37b6b35d082aeee8f1aa96c0bc8824a74e5922
parentb64ee49dc56cbbecccadfc7908dd59ffb95fc0ff (diff)
Fixed #403
-rw-r--r--framework/Web/UI/ActiveControls/TActiveListControlAdapter.php30
-rw-r--r--tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page1
-rw-r--r--tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.php15
-rw-r--r--tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php6
4 files changed, 45 insertions, 7 deletions
diff --git a/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php b/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php
index 9bdef077..49cb07c8 100644
--- a/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php
+++ b/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php
@@ -44,8 +44,11 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo
public function setSelectedIndex($index)
{
if($this->canUpdateClientSide())
+ {
+ $this->updateListItems();
$this->getPage()->getCallbackClient()->select(
$this->getControl(), 'Index', $index);
+ }
}
/**
@@ -56,6 +59,7 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo
{
if($this->canUpdateClientSide())
{
+ $this->updateListItems();
$n = $this->getControl()->getItemCount();
$list = array();
foreach($indices as $index)
@@ -77,8 +81,11 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo
public function setSelectedValue($value)
{
if($this->canUpdateClientSide())
+ {
+ $this->updateListItems();
$this->getPage()->getCallbackClient()->select(
$this->getControl(), 'Value', $value);
+ }
}
/**
@@ -89,6 +96,7 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo
{
if($this->canUpdateClientSide())
{
+ $this->updateListItems();
$list = array();
foreach($values as $value)
$list[] = $value;
@@ -104,7 +112,10 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo
public function clearSelection()
{
if($this->canUpdateClientSide())
+ {
+ $this->updateListItems();
$this->getPage()->getCallbackClient()->select($this->getControl(), 'Clear');
+ }
}
/**
@@ -112,11 +123,14 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo
*/
public function updateListItems()
{
- if($this->canUpdateClientSide() && $this->getControl()->getHasItems())
+ if($this->canUpdateClientSide())
{
$items = $this->getControl()->getItems();
- if($items instanceof TActiveListItemCollection && $items->getListHasChanged())
- $this->getPage()->getCallbackClient()->setListItems($this->getControl(), $items);
+ if($items instanceof TActiveListItemCollection
+ && $items->getListHasChanged())
+ {
+ $items->updateClientSide();
+ }
}
}
}
@@ -183,6 +197,16 @@ class TActiveListItemCollection extends TListItemCollection
}
/**
+ * Update client-side list items.
+ */
+ public function updateClientSide()
+ {
+ $client = $this->getControl()->getPage()->getCallbackClient();
+ $client->setListItems($this->getControl(), $this);
+ $this->_hasChanged=false;
+ }
+
+ /**
* Inserts an item into the collection.
* The new option is added on the client-side during callback.
* @param integer the location where the item will be inserted.
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page
index 8b8962a8..49b18520 100644
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page
@@ -19,6 +19,7 @@
<com:TActiveButton ID="button1" Text="Select Index 3" OnClick="select_index_3" />
<com:TActiveButton ID="button2" Text="Clear selection" OnClick="clear_selections" />
<com:TActiveButton ID="button3" Text="Select Value 'value 2'" OnClick="select_value_2" />
+ <com:TActiveButton ID="button4" Text="Select Item 3 And Sub Item 3" OnClick="select_index_3_plus" />
</div>
<com:TJavascriptLogger />
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.php b/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.php
index 7060d84b..10541885 100644
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.php
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.php
@@ -4,7 +4,7 @@ class ActiveDropDownList extends TPage
{
function list1_changed($sender)
{
- $this->label1->setText("Selection 1: ".$sender->getSelectedValue());
+ $this->label1->setText("Selection 1: ".$sender->getSelectedValue());
$this->addOptionsToList2($sender->getSelectedValue());
}
@@ -19,21 +19,28 @@ class ActiveDropDownList extends TPage
{
$this->label1->setText("Selection 2: ".$sender->getSelectedValue());
}
-
+
function select_index_3()
{
$this->list1->setSelectedIndex(3);
}
-
+
function clear_selections()
{
$this->list1->clearSelection();
}
-
+
function select_value_2()
{
$this->list1->setSelectedValue("value 2");
}
+
+ function select_index_3_plus()
+ {
+ $this->list1->setSelectedValue("value 3");
+ $this->list1_changed($this->list1);
+ $this->list2->setSelectedValue("value 3 - item 3");
+ }
}
?> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php
index 9d3ad9c3..44435199 100644
--- a/tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php
@@ -35,6 +35,12 @@ class ActiveDropDownListTestCase extends SeleniumTestCase
$this->pause(800);
$this->assertText("label1", "Selection 2: value 3 - item 5");
+ $this->click('button4');
+ $this->pause(800);
+ $this->assertSelected('list1', 'item 3');
+ $this->pause(300);
+ $this->assertSelected('list2', 'value 3 - item 3');
+
}
}