23#include <com/sun/star/awt/tree/XTreeControl.hpp>
24#include <com/sun/star/awt/tree/XTreeDataModel.hpp>
25#include <com/sun/star/uno/XComponentContext.hpp>
26#include <com/sun/star/view/SelectionType.hpp>
28#include <helper/property.hxx>
29#include <osl/diagnose.h>
79 return "com.sun.star.awt.tree.TreeControlModel";
87 return Any( SelectionType_NONE );
89 return Any( sal_Int32( 0 ) );
91 return Any( Reference< XTreeDataModel >(
nullptr ) );
100 return uno::Any( OUString(
"com.sun.star.awt.tree.TreeControl" ) );
123typedef ::cppu::AggImplInheritanceHelper1< UnoControlBase, css::awt::tree::XTreeControl > UnoTreeControl_Base;
124class UnoTreeControl :
public UnoTreeControl_Base
128 OUString GetComponentServiceName()
const override;
131 void SAL_CALL
dispose( )
override;
134 void SAL_CALL createPeer(
const css::uno::Reference< css::awt::XToolkit >& Toolkit,
const css::uno::Reference< css::awt::XWindowPeer >& Parent )
override;
137 virtual sal_Bool SAL_CALL select(
const css::uno::Any& xSelection )
override;
138 virtual css::uno::Any SAL_CALL getSelection( )
override;
139 virtual void SAL_CALL addSelectionChangeListener(
const css::uno::Reference< css::view::XSelectionChangeListener >& xListener )
override;
140 virtual void SAL_CALL removeSelectionChangeListener(
const css::uno::Reference< css::view::XSelectionChangeListener >& xListener )
override;
143 virtual sal_Bool SAL_CALL addSelection(
const css::uno::Any&
Selection )
override;
144 virtual void SAL_CALL removeSelection(
const css::uno::Any&
Selection )
override;
145 virtual void SAL_CALL clearSelection( )
override;
146 virtual ::sal_Int32 SAL_CALL getSelectionCount( )
override;
147 virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createSelectionEnumeration( )
override;
148 virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createReverseSelectionEnumeration( )
override;
151 virtual OUString SAL_CALL getDefaultExpandedGraphicURL()
override;
152 virtual void SAL_CALL setDefaultExpandedGraphicURL(
const OUString& _defaultexpandedgraphicurl )
override;
153 virtual OUString SAL_CALL getDefaultCollapsedGraphicURL()
override;
154 virtual void SAL_CALL setDefaultCollapsedGraphicURL(
const OUString& _defaultcollapsedgraphicurl )
override;
155 virtual sal_Bool SAL_CALL isNodeExpanded(
const css::uno::Reference< css::awt::tree::XTreeNode >&
Node )
override;
156 virtual sal_Bool SAL_CALL isNodeCollapsed(
const css::uno::Reference< css::awt::tree::XTreeNode >&
Node )
override;
157 virtual void SAL_CALL makeNodeVisible(
const css::uno::Reference< css::awt::tree::XTreeNode >&
Node )
override;
158 virtual sal_Bool SAL_CALL isNodeVisible(
const css::uno::Reference< css::awt::tree::XTreeNode >&
Node )
override;
159 virtual void SAL_CALL expandNode(
const css::uno::Reference< css::awt::tree::XTreeNode >&
Node )
override;
160 virtual void SAL_CALL collapseNode(
const css::uno::Reference< css::awt::tree::XTreeNode >&
Node )
override;
161 virtual void SAL_CALL addTreeExpansionListener(
const css::uno::Reference< css::awt::tree::XTreeExpansionListener >& Listener )
override;
162 virtual void SAL_CALL removeTreeExpansionListener(
const css::uno::Reference< css::awt::tree::XTreeExpansionListener >& Listener )
override;
163 virtual css::uno::Reference< css::awt::tree::XTreeNode > SAL_CALL getNodeForLocation( ::sal_Int32 x, ::sal_Int32 y )
override;
164 virtual css::uno::Reference< css::awt::tree::XTreeNode > SAL_CALL getClosestNodeForLocation( ::sal_Int32 x, ::sal_Int32 y )
override;
165 virtual css::awt::Rectangle SAL_CALL getNodeRect(
const css::uno::Reference< css::awt::tree::XTreeNode >&
Node )
override;
166 virtual sal_Bool SAL_CALL isEditing( )
override;
167 virtual sal_Bool SAL_CALL stopEditing( )
override;
168 virtual void SAL_CALL cancelEditing( )
override;
169 virtual void SAL_CALL startEditingAtNode(
const css::uno::Reference< css::awt::tree::XTreeNode >&
Node )
override;
170 virtual void SAL_CALL addTreeEditListener(
const css::uno::Reference< css::awt::tree::XTreeEditListener >& Listener )
override;
171 virtual void SAL_CALL removeTreeEditListener(
const css::uno::Reference< css::awt::tree::XTreeEditListener >& Listener )
override;
178 TreeSelectionListenerMultiplexer maSelectionListeners;
179 TreeExpansionListenerMultiplexer maTreeExpansionListeners;
180 TreeEditListenerMultiplexer maTreeEditListeners;
183UnoTreeControl::UnoTreeControl()
184: maSelectionListeners( *this )
185, maTreeExpansionListeners( *this )
186, maTreeEditListeners( *this )
190OUString UnoTreeControl::GetComponentServiceName()
const
199sal_Bool SAL_CALL UnoTreeControl::select(
const Any& rSelection )
201 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->select( rSelection );
205Any SAL_CALL UnoTreeControl::getSelection()
207 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getSelection();
211void SAL_CALL UnoTreeControl::addSelectionChangeListener(
const Reference< XSelectionChangeListener >& xListener )
213 maSelectionListeners.addInterface( xListener );
214 if( getPeer().is() && (maSelectionListeners.getLength() == 1) )
218 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->addSelectionChangeListener(&maSelectionListeners);
223void SAL_CALL UnoTreeControl::removeSelectionChangeListener(
const Reference< XSelectionChangeListener >& xListener )
225 if( getPeer().is() && (maSelectionListeners.getLength() == 1) )
229 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->removeSelectionChangeListener(&maSelectionListeners);
231 maSelectionListeners.removeInterface( xListener );
238sal_Bool SAL_CALL UnoTreeControl::addSelection(
const Any& rSelection )
240 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->addSelection(rSelection);
244void SAL_CALL UnoTreeControl::removeSelection(
const Any& rSelection )
246 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->removeSelection(rSelection);
250void SAL_CALL UnoTreeControl::clearSelection()
252 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->clearSelection();
256sal_Int32 SAL_CALL UnoTreeControl::getSelectionCount()
258 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getSelectionCount();
262Reference< XEnumeration > SAL_CALL UnoTreeControl::createSelectionEnumeration()
264 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->createSelectionEnumeration();
268Reference< XEnumeration > SAL_CALL UnoTreeControl::createReverseSelectionEnumeration()
270 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->createReverseSelectionEnumeration();
277OUString SAL_CALL UnoTreeControl::getDefaultExpandedGraphicURL()
279 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getDefaultExpandedGraphicURL();
283void SAL_CALL UnoTreeControl::setDefaultExpandedGraphicURL(
const OUString& _defaultexpansiongraphicurl )
285 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->setDefaultExpandedGraphicURL(_defaultexpansiongraphicurl);
289OUString SAL_CALL UnoTreeControl::getDefaultCollapsedGraphicURL()
291 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getDefaultCollapsedGraphicURL();
295void SAL_CALL UnoTreeControl::setDefaultCollapsedGraphicURL(
const OUString& _defaultcollapsedgraphicurl )
297 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->setDefaultCollapsedGraphicURL(_defaultcollapsedgraphicurl);
301sal_Bool SAL_CALL UnoTreeControl::isNodeExpanded(
const Reference< XTreeNode >& xNode )
303 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->isNodeExpanded(xNode);
307sal_Bool SAL_CALL UnoTreeControl::isNodeCollapsed(
const Reference< XTreeNode >& xNode )
309 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->isNodeCollapsed(xNode);
313void SAL_CALL UnoTreeControl::makeNodeVisible(
const Reference< XTreeNode >& xNode )
315 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->makeNodeVisible(xNode);
319sal_Bool SAL_CALL UnoTreeControl::isNodeVisible(
const Reference< XTreeNode >& xNode )
321 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->isNodeVisible(xNode);
325void SAL_CALL UnoTreeControl::expandNode(
const Reference< XTreeNode >& xNode )
327 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->expandNode(xNode);
331void SAL_CALL UnoTreeControl::collapseNode(
const Reference< XTreeNode >& xNode )
333 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->collapseNode(xNode);
337void SAL_CALL UnoTreeControl::addTreeExpansionListener(
const Reference< XTreeExpansionListener >& xListener )
339 maTreeExpansionListeners.addInterface( xListener );
340 if( getPeer().is() && (maTreeExpansionListeners.getLength() == 1) )
344 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->addTreeExpansionListener(&maTreeExpansionListeners);
349void SAL_CALL UnoTreeControl::removeTreeExpansionListener(
const Reference< XTreeExpansionListener >& xListener )
351 if( getPeer().is() && (maTreeExpansionListeners.getLength() == 1) )
355 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->removeTreeExpansionListener(&maTreeExpansionListeners);
357 maTreeExpansionListeners.removeInterface( xListener );
361Reference< XTreeNode > SAL_CALL UnoTreeControl::getNodeForLocation( sal_Int32 x, sal_Int32 y )
363 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getNodeForLocation(x,y);
367Reference< XTreeNode > SAL_CALL UnoTreeControl::getClosestNodeForLocation( sal_Int32 x, sal_Int32 y )
369 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getClosestNodeForLocation(x,y);
373awt::Rectangle SAL_CALL UnoTreeControl::getNodeRect(
const Reference< XTreeNode >&
Node )
375 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getNodeRect(
Node );
379sal_Bool SAL_CALL UnoTreeControl::isEditing( )
381 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->isEditing();
385sal_Bool SAL_CALL UnoTreeControl::stopEditing()
387 return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->stopEditing();
391void SAL_CALL UnoTreeControl::cancelEditing()
393 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->cancelEditing();
397void SAL_CALL UnoTreeControl::startEditingAtNode(
const Reference< XTreeNode >& xNode )
399 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->startEditingAtNode(xNode);
403void SAL_CALL UnoTreeControl::addTreeEditListener(
const Reference< XTreeEditListener >& xListener )
405 maTreeEditListeners.addInterface( xListener );
406 if( getPeer().is() && (maTreeEditListeners.getLength() == 1) )
410 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->addTreeEditListener(&maTreeEditListeners);
415void SAL_CALL UnoTreeControl::removeTreeEditListener(
const Reference< XTreeEditListener >& xListener )
417 if( getPeer().is() && (maTreeEditListeners.getLength() == 1) )
421 Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->removeTreeEditListener(&maTreeEditListeners);
423 maTreeEditListeners.removeInterface( xListener );
430void SAL_CALL UnoTreeControl::dispose( )
432 lang::EventObject aEvt;
434 maSelectionListeners.disposeAndClear( aEvt );
435 maTreeExpansionListeners.disposeAndClear( aEvt );
439void UnoTreeControl::createPeer(
const uno::Reference< awt::XToolkit > & rxToolkit,
const uno::Reference< awt::XWindowPeer > & rParentPeer )
443 Reference< XTreeControl > xTree( getPeer(), UNO_QUERY_THROW );
444 if( maSelectionListeners.getLength() )
445 xTree->addSelectionChangeListener( &maSelectionListeners );
446 if( maTreeExpansionListeners.getLength() )
447 xTree->addTreeExpansionListener( &maTreeExpansionListeners );
454 std::unique_lock g(m_aMutex);
457 while( aIt.hasMoreElements() )
459 Reference<XTreeEditListener> xListener(aIt.next());
462 xListener->nodeEditing(
Node );
464 catch(
const DisposedException& e )
466 OSL_ENSURE( e.Context.is(),
"caught DisposedException with empty Context field" );
467 if ( e.Context == xListener || !e.Context.is() )
469 std::unique_lock g2(m_aMutex);
482 std::unique_lock g(m_aMutex);
485 while( aIt.hasMoreElements() )
487 Reference<XTreeEditListener> xListener(aIt.next());
490 xListener->nodeEdited(
Node, NewText );
492 catch(
const DisposedException& e )
494 OSL_ENSURE( e.Context.is(),
"caught DisposedException with empty Context field" );
495 if ( e.Context == xListener || !e.Context.is() )
497 std::unique_lock g2(m_aMutex);
508extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
510 css::uno::XComponentContext *context,
511 css::uno::Sequence<css::uno::Any>
const &)
516extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
518 css::uno::XComponentContext *,
519 css::uno::Sequence<css::uno::Any>
const &)
521 return cppu::acquire(
new UnoTreeControl());
css::uno::Sequence< sal_Int32 > ImplGetPropertyIds() const
void ImplRegisterProperty(sal_uInt16 nPropType)
virtual css::uno::Any ImplGetDefaultValue(sal_uInt16 nPropId) const
void SAL_CALL dispose() override
void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &Toolkit, const css::uno::Reference< css::awt::XWindowPeer > &Parent) override
static css::uno::Reference< css::beans::XPropertySetInfo > createPropertySetInfo(cppu::IPropertyArrayHelper &rProperties)
virtual void SAL_CALL nodeEdited(const css::uno::Reference< css::awt::tree::XTreeNode > &Node, const OUString &NewText) override
virtual DECL_LISTENERMULTIPLEXER_END void SAL_CALL nodeEditing(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
#define DECLIMPL_SERVICEINFO_DERIVED(ImplName, BaseClass, ServiceName)
#define DISPLAY_EXCEPTION(ClassName, MethodName)
#define BASEPROPERTY_TREE_SHOWSROOTHANDLES
#define BASEPROPERTY_TREE_SHOWSHANDLES
#define BASEPROPERTY_TREE_DATAMODEL
#define BASEPROPERTY_BORDER
#define BASEPROPERTY_FILLCOLOR
#define BASEPROPERTY_HIDEINACTIVESELECTION
#define BASEPROPERTY_TREE_ROOTDISPLAYED
#define BASEPROPERTY_TREE_EDITABLE
#define BASEPROPERTY_TREE_INVOKESSTOPNODEEDITING
#define BASEPROPERTY_HELPURL
#define BASEPROPERTY_BACKGROUNDCOLOR
#define BASEPROPERTY_TABSTOP
#define BASEPROPERTY_ENABLED
#define BASEPROPERTY_DEFAULTCONTROL
#define BASEPROPERTY_BORDERCOLOR
#define BASEPROPERTY_ENABLEVISIBLE
#define BASEPROPERTY_HELPTEXT
#define BASEPROPERTY_ROW_HEIGHT
#define BASEPROPERTY_TREE_SELECTIONTYPE
#define BASEPROPERTY_PRINTABLE
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * stardiv_Toolkit_TreeControlModel_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * stardiv_Toolkit_TreeControl_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)