Hi David,

In the selectedPathsChanged() method, the second argument is
"previousSelectedPaths".  The current selected paths can be obtained via the
treeView.getSelectedPaths() method, so we don't pass it in the event (we
only pass the data that can no longer be obtained by other means).  Thus, if
you add a debug statement before your for loop in that method, you'll see
that the event is getting fired, but since there was no previous selection,
that sequence is empty.  This can also be seen in the script application
test below.

Cheers,
-T

<?xml version="1.0" encoding="UTF-8"?>

<Window title="TreeViewSelectionListener Test" maximized="true"
    xmlns:wtkx="http://pivot.apache.org/wtkx";
    xmlns:content="org.apache.pivot.wtk.content"
    xmlns="org.apache.pivot.wtk">
    <content>
        <Border styles="{backgroundColor:10, thickness:0, padding:8}">
            <content>
                <Border>
                    <content>
                        <ScrollPane
horizontalScrollBarPolicy="fill_to_capacity">
                            <view>
                                <TreeView selectMode="multi">
                                    <treeData>
                                        <content:TreeBranch
wtkx:id="treeData">
                                            <content:TreeBranch
text="Numbers" icon="@folder.png">
                                                <content:TreeNode text="1"
icon="@page_white.png"/>
                                                <content:TreeNode text="2"
icon="@page_white.png"/>
                                                <content:TreeNode text="3"
icon="@page_white.png"/>
                                            </content:TreeBranch>
                                            <content:TreeBranch
text="Letters" icon="@folder.png">
                                                <content:TreeNode text="A"
icon="@page_white.png"/>
                                                <content:TreeNode text="B"
icon="@page_white.png"/>
                                                <content:TreeNode text="C"
icon="@page_white.png"/>
                                            </content:TreeBranch>
                                        </content:TreeBranch>
                                    </treeData>
                                    <treeViewSelectionListeners>
                                        <wtkx:script>
                                        <![CDATA[
                                            importClass(java.lang.System);

importClass(org.apache.pivot.collections.Sequence);

                                            function
selectedPathAdded(treeView, path) {

System.out.println("selectedPathAdded()");
                                                var node =
Sequence.Tree.get(treeData, path);
                                                System.out.println("  " +
node.text);
                                            }

                                            function
selectedPathsChanged(treeView, previousPaths) {

System.out.println("selectedPathsChanged()");
                                                for (var i = 0; i <
previousPaths.length; i++) {
                                                    var path =
previousPaths.get(i);
                                                    var node =
Sequence.Tree.get(treeData, path);
                                                    System.out.println("  "
+ node.text);
                                                }
                                            }
                                        ]]>
                                        </wtkx:script>
                                    </treeViewSelectionListeners>
                                </TreeView>
                            </view>
                        </ScrollPane>
                    </content>
                </Border>
            </content>
        </Border>
    </content>
</Window>


On Fri, Mar 5, 2010 at 9:13 AM, David McNelis
<[email protected]>wrote:

>  Morning,
>
>
>
> With the TreeViewListener, I’m not seeing an event triggered with my first
> selection in my multi-select tree.  Here is an example of my implementation:
>
> treeview.setTreeData(etNodes);
>
> treeview.setSelectMode(TreeView.SelectMode.*MULTI*);
>
>
>
> treeview.getTreeViewSelectionListeners().add(*new*TreeViewSelectionListener(){
>
>
>
> @Override
>
> *public* *void* selectedPathAdded(TreeView arg0, Path arg1) {
>
> ExtendedTreeNode etNode = (ExtendedTreeNode)Tree.*get*(treeview.getTreeData(),
> arg1);
>
> System.*out*.println(etNode.getValue());
>
> }
>
> @Override
>
> *public* *void* selectedPathRemoved(TreeView arg0, Path arg1) {
>
>
>
> }
>
> @Override
>
> *public* *void* selectedPathsChanged(TreeView arg0, Sequence<Path> paths)
> {
>
> etNode = *new* java.util.ArrayList<BigDecimal>();
>
> *for*(*int* i=0, n=paths.getLength(); i < n; i++){
>
>
>
> ExtendedTreeNode etNode = (ExtendedTreeNode)Tree.*get*(treeview.getTreeData(),
> paths.get(i));
>
> System.*out*.println(etNode.getValue());
>
> }
>
> }
>
> });
>
>
>
> The first click produces no output or errors.  If I click the same element
> a second time, then the etNode.getValue() produces the expected result.  I
> looked at the other treeview based listener classes and didn’t see anything
> that I thought I should be implementing as well.  If its as simple as that,
> what class should I be looking toward?
>

Reply via email to