That was exactly what i needed.

Thanks again!

2010/12/13 Chris Bartlett <[email protected]>

> Eugene,
>
> OK, I think I understand now.
>
> Is this right?
> - You have a some data that needs to be represented in a TreeView.
> - That data consists of your objects, some of which contain an flag to
> represent some kind of state.
> - You want the TreeView to display this state as a checked checkbox.
>
>
> TreeView maintains an internal list of checked nodes.
> This list can queried with
> - isNodeChecked(Path)
> - getCheckedPaths()
> - getNodeCheckState(Path)
> but can only be altered externally via
> - setNodeChecked(Path, boolean)
>
> So ultimately I think you will need to call setNodeChecked(Path, boolean)
> unless you create a subclass of TreeView and handle the checkbox state
> yourself somehow.
>
> I have attached some sample code to show that this should not be a
> particularly difficult task.  (It was written against the pre-release Pivot
> 2.0 and checked against 1.5.2.)
> You can use the 'userData' property of TreeNode and TreeView to hold a
> reference to your real object.
> You can easily iterate over a tree of data using
> org.apache.pivot.collections.Sequence.Tree.DepthFirstItemIterator.
>
> If required you can register listeners for when the checked state changes
> if you need to update your own object's state.  (Not shown in the demo)
>
> While this example uses the provided TreeView and TreeNode classes, you do
> not have to.
> See here http://pivot.apache.org/tutorials/tree-views.html
> Any object in a TreeView's data set which implements
> org.apache.pivot.collections.List will be treated as a branch. Others will
> be treated as nodes.
>
> Chris
>
> On 12 December 2010 21:02, Eugene Kondrashev 
> <[email protected]>wrote:
>
>> I have one more question regarding TreeView and third point.
>>
>> After reading docs you provided link to, I understood, that i've expressed
>> my thought not clear enough. I mean not enable/disable functionality, but
>> checked/unchecked instead. How can i map my data object 'enable' flag to the
>> checkbox state in suitable way?
>> The confusing thing is that i can't do that at TreeNode creation moment.
>>
>> Thankks, Eugene
>>
>> 2010/12/10 Chris Bartlett <[email protected]>
>>
>>> Eugene,
>>>
>>> Firstly, the Pivot source code for the 1.5.2 release is available on the
>>> download page here
>>> http://pivot.apache.org/download.cgi#1.5.2
>>>
>>> Or from SVN here
>>> http://svn.apache.org/repos/asf/pivot/tags/v1.5.2/
>>>
>>> The latest 2.0 source is here
>>> http://svn.apache.org/repos/asf/pivot/trunk/
>>>
>>> The KitchenSink demo is located in the 'tutorials' project here
>>>
>>> http://svn.apache.org/repos/asf/pivot/tags/v1.5.2/tutorials/src/org/apache/pivot/tutorials/
>>>
>>> http://svn.apache.org/repos/asf/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/
>>>
>>>
>>>
>>> 1) If you are using a org.apache.pivot.wtk.content.TreeViewNodeRenderer
>>> to render the TreeView, then be aware that it has a 'showIcon' property.
>>>
>>> http://svn.apache.org/repos/asf/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/explorer/tools/event_logger_skin.bxml
>>>
>>>
>>> 2)
>>> It sounds like you are trying to replicate the behaviour that can be seen
>>> in the EventLogger window at the bottom right hand side of the
>>> ComponentExplorer window.
>>> http://pivot.apache.org/demos/component-explorer.html
>>>
>>> Have a look here, and search for the following string
>>> '// Propagate check state upwards or downwards as necessary'
>>>
>>> http://svn.apache.org/repos/asf/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/explorer/tools/EventLoggerSkin.java
>>>
>>>
>>> 3)
>>> Are you aware of the disabledCheckmarkFilter and disabledNodeFilter
>>> properties of TableView?
>>>
>>> http://pivot.apache.org/1.5.2/docs/api/org/apache/pivot/wtk/TreeView.html#setDisabledNodeFilter(org.apache.pivot.util.Filter)
>>>
>>> If you provide a Filter which knows how to determine your internal
>>> 'enabled' flag, the TreeView should take care of the rest.
>>> Search for 'checkTreeView.setDisabledNodeFilter(new Filter<TreeNode>() {'
>>> here
>>>
>>> http://svn.apache.org/repos/asf/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/KitchenSink.java
>>>
>>>
>>> Chris
>>>
>>> On 11 December 2010 02:12, Eugene Kondrashev <
>>> [email protected]> wrote:
>>>
>>>> Hi guys!
>>>>
>>>> Ive created a checkmark enabled tree view with mixed mode feature. Here
>>>> I faced with two problems:
>>>> 1. tree node text lable is shiffed relative to checkbox icon. It seems
>>>> like there should be a treeNode icon, but i did not set any icons for the
>>>> node, why it shows that free space bettween check box and a text label?
>>>> 2. I wonder if mixed mode "correct" behaviour is implemented by default.
>>>> By correct behaviour i meen example at
>>>> http://pivot.apache.org/demos/kitchen-sink.html Trees section.
>>>> One of the problem here is that parent node is not getting checked
>>>> automatically when all child nodes are checked by user. And vise versa -
>>>> child nodes are not getting checked while checking parent node.
>>>> I can't find sources of example at kitched-sink page regarding Trees.
>>>> Can you help me with that, please?
>>>>
>>>>
>>>>
>>>> My code wtkx:
>>>> <gsq:GSQCustomerProfileController
>>>>         xmlns:wtkx="http://pivot.apache.org/wtkx";
>>>>         xmlns="org.apache.pivot.wtk"
>>>>         xmlns:gsq="com.mbt.client.gui.pivot.modules">
>>>>     <Border>
>>>>         <content>
>>>>             <TablePane>
>>>>                 <columns>
>>>>                     <TablePane.Column width="-1"/>
>>>>                     <TablePane.Column width="1*"/>
>>>>                 </columns>
>>>>                 <rows>
>>>>                     <TablePane.Row height="-1">
>>>>                         <BoxPane styles="{padding:4, spacing:4,
>>>> fill:true}">
>>>>                             <Border styles="{color:10}">
>>>>                                 <content>
>>>>                                     <ScrollPane
>>>> horizontalScrollBarPolicy="fill" minimumPreferredWidth="70"
>>>>
>>>>  verticalScrollBarPolicy="fill_to_capacity">
>>>>                                         <view>
>>>>                                             <TreeView
>>>> wtkx:id="clustersTree" showMixedCheckmarkState="true"
>>>> checkmarksEnabled="true">
>>>>                                             </TreeView>
>>>>                                         </view>
>>>>                                     </ScrollPane>
>>>>                                 </content>
>>>>                             </Border>
>>>>                         </BoxPane>
>>>>                         <CardPane wtkx:id="criteriaCardPane">
>>>>                         </CardPane>
>>>>                     </TablePane.Row>
>>>>                 </rows>
>>>>             </TablePane>
>>>>         </content>
>>>>     </Border>
>>>> </gsq:GSQCustomerProfileController>
>>>>
>>>> Oh, and one more thing. Let say i have aList of some data object with
>>>> enabled flag as internal field. As I understood from the api, I need to
>>>> create org.apache.pivot.collections.List<TreeBranch> from java.util.List 
>>>> and
>>>> then iterate over tree nodes once again setting enabled flag.. If so that 
>>>> is
>>>> really paintfull.
>>>>
>>>> Perhaps I'm doing something wrong, please tell me if so.
>>>>
>>>>         public void handleResponse(List<Cluster> retrievedClusters) {
>>>>             org.apache.pivot.collections.List<TreeBranch> clusters = new
>>>> LinkedList<TreeBranch>();
>>>>             for (Cluster cluster : retrievedClusters) {
>>>>                 TreeBranch treeBranch = new
>>>> TreeBranch(cluster.getName());
>>>>                 for (Criteria criteria : cluster.getCriteria())
>>>>                     treeBranch.insert(new TreeNode(criteria.getName()),
>>>> 0);
>>>>                 clusters.add(treeBranch);
>>>>             }
>>>>             clustersTree.setTreeData(clusters);
>>>>          }
>>>>
>>>> Thanks,
>>>> Eugene
>>>>
>>>
>>>
>>
>

Reply via email to