В настоящее время я разрабатываю динамическую LineChart в FLEX 4. Я реализую элемент управления Tree рядом с моей LineChart, которая будет фильтровать поставщик данных LineChart и серию строк.Элемент управления дерева имеет несколько ветвей и, в конечном счете, 5 дочерних (конечных узлов) в нижней части последней ветви.
Мне нужно, чтобы конечные узлы / дочерние элементы отображались в виде флажков внутри элемента управления деревом.Как я понимаю, для этого потребуются переопределения в классе TreeItemRenderer.Здесь я немного запутался в том, как это реализовать.
В настоящее время я могу различать лист и ветви, используя этот код, в моем основном компоненте MXML.Я добавил это, потому что это может быть полезно для некоторых начинающих разработчиков FLEX, таких как я, которые не могут легко найти эту документированную функциональность:
private function treeClick(e:ListEvent):void {
_selectedItem = Tree(e.currentTarget).selectedItem;
if(mainTree.dataDescriptor.isBranch(_selectedItem)) {
Alert.show('branch click');
}
else {
Alert.show('leaf node click');
}
}
Я смотрю на класс переопределения TreeItemRenderer из следующего пример здесь :
В этом примере они переопределяют суперфункцию createChildden, чтобы добавить флажки в элемент управления дерева.
Мой вопрос: Могу ли я переопределить функцию createChildren непосредственно в моем компоненте MXML, и не нужно ли использовать весь файл класса для переопределения этой функции?Должен ли я заново изобрести колесо, чтобы сделать это?
Кроме того, как я могу отличить, что мой treeItem является листовым узлом, а не родительским, в функции переопределения? Iтолько хочу добавить флажки к листовым узлам, как я могу дифференцировать?В следующем примере добавляются флажки для всех ветвей и конечных узлов, но я хочу добавить флажки только для конечных узлов / потомков.Как бы вы подошли к этому?
override protected function createChildren( ): void
{
super.createChildren( );
if( !_checkbox )
{
_checkbox = new CheckBoxExtended( );
_checkbox.allow3StateForUser = false;
_checkbox.addEventListener( MouseEvent.CLICK, onCheckboxClick );
addChild( _checkbox );
}
}
Вот XML, с которым я работаю:
<mx:XMLList id="treeData">
<node label="DAIX">
<node label="Account 1">
<node label="Premise 1">
<node label="Device 1" oid="31" isChecked="false">
</node>
<node label="Device 2" oid="32" isChecked="false">
</node>
</node>
<node label="Premise 2">
<node label="Device 1" oid="41" isChecked="false">
</node>
<node label="Device 2" oid="42" isChecked="false">
</node>
</node>
</node>
<node label="Account 2">
<node label="Premise 1">
<node label="Device 1" oid="31" isChecked="false">
</node>
<node label="Device 2" oid="32" isChecked="false">
</node>
</node>
<node label="Premise 2">
<node label="Device 1" oid="31" isChecked="false">
</node>
<node label="Device 2" oid="32" isChecked="false">
</node>
</node>
</node>
</node>
</mx:XMLList>
Вот мой тег дерева:
<mx:Tree id="mainTree" dataProvider="{treeData}" itemRenderer="TreeCheckBoxItemRenderer" labelField="@label" showRoot="false" width="100%" height="100%" itemClick="treeClick(event)" />