/************************************************************************ * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2008 by Sun Microsystems, Inc. * * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: XTreeControl.idl,v $ * $Revision: 1.3 $ * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef __com_sun_star_awt_tree_XTreeControl_idl__ #define __com_sun_star_awt_tree_XTreeControl_idl__ #ifndef __com_sun_star_awt_XControl_idl__ #include #endif #ifndef __com_sun_star_awt_tree_XTreeExpansionListener_idl__ #include #endif #ifndef __com_sun_star_view_XMultiSelectionSupplier_idl__ #include #endif #ifndef __com_sun_star_awt_tree_XTreeEditListener_idl__ #include #endif //============================================================================= module com { module sun { module star { module awt { module tree { //============================================================================= /** An interface to a control that displays a set of hierarchical data as an outline. @see TreeControl */ interface XTreeControl { /** This interfaces provides access to the selection of tree nodes for this control.

valid selection values for this interface are XTreeNode or sequence<XTreeNode>.

XSelectionSupplier::getSelection() returns an emtpy any for no selection, an any with XTreeNode for a single selection and a sequence<XTreeNode> for a multiselection. */ interface ::com::sun::star::view::XMultiSelectionSupplier; // ---------------------------- // expanding/collapsing/visible // ---------------------------- /** Returns if Node is currently expanded. @param Node the XTreeNode specifying the node to check. @returns if Node or at least one of its parent nodes are collapsed, if Node and all of its parent nodes are expanded. @throws ::com::sun::star::lang::IllegalArgumentException if Node is not a valid node of the corresponding XTreeDataModel. */ boolean isNodeExpanded( [in] XTreeNode Node ) raises( ::com::sun::star::lang::IllegalArgumentException ); /** Returns if Node is currently collapsed. @param Node the XTreeNode specifying the node to check @returns if Node or at least one of its parent nodes are collapsed, if Node and all of its parent nodes are expanded @throws ::com::sun::star::lang::IllegalArgumentException if Node is not a valid node of the corresponding XTreeDataModel. */ boolean isNodeCollapsed( [in] XTreeNode Node ) raises( ::com::sun::star::lang::IllegalArgumentException ); /** Ensures that Node is currently visible.

This includes expanding all parent nodes and scroll the control so this node is visible in the controls display area.

@param Node the XTreeNode specifying the node to make visible. @throws ::com::sun::star::lang::IllegalArgumentException if Node is not a valid node of the corresponding XTreeDataModel. @throws ExpandVetoException if Nodecan't be made visible since at least one of the parent nodes are collapsed and expanding failed because at least one of the registered XTreeExpansionListener raised a ExpandVetoException. */ void makeNodeVisible( [in] XTreeNode Node ) raises( com::sun::star::lang::IllegalArgumentException, ExpandVetoException ); /** Returns if Node is currently visible.

Visible means it is either the root or all of its parents are expanded.

@returns if Node is visible, otherwise @throws ::com::sun::star::lang::IllegalArgumentException if Node is not a valid node of the corresponding XTreeDataModel. */ boolean isNodeVisible( [in] XTreeNode Node ) raises( com::sun::star::lang::IllegalArgumentException ); /** Ensures that Node is expanded and visible.

If Node is a leaf node, this will have no effect.

@param Node the XTreeNode identifying a node. @throws ::com::sun::star::lang::IllegalArgumentException if Node is not a valid node of the corresponding XTreeDataModel. @throws ExpandVetoException if expanding Node failed because at least one of the registered XTreeExpansionListener raised a ExpandVetoException. */ void expandNode( [in] XTreeNode Node ) raises( com::sun::star::lang::IllegalArgumentException, ExpandVetoException ); /** Ensures that Node is collapsed. @param Node the XTreeNode identifying a node @throws ::com::sun::star::lang::IllegalArgumentException if Node is not a valid node of the corresponding XTreeDataModel. @raises ExpandVetoException if collapsing Node failed because at least one of the registered XTreeExpansionListener raised a ExpandVetoException. */ void collapseNode( [in] XTreeNode Node ) raises( com::sun::star::lang::IllegalArgumentException, ExpandVetoException ); /** Adds a listener for TreeExpansion events. @param Listener a XTreeExpansionListener that will be notified when a tree node is expanded or collapsed. */ void addTreeExpansionListener( [in] XTreeExpansionListener Listener ); /** Removes a listener for TreeExpansion events. @param Listener the XTreeExpansionListener to remove. */ void removeTreeExpansionListener( [in] XTreeExpansionListener Listener ); /** If the given URL points to a loadable graphic, the graphic is rendered before expanded non leaf nodes.

This can be overriden for individual nodes by XTreeNode::getExpandedGraphicURL()

*/ [attribute] string DefaultExpandedGraphicURL; /** If the given URL points to a loadable graphic, the graphic is rendered before collapsed non leaf nodes.

This can be overriden for individual nodes by XTreeNode::getCollapsedGraphicURL()

*/ [attribute] string DefaultCollapsedGraphicURL; // ------------ // tree geometry // ------------ /** Returns the node at the specified location. @param x an integer giving the number of pixels horizontally from the left edge of the controls display area @param y an integer giving the number of pixels vertically from the top edge of the controls display area @returns the XTreeNode for the node at that location, or 0 if there is no node at the given position */ XTreeNode getNodeForLocation( [in] long x, [in] long y ); /** Returns the node that is closest to x,y.

If no nodes are currently viewable, or there is no model, returns null, otherwise it always returns a valid node. To test if the node is exactly at x, y, use getNodeForLocation(). @param x an integer giving the number of pixels horizontally from the left edge of the controls display area @para y an integer giving the number of pixels vertically from the top edge of the controls display area @returns the XTreeNode for the node closest to that location, null if nothing is viewable or there is no model */ XTreeNode getClosestNodeForLocation( [in] long x, [in] long y ); // ------------ // tree editing // ------------ /** Returns if one of tree's nodes is being currently edited.

The node that is being edited can be obtained using XSelectionSupplier::getSelection(). @returns if the user is currently editing a node */ boolean isEditing(); /** Ends the current editing session.

All registered XTreeEditListener are notified if an editing session was in progress

Has no effect if the tree isn't being edited.

@returns if editing was in progress and is now stopped, if editing was not in progress */ boolean stopEditing(); /** Cancels the current editing session.

Has no effect if the tree isn't being edited.

*/ void cancelEditing(); /** Selects Node and initiates editing.

If TreeControlModel::Editable is or if there are no registered XTreeEditListener, this call has no effect.

Calling this method also ensures that Node will become visible.

@param Node the XTreeNode identifying a node. @throws ::com::sun::star::lang::IllegalArgumentException if Node is not a valid node of the corresponding XTreeDataModel. */ void startEditingAtNode( [in] XTreeNode Node ) raises( ::com::sun::star::lang::IllegalArgumentException ); /** Adds a XTreeEditListener. @param xListener a XTreeEditListener that will be notified before and after a tree node is edited. */ void addTreeEditListener( [in] XTreeEditListener Listener ); /** Removes a XTreeEditListener. @param xListener the XTreeEditListener to remove */ void removeTreeEditListener( [in] XTreeEditListener Listener ); }; //============================================================================= }; }; }; }; }; #endif