From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- .../com/sun/star/awt/tree/ExpandVetoException.idl | 44 ++++ .../com/sun/star/awt/tree/MutableTreeDataModel.idl | 41 ++++ offapi/com/sun/star/awt/tree/MutableTreeNode.idl | 39 +++ offapi/com/sun/star/awt/tree/TreeControl.idl | 86 +++++++ offapi/com/sun/star/awt/tree/TreeControlModel.idl | 97 ++++++++ .../com/sun/star/awt/tree/TreeDataModelEvent.idl | 54 +++++ .../com/sun/star/awt/tree/TreeExpansionEvent.idl | 45 ++++ .../sun/star/awt/tree/XMutableTreeDataModel.idl | 71 ++++++ offapi/com/sun/star/awt/tree/XMutableTreeNode.idl | 109 +++++++++ offapi/com/sun/star/awt/tree/XTreeControl.idl | 269 +++++++++++++++++++++ offapi/com/sun/star/awt/tree/XTreeDataModel.idl | 72 ++++++ .../sun/star/awt/tree/XTreeDataModelListener.idl | 82 +++++++ offapi/com/sun/star/awt/tree/XTreeEditListener.idl | 72 ++++++ .../sun/star/awt/tree/XTreeExpansionListener.idl | 76 ++++++ offapi/com/sun/star/awt/tree/XTreeNode.idl | 92 +++++++ 15 files changed, 1249 insertions(+) create mode 100644 offapi/com/sun/star/awt/tree/ExpandVetoException.idl create mode 100644 offapi/com/sun/star/awt/tree/MutableTreeDataModel.idl create mode 100644 offapi/com/sun/star/awt/tree/MutableTreeNode.idl create mode 100644 offapi/com/sun/star/awt/tree/TreeControl.idl create mode 100644 offapi/com/sun/star/awt/tree/TreeControlModel.idl create mode 100644 offapi/com/sun/star/awt/tree/TreeDataModelEvent.idl create mode 100644 offapi/com/sun/star/awt/tree/TreeExpansionEvent.idl create mode 100644 offapi/com/sun/star/awt/tree/XMutableTreeDataModel.idl create mode 100644 offapi/com/sun/star/awt/tree/XMutableTreeNode.idl create mode 100644 offapi/com/sun/star/awt/tree/XTreeControl.idl create mode 100644 offapi/com/sun/star/awt/tree/XTreeDataModel.idl create mode 100644 offapi/com/sun/star/awt/tree/XTreeDataModelListener.idl create mode 100644 offapi/com/sun/star/awt/tree/XTreeEditListener.idl create mode 100644 offapi/com/sun/star/awt/tree/XTreeExpansionListener.idl create mode 100644 offapi/com/sun/star/awt/tree/XTreeNode.idl (limited to 'offapi/com/sun/star/awt/tree') diff --git a/offapi/com/sun/star/awt/tree/ExpandVetoException.idl b/offapi/com/sun/star/awt/tree/ExpandVetoException.idl new file mode 100644 index 000000000..cf792059e --- /dev/null +++ b/offapi/com/sun/star/awt/tree/ExpandVetoException.idl @@ -0,0 +1,44 @@ +/* -*- 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_ExpandVetoException_idl__ +#define __com_sun_star_awt_tree_ExpandVetoException_idl__ + +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** Exception used to stop an expand/collapse from happening. + @see XTreeExpansionListener + @see XTreeControl + */ +exception ExpandVetoException : com::sun::star::util::VetoException +{ + /** The event that the exception was created for. */ + TreeExpansionEvent Event; +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/MutableTreeDataModel.idl b/offapi/com/sun/star/awt/tree/MutableTreeDataModel.idl new file mode 100644 index 000000000..5901dd8e9 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/MutableTreeDataModel.idl @@ -0,0 +1,41 @@ +/* -*- 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_MutableTreeDataModel_idl__ +#define __com_sun_star_awt_tree_MutableTreeDataModel_idl__ + +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** If you do not want to implement the XTreeDataModel yourself, use this service. + This implementation uses MutableTreeNode for its nodes. + */ +service MutableTreeDataModel : XMutableTreeDataModel +{ +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/MutableTreeNode.idl b/offapi/com/sun/star/awt/tree/MutableTreeNode.idl new file mode 100644 index 000000000..646f4de25 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/MutableTreeNode.idl @@ -0,0 +1,39 @@ +/* -*- 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_MutableTreeNode_idl__ +#define __com_sun_star_awt_tree_MutableTreeNode_idl__ + +#include + + +module com { module sun { module star { module awt { module tree { + + +/** Represents an editable tree node as used by the MutableTreeDataModel + */ +service MutableTreeNode : XMutableTreeNode +{ +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/TreeControl.idl b/offapi/com/sun/star/awt/tree/TreeControl.idl new file mode 100644 index 000000000..084474977 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/TreeControl.idl @@ -0,0 +1,86 @@ +/* -*- 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_TreeControl_idl__ +#define __com_sun_star_awt_tree_TreeControl_idl__ + +#include + + +module com { module sun { module star { module awt { module tree { + + +/** A control that displays a set of hierarchical data as an outline. + +

+

The Data Model

+

A specific node in a tree is identified by a XTreeNode. + A leaf node is a node without any children and that returns `FALSE` when calling XTreeNode::hasChildrenOnDemand(). + 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. +

+ +

The nodes are retrieved from a XTreeDataModel. + You can implement it yourself or use the MutableTreeDataModel + which uses XMutableTreeNode and XMutableTreeDataModel + for a simple and mutable data model. + +

The data model must be set at the TreeControlModel::TreeDataModel property.

+ +

Selection

+

If you are interested in knowing when the selection changes implement a + com::sun::star::view::XSelectionChangeListener and add the instance with the method + ::com::sun::star::view::XSelectionSupplier::addSelectionChangeListener(). + You than will be notified for any selection change. +

+ +

+ 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 com::sun::star::awt::XWindow + and add yourself as a com::sun::star::awt::XMouseClickHandler. You can use the + method XTreeControl::getNodeForLocation() to retrieve the node that was under the + mouse at the time the event was fired. +

+ +

Adding child nodes on demand

+

If you want to add child nodes to your tree on demand you can do the following. +

    +
  • Make sure the parent node returns `TRUE` for XTreeNode::hasChildrenOnDemand() either + by implementing XTreeNode yourself or if you use the MutableTreeDataModel, + use XMutableTreeNode::setHasChildrenOnDemand().
  • +
  • Implement a XTreeExpansionListener and add the instance with the method + XTreeControl::addTreeExpansionListener().
  • +
+ Now you get called when the node will become expanded or collapsed. + So on XTreeExpansionListener::treeExpanding() you can + check the TreeExpansionEvent 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 ExpandVetoException. +

+ */ +service TreeControl: XTreeControl +{ +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/TreeControlModel.idl b/offapi/com/sun/star/awt/tree/TreeControlModel.idl new file mode 100644 index 000000000..018df931f --- /dev/null +++ b/offapi/com/sun/star/awt/tree/TreeControlModel.idl @@ -0,0 +1,97 @@ +/* -*- 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_TreeControlModel_idl__ +#define __com_sun_star_awt_tree_TreeControlModel_idl__ + +#include +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** specifies the standard model of a TreeControl. + */ +service TreeControlModel +{ + /** specifies the standard model of a com::sun::star::awt::UnoControl. */ + service ::com::sun::star::awt::UnoControlModel; + + /** Specifies the selection mode that is enabled for this tree. +

The default value is com::sun::star::view::SelectionType::NONE

+ */ + [property] ::com::sun::star::view::SelectionType SelectionType; + + /** Specifies the XTreeDataModel that is providing the hierarchical data. + +

You can implement your own instance of XTreeDataModel or use + the MutableTreeDataModel. + */ + [property] XTreeDataModel DataModel; + + /** Specifies if the root node of the tree is displayed. +

If RootDisplayed is set to `FALSE`, the root node of a model is no longer + a valid node for the XTreeControl and can't be used with any method of + XTreeControl. +

The default value is `TRUE`

+ */ + [property] boolean RootDisplayed; + + /** Specifies whether the node handles should be displayed. +

The handles are doted lines that visualize the tree like hierarchy

+

The default value is `TRUE`

+ */ + [property] boolean ShowsHandles; + + /** Specifies whether the node handles should also be displayed at root level. +

The default value is `TRUE`

+ */ + [property] boolean ShowsRootHandles; + + /** Specifies the height of each row, in pixels. +

If the specified value is less than or equal to zero, the row height is the maximum height + of all rows.

+

The default value is 0

+ */ + [property] long RowHeight; + + /** Specifies whether the nodes of the tree are editable. +

The default value is `FALSE`

+ + @see XTreeControl::startEditingAtNode() + @see XTreeEditListener + */ + [property] boolean Editable; + + /** Specifies what happens when editing is interrupted by selecting another node in the tree, + a change in the tree's data, or by some other means. +

Setting this property to `TRUE` causes the changes to be automatically saved when editing + is interrupted. `FALSE` means that editing is canceled and changes are lost +

The default value is `FALSE`

+ */ + [property] boolean InvokesStopNodeEditing; +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/TreeDataModelEvent.idl b/offapi/com/sun/star/awt/tree/TreeDataModelEvent.idl new file mode 100644 index 000000000..c84f3ebee --- /dev/null +++ b/offapi/com/sun/star/awt/tree/TreeDataModelEvent.idl @@ -0,0 +1,54 @@ +/* -*- 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_TreeDataModelEvent_idl__ +#define __com_sun_star_awt_tree_TreeDataModelEvent_idl__ + +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** An event used by a XTreeDataModel to notify changes in the data + model to the XTreeControl. + You usually need to fill this event only if you implement the XTreeDataModel + yourself. + + @see XTreeDataModel + @see XTreeControl + @see XTreeDataModelListener + */ +struct TreeDataModelEvent : ::com::sun::star::lang::EventObject +{ + /** contains the changed, added or removed nodes. +

All nodes must have #ParentNode as parent. */ + sequence< XTreeNode > Nodes; + + /** holds the parent node for changed, added or removed nodes. +

If this is null, #Nodes must contain only the root node */ + XTreeNode ParentNode; +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/TreeExpansionEvent.idl b/offapi/com/sun/star/awt/tree/TreeExpansionEvent.idl new file mode 100644 index 000000000..61238eda9 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/TreeExpansionEvent.idl @@ -0,0 +1,45 @@ +/* -*- 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_TreeExpansionEvent_idl__ +#define __com_sun_star_awt_tree_TreeExpansionEvent_idl__ + +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** This event tells you what node is currently expanding or collapsing. + + @see XTreeExpansionListener + @see XTreeControl + */ +struct TreeExpansionEvent : ::com::sun::star::lang::EventObject +{ + /* The node that has been expanded/collapsed.*/ + com::sun::star::awt::tree::XTreeNode Node; +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/XMutableTreeDataModel.idl b/offapi/com/sun/star/awt/tree/XMutableTreeDataModel.idl new file mode 100644 index 000000000..1bdf94273 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/XMutableTreeDataModel.idl @@ -0,0 +1,71 @@ +/* -*- 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_XMutableTreeDataModel_idl__ +#define __com_sun_star_awt_tree_XMutableTreeDataModel_idl__ + +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** This is the editable version of the XTreeDataModel. + +

Note that only XTreeNode created from the same instance with createNode() + are valid nodes for this instance.

+ */ +interface XMutableTreeDataModel : XTreeDataModel +{ + /** creates a new tree node with the given value and given settings. + + @param DisplayValue + should be convertible to a string and is used by the XTreeControl + as a textual representation of the created node. + + @param ChildrenOnDemand + if `TRUE` is used as a parameter, the created node will be treated as a non-leaf + node by the XTreeControl, even when it has no child nodes. + + @returns + a new XMutableTreeNode that can be used for this model. + + @see XTreeNode::getDisplayValue() + @see XTreeNode::hasChildrenOnDemand() + */ + XMutableTreeNode createNode( [in] any DisplayValue, [in] boolean ChildrenOnDemand ); + + /** changes the root node of this model to RootNode. + + @param RootNode + the XMutableTreeNode that becomes the new root node of this model. + + @throws ::com::sun::star::lang::IllegalArgumentException + if RootNode is not a valid node of this XTreeDataModel. + */ + void setRoot( [in] XMutableTreeNode RootNode ) + raises( ::com::sun::star::lang::IllegalArgumentException ); +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/XMutableTreeNode.idl b/offapi/com/sun/star/awt/tree/XMutableTreeNode.idl new file mode 100644 index 000000000..72529350a --- /dev/null +++ b/offapi/com/sun/star/awt/tree/XMutableTreeNode.idl @@ -0,0 +1,109 @@ +/* -*- 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_XMutableTreeNode_idl__ +#define __com_sun_star_awt_tree_XMutableTreeNode_idl__ + +#include +#include + +#include + + +module com { module sun { module star { module awt { module tree { + + +/** Represents a mutable tree node as used by the MutableTreeDataModel + */ +interface XMutableTreeNode : XTreeNode +{ + /** appends ChildNode to this instance. + + @throws ::com::sun::star::lang::IllegalArgumentException + if ChildNode is not a valid node of the corresponding XTreeDataModel. + */ + void appendChild( [in] XMutableTreeNode ChildNode ) + raises( com::sun::star::lang::IllegalArgumentException ); + + /** inserts ChildNode to this instance at the given index. + + @param Index + the index where the node will be inserted to this instance. + + @param ChildNode + the node to insert. + + @throws ::com::sun::star::lang::IllegalArgumentException + if ChildNode is not a valid node of the corresponding XTreeDataModel. + + @throws ::com::sun::star::lang::IndexOutOfBoundsException + if Index is less than 0 or greater than XTreeNode::getChildCount(). + */ + void insertChildByIndex( [in] long Index, [in] XMutableTreeNode ChildNode ) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::lang::IndexOutOfBoundsException ); + + /** removes the node from this instance at the specified index. + + @param Index + the index of the node to be removed from this instance. + + @throws ::com::sun::star::lang::IndexOutOfBoundsException + if Index is less than 0 or greater than XTreeNode::getChildCount(). + */ + void removeChildByIndex( [in] long Index ) + raises( com::sun::star::lang::IndexOutOfBoundsException ); + + /** Changes if the children of this node are created on demand. + + @see XTreeNode::hasChildrenOnDemand() + */ + void setHasChildrenOnDemand( [in] boolean ChildrenOnDemand ); + + /** sets the display value of this node */ + void setDisplayValue( [in] any Value ); + + /** Stores an implementation dependent value. + +

You can use this attribute to store data for this node that + is independent of the display value

+ */ + [attribute] any DataValue; + + /** The URL for a graphic that is rendered before the text part of this node. +

If this URL is empty, no graphic is rendered. + */ + void setNodeGraphicURL( [in] string URL ); + + /** The URL for a graphic that is rendered to visualize expanded non leaf nodes. +

If URL is empty, XTreeControl::DefaultExpandedGraphicURL is used. + */ + void setExpandedGraphicURL( [in] string URL ); + + /** The URL for a graphic that is rendered to visualize collapsed non leaf nodes. +

If URL is empty, XTreeControl::DefaultCollapsedGraphicURL is used. + */ + void setCollapsedGraphicURL( [in] string URL ); +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/XTreeControl.idl b/offapi/com/sun/star/awt/tree/XTreeControl.idl new file mode 100644 index 000000000..657f27677 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/XTreeControl.idl @@ -0,0 +1,269 @@ +/* -*- 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: */ diff --git a/offapi/com/sun/star/awt/tree/XTreeDataModel.idl b/offapi/com/sun/star/awt/tree/XTreeDataModel.idl new file mode 100644 index 000000000..0f2b8816b --- /dev/null +++ b/offapi/com/sun/star/awt/tree/XTreeDataModel.idl @@ -0,0 +1,72 @@ +/* -*- 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_XTreeDataModel_idl__ +#define __com_sun_star_awt_tree_XTreeDataModel_idl__ + +#include +#include +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** An instance of this interface is used by the TreeControl to + retrieve the hierarchical outline data that is displayed in the actual control. + +

If you implement your own XTreeDataModel you need to notify registered + XTreeDataModelListener if your model changes after the control is created. + If this is not done correctly the TreeControl will not update the data properly.

+ + If you do not need your own model implementation, you can also use the MutableTreeDataModel. +*/ +interface XTreeDataModel : ::com::sun::star::lang::XComponent +{ + /** Returns the root of the tree. +

Returns null only if the tree has no nodes. + + @returns + the root of the tree + */ + XTreeNode getRoot(); + + /** Adds a listener for the TreeDataModelEvent posted after the tree changes. + + @param Listener + the listener to add. + */ + void addTreeDataModelListener( [in] XTreeDataModelListener Listener ); + + + /** Removes a listener previously added with addTreeDataModelListener(). + + @param Listener + the listener to remove. + */ + void removeTreeDataModelListener( [in] XTreeDataModelListener Listener ); + +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/XTreeDataModelListener.idl b/offapi/com/sun/star/awt/tree/XTreeDataModelListener.idl new file mode 100644 index 000000000..85a9cb395 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/XTreeDataModelListener.idl @@ -0,0 +1,82 @@ +/* -*- 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_XTreeDataModelListener_idl__ +#define __com_sun_star_awt_tree_XTreeDataModelListener_idl__ + +#include + +#include + + + +module com { module sun { module star { module awt { module tree { + + +/** An instance of this interface is used by the TreeControl to + get notifications about data model changes. + +

Usually you must not implement this interface yourself as it is already handled + by the TreeControl, but you must notify it correctly if + you implement the XTreeDataModel yourself

. + */ +interface XTreeDataModelListener: com::sun::star::lang::XEventListener +{ + /** Invoked after a node (or a set of siblings) has changed in some way. + The node(s) have not changed locations in the tree or altered their + children arrays, but other attributes have changed and may affect + presentation. + + Example: the name of a file has changed, but it is in the same location in the file system. + + To indicate the root has changed, TreeDataModelEvent::Nodes will contain + the root node and TreeDataModelEvent::ParentNode will be empty. + */ + void treeNodesChanged( [in] TreeDataModelEvent Event ); + + /** Invoked after nodes have been inserted into the tree. + + Use TreeDataModelEvent::ParentNode to get the parent of the new node(s). + TreeDataModelEvent::Nodes contains the new node(s). + */ + void treeNodesInserted( [in] TreeDataModelEvent Event ); + + /** Invoked after nodes have been removed from the tree. +

Note that if a subtree is removed from the tree, + this method may only be invoked once for the root of the removed subtree, + not once for each individual set of siblings removed. + + Use TreeDataModelEvent::ParentNode to get the former parent of the deleted node(s). + TreeDataModelEvent::Nodes contains the removed node(s). + */ + void treeNodesRemoved( [in] TreeDataModelEvent Event ); + + /** Invoked after the tree has drastically changed structure from a given node down. + + Use TreeDataModelEvent::ParentNode to get the node which + structure has changed. TreeDataModelEvent::Nodes is empty. + */ + void treeStructureChanged( [in] TreeDataModelEvent Event ); +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/XTreeEditListener.idl b/offapi/com/sun/star/awt/tree/XTreeEditListener.idl new file mode 100644 index 000000000..6fc0c4f65 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/XTreeEditListener.idl @@ -0,0 +1,72 @@ +/* -*- 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_XTreeEditListener_idl__ +#define __com_sun_star_awt_tree_XTreeEditListener_idl__ + +#include +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** You can implement this interface and register with XTreeControl::addTreeEditListener() + to get notifications when editing of a node starts and ends. + +

You have to set the TreeControlModel::Editable property to + `TRUE` before a tree supports editing.

+ */ +interface XTreeEditListener : ::com::sun::star::lang::XEventListener +{ + /** This method is called from the TreeControl implementation when editing of + Node is requested by calling XTreeControl::startEditingAtNode(). + + @param Node + the XTreeNode for that an edit request was fired by calling + XTreeControl::startEditingAtNode() + + @throws VetoException + if thrown the editing will not start. + */ + void nodeEditing( [in] XTreeNode Node ) + raises ( ::com::sun::star::util::VetoException ); + + /** This method is called from the TreeControl implementation when editing + of Node is finished and was not canceled. + +

Implementations that register a XTreeEditListener must update the + display value at the Node.

+ + @param Node + the XTreeNode for that an edit request was fired by calling + XTreeControl::startEditingAtNode() + + @param NewText + the text that was entered by the user. + */ + void nodeEdited( [in] XTreeNode Node, [in] string NewText ); +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/XTreeExpansionListener.idl b/offapi/com/sun/star/awt/tree/XTreeExpansionListener.idl new file mode 100644 index 000000000..99e4c103b --- /dev/null +++ b/offapi/com/sun/star/awt/tree/XTreeExpansionListener.idl @@ -0,0 +1,76 @@ +/* -*- 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_XTreeExpansionListener_idl__ +#define __com_sun_star_awt_tree_XTreeExpansionListener_idl__ + +#include + +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** An instance of this interface can get notifications from a TreeControl + when nodes are expanded or collapsed. + + @see XTreeControl::addTreeExpansionListener + @see XTreeControl::removeTreeExpansionListener + */ +interface XTreeExpansionListener: com::sun::star::lang::XEventListener +{ + /** Invoked when a node with children on demand is about to be expanded. + +

This event is invoked before the treeExpanding() + event.

+ */ + void requestChildNodes( [in] TreeExpansionEvent Event ); + + /** Invoked whenever a node in the tree is about to be expanded. + + @throws ExpandVetoException + to notify the calling XTreeControl that expanding + TreeExpansionEvent::Node should fail. + */ + void treeExpanding( [in] TreeExpansionEvent Event ) + raises ( ExpandVetoException ); + + /** Invoked whenever a node in the tree is about to be collapsed. + + @throws ExpandVetoException + to notify the calling XTreeControl that collapsing + TreeExpansionEvent::Node should fail. + */ + void treeCollapsing( [in] TreeExpansionEvent Event ) + raises ( ExpandVetoException ); + + /** Called whenever a node in the tree has been successfully expanded. */ + void treeExpanded( [in] TreeExpansionEvent Event ); + + /** Called whenever a node in the tree has been successfully collapsed. */ + void treeCollapsed( [in] TreeExpansionEvent Event ); +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/awt/tree/XTreeNode.idl b/offapi/com/sun/star/awt/tree/XTreeNode.idl new file mode 100644 index 000000000..050160e47 --- /dev/null +++ b/offapi/com/sun/star/awt/tree/XTreeNode.idl @@ -0,0 +1,92 @@ +/* -*- 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_XTreeNode_idl__ +#define __com_sun_star_awt_tree_XTreeNode_idl__ + +#include +#include + + +module com { module sun { module star { module awt { module tree { + + +/** An instance implementing this interface represents the model data for an entry in a + XTreeDataModel. +

The TreeControl uses this interface to retrieve the model + information needed to display a hierarchical outline

+

Each XTreeNode in a XTreeDataModel must be unique. + */ +interface XTreeNode +{ + /** Returns the child tree node at Index. + + @throws ::com::sun::star::lang::IndexOutOfBoundsException + if Index is less than 0 or equal or greater than getChildCount(). + */ + XTreeNode getChildAt( [in] long Index ) + raises( com::sun::star::lang::IndexOutOfBoundsException ); + + /** Returns the number of child nodes. */ + long getChildCount(); + + /** Returns the parent node of this node. */ + XTreeNode getParent(); + + /** Returns the index of Node in this instances children. + @returns + The child index of Node, + or -1 if Node is no child of this instance. + */ + long getIndex( [in] XTreeNode Node); + + /** Returns `TRUE` if the children of this node are created on demand. +

A TreeControl will handle a node that returns `TRUE` always + like a node that has child nodes, even if getChildCount() + returns 0.

+ + @see TreeExpansionListener; + */ + boolean hasChildrenOnDemand(); + + /** If not empty, the textual representation of this any is used as the text part of this node. + */ + any getDisplayValue(); + + /** The URL for a graphic that is rendered before the text part of this node. +

If this URL is empty, no graphic is rendered. + */ + string getNodeGraphicURL(); + + /** The URL for a graphic that is rendered to visualize expanded non leaf nodes. +

If URL is empty, XTreeControl::DefaultExpandedGraphicURL is used. + */ + string getExpandedGraphicURL(); + + /** The URL for a graphic that is rendered to visualize collapsed non leaf nodes. +

If URL is empty, XTreeControl::DefaultCollapsedGraphicURL is used. + */ + string getCollapsedGraphicURL(); +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3