I found and a bug in the configuration of the Tree component in the Tacos 4.1.0 release.
The Tree component's linkListener parameter is not called when clicking the linkToggle subcomponent.
I was able to trace this down to the Tree.jwc file where the linkToggle subcomponent is configured like this:
<component id="linkToggle" type="DirectLink">
<binding name="listener" value="listener:expansion"/>
<binding name="parameters"
value="ognl:{currentKey, currentNotExpanded}"/>
<binding name="updateComponents"
value="ognl:async ? {keyProvider.getKey(value).toString() } : null" />
<binding name="stateful">false</binding>
<binding name="async" value="async"/>
<!--binding name="renderer"
value="ognl:@net.sf.tacos.link.FixPosLinkRenderer@INSTANCE"/-->
</component>
Looking at the source cross-reference reveals that the expansion listener method only updates the tree's state and does not invoke the linkListener parameter. The contentExpansion() method calls expansion() and then invokes the linkListener binding.
So the fix is to change the Tree.jwc file's configuration of the linkToggle component to:
<component id="linkToggle" type="DirectLink">
<binding name="listener" value="listener:contentExpansion"/>
<binding name="parameters"
value="ognl:{currentKey, currentNotExpanded}"/>
<binding name="updateComponents"
value="ognl:async ? {keyProvider.getKey(value).toString() } : null" />
<binding name="stateful">false</binding>
<binding name="async" value="async"/>
<!--binding name="renderer"
value="ognl:@net.sf.tacos.link.FixPosLinkRenderer@INSTANCE"/-->
</component>
I made this change to the jar file I downloaded and it works.
However, this change should be made to the project and a new release or a patch should be issued so that the Tacos jar file works as advertised. It took a while to find this bug since I thought there was something wrong with my code.