| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef __com_sun_star_awt_tree_TreeControl_idl__ |
| #define __com_sun_star_awt_tree_TreeControl_idl__ |
| |
| #ifndef __com_sun_star_awt_tree_XTreeControl_idl__ |
| #include <com/sun/star/awt/tree/XTreeControl.idl> |
| #endif |
| |
| //============================================================================= |
| |
| module com { module sun { module star { module awt { module tree { |
| |
| //============================================================================= |
| |
| /** A control that displays a set of hierarchical data as an outline. |
| |
| <p> |
| <h4>The Data Model</h4> |
| <p>A specific node in a tree is identified by a <type>XTreeNode</type>. |
| A leaf node is a node without any children and that returns <FALSE/> when calling <member>XTreeNode::hasChildrenOnDemand()</member>. |
| An expanded node is a non-leaf node that will displays its children when all its ancestors are expanded. |
| A collapsed node is one which hides them. |
| A node is visible when all parent nodes are expanded and the node itself is in the display area. |
| </p> |
| |
| <p>The nodes are retrieved from a <type>XTreeDataModel</type>. |
| You can implement it yourself or use the <type>MutableTreeDataModel</type> |
| which uses <type>XMutableTreeNode</type> and <type>XMutableTreeDataModel</type> |
| for a simple and mutable data model. |
| |
| <p>The data model must be set at the <member>TreeControlModel::TreeDataModel</member> property.</p> |
| |
| <h4>Selection</h4> |
| <p>If you are interested in knowing when the selection changes implement a |
| <type scope="com::sun::star::view">XSelectionChangeListener</type> and add the instance with the method |
| <member scope="::com::sun::star::view">XSelectionSupplier::addSelectionChangeListener()</member>. |
| You than will be notified for any selection change. |
| </p> |
| |
| <p> |
| If you are interested in detecting either double-click events or when a user clicks on a node, |
| regardless of whether or not it was selected, you can get the <type scope="com::sun::star::awt">XWindow</type> |
| and add yourself as a <type scope="com::sun::star::awt">XMouseClickHandler</type>. You can use the |
| method <member>XTreeControl::getNodeForLocation()</member> to retrieve the node that was under the |
| mouse at the time the event was fired. |
| </p> |
| |
| <h4>Adding child nodes on demand</h4> |
| <p>If you want to add child nodes to your tree on demand you can do the following. |
| <ul> |
| <li>Make sure the parent node returns <TRUE/> for <member>XTreeNode::hasChildrenOnDemand()</member> either |
| by implementing <type>XTreeNode</type> yourself or if you use the <type>MutableTreeDataModel</type>, |
| use <member>XMutableTreeNode::setHasChildrenOnDemand()</member>.</li> |
| <li>Implement a <type>XTreeExpansionListener</type> and add the instance with the method |
| <member>XTreeControl::addTreeExpansionListener()</member>.</li> |
| </ul> |
| Now you get called when the node will become expanded or collapsed. |
| So on <member>XTreeExpansionListener::treeExpanding()</member> you can |
| check the <type>TreeExpansionEvent</type> if the parent node with children on demand is going to |
| be expanded and in that case add the missing child nodes. You can also veto the expansion or |
| collapsing of a parent node by using the <type>ExpandVetoException</type>. |
| </p> |
| */ |
| service TreeControl: XTreeControl |
| { |
| }; |
| |
| //============================================================================= |
| |
| }; }; }; }; }; |
| |
| #endif |