/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 . */ #ifndef __com_sun_star_awt_tree_XTreeControl_idl__ #define __com_sun_star_awt_tree_XTreeControl_idl__ #include #include #include #include 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>.

::com::sun::star::view::XSelectionSupplier::getSelection() returns an empty 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 `TRUE` if Node is currently expanded. @param Node the XTreeNode specifying the node to check. @returns `FALSE` if Node or at least one of its parent nodes are collapsed, `TRUE` 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 `TRUE` if Node is currently collapsed. @param Node the XTreeNode specifying the node to check @returns `TRUE` if Node or at least one of its parent nodes are collapsed, `FALSE` 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 an ExpandVetoException. */ void makeNodeVisible( [in] XTreeNode Node ) raises( com::sun::star::lang::IllegalArgumentException, ExpandVetoException ); /** Returns `TRUE` if Node is currently visible.

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

@returns `TRUE` if Node is visible, otherwise `FALSE` @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 an 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. @throws ExpandVetoException if collapsing Node failed because at least one of the registered XTreeExpansionListener raised an 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 overridden 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 overridden 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 @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 closest to that location, null if nothing is viewable or there is no model */ XTreeNode getClosestNodeForLocation( [in] long x, [in] long y ); /** returns the rectangle occupied by the visual representation of the given node @param Node the node whose geometry should be obtained @throws ::com::sun::star::lang::IllegalArgumentException if the given node is `NULL`, or does not belong to the tree's data model */ ::com::sun::star::awt::Rectangle getNodeRect( [in] XTreeNode Node ) raises( ::com::sun::star::lang::IllegalArgumentException ); // tree editing /** Returns `TRUE` if one of tree's nodes is being currently edited.

The node that is being edited can be obtained using com::sun::star::view::XSelectionSupplier::getSelection(). @returns `TRUE` 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 `TRUE` if editing was in progress and is now stopped, `FALSE` 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 `FALSE` 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 Listener a XTreeEditListener that will be notified before and after a tree node is edited. */ void addTreeEditListener( [in] XTreeEditListener Listener ); /** Removes a XTreeEditListener. @param Listener the XTreeEditListener to remove */ void removeTreeEditListener( [in] XTreeEditListener Listener ); }; }; }; }; }; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */