21#include <com/sun/star/graphic/GraphicProvider.hpp>
22#include <com/sun/star/lang/DisposedException.hpp>
23#include <com/sun/star/view/SelectionType.hpp>
24#include <com/sun/star/util/VetoException.hpp>
26#include <helper/property.hxx>
29#include <com/sun/star/awt/tree/XMutableTreeNode.hpp>
48using namespace css::uno;
49using namespace css::lang;
50using namespace css::awt::tree;
51using namespace css::beans;
52using namespace css::view;
53using namespace css::container;
54using namespace css::util;
55using namespace css::graphic;
62 explicit LockGuard( sal_Int32& rLock )
80 ImplContextGraphicItem(
Image const & rI1,
Image const & rI2,
bool bExpanded)
83 OUString msExpandedGraphicURL;
84 OUString msCollapsedGraphicURL;
95 virtual void dispose()
override;
121 void SetImage(
const Image& rImage );
122 const OUString& GetGraphicURL()
const {
return maGraphicURL;}
123 void SetGraphicURL(
const OUString& rGraphicURL );
126 std::unique_ptr<SvLBoxItem>
Clone(
SvLBoxItem const * pSource )
const override;
129 OUString maGraphicURL;
146 : maSelectionListeners( *this )
147 , maTreeExpansionListeners( *this )
148 , maTreeEditListeners( *this )
149 , mbIsRootDisplayed(false)
150 , mpTreeImpl( nullptr )
165 if( pEntry && pEntry->
mxNode.is() )
172 (*mpTreeNodeMap)[ pEntry->
mxNode ] = pEntry;
196 return (*aIter).second;
200 throw IllegalArgumentException();
228 pEntry->
AddItem(std::make_unique<ImplContextGraphicItem>(aImage, aImage,
true));
230 std::unique_ptr<UnoTreeListItem> pUnoItem(
new UnoTreeListItem);
232 if( !xNode->getNodeGraphicURL().isEmpty() )
234 pUnoItem->SetGraphicURL( xNode->getNodeGraphicURL() );
236 loadImage( xNode->getNodeGraphicURL(), aNodeImage );
237 pUnoItem->SetImage( aNodeImage );
241 pEntry->
AddItem(std::move(pUnoItem));
259 bool bChanged =
false;
264 UnoTreeListItem* pUnoItem =
dynamic_cast< UnoTreeListItem*
>( &pEntry->
GetItem( 1 ) );
267 if( aValue != pUnoItem->GetText() )
269 pUnoItem->SetText( aValue );
273 if( pUnoItem->GetGraphicURL() != pEntry->
mxNode->getNodeGraphicURL() )
278 pUnoItem->SetGraphicURL( pEntry->
mxNode->getNodeGraphicURL() );
279 pUnoItem->SetImage( aImage );
292 ImplContextGraphicItem* pContextGraphicItem =
dynamic_cast< ImplContextGraphicItem*
>( &pEntry->
GetItem( 0 ) );
293 if( pContextGraphicItem )
295 if( pContextGraphicItem->msExpandedGraphicURL != pEntry->
mxNode->getExpandedGraphicURL() )
300 pContextGraphicItem->msExpandedGraphicURL = pEntry->
mxNode->getExpandedGraphicURL();
301 mpTreeImpl->SetExpandedEntryBmp( pEntry, aImage );
305 if( pContextGraphicItem->msCollapsedGraphicURL != pEntry->
mxNode->getCollapsedGraphicURL() )
310 pContextGraphicItem->msCollapsedGraphicURL = pEntry->
mxNode->getCollapsedGraphicURL();
311 mpTreeImpl->SetCollapsedEntryBmp( pEntry, aImage );
318 mpTreeImpl->GetModel()->InvalidateEntry( pEntry );
325 EventObject
aEvent( xSource );
335 TreeExpansionEvent
aEvent( xSource, xNode );
349 TreeExpansionEvent
aEvent( xSource, xNode );
372 TreeExpansionEvent
aEvent( xSource, xNode );
393 if( !xDataModel.is() )
396 Reference< XTreeNode > xRootNode( xDataModel->getRoot() );
397 if( !xRootNode.is() )
402 addNode( rTree, xRootNode,
nullptr );
406 const sal_Int32 nChildCount = xRootNode->getChildCount();
407 for( sal_Int32 nChild = 0; nChild < nChildCount; nChild++ )
408 addNode( rTree, xRootNode->getChildAt( nChild ),
nullptr );
418 const sal_Int32 nChildCount = xNode->getChildCount();
419 for( sal_Int32 nChild = 0; nChild < nChildCount; nChild++ )
420 addNode( rTree, xNode->getChildAt( nChild ), pEntry );
428 throw DisposedException();
439 Reference< XTreeNode > xTempNode;
441 Sequence<Reference<XTreeNode>> pNodes;
444 if( rSelection.hasValue() )
446 switch( rSelection.getValueTypeClass() )
448 case TypeClass_INTERFACE:
450 rSelection >>= xTempNode;
454 pNodes = {xTempNode};
458 case TypeClass_SEQUENCE:
463 nCount = rSeq->getLength();
473 throw IllegalArgumentException();
482 rTree.
Select( pEntry, bSelect );
507 if( nSelectionCount == 1 )
510 if( pEntry && pEntry->
mxNode.is() )
513 else if( nSelectionCount > 1 )
515 Sequence< Reference< XTreeNode > > aSelection( nSelectionCount );
516 Reference< XTreeNode >* pNodes = aSelection.getArray();
518 while( pEntry && nSelectionCount )
520 *pNodes++ = pEntry->
mxNode;
525 OSL_ASSERT( (pEntry ==
nullptr) && (nSelectionCount == 0) );
576class TreeSelectionEnumeration :
public ::cppu::WeakImplHelper< XEnumeration >
579 explicit TreeSelectionEnumeration( std::list< Any >& rSelection );
580 virtual sal_Bool SAL_CALL hasMoreElements()
override;
581 virtual Any SAL_CALL nextElement()
override;
583 std::list< Any > maSelection;
584 std::list< Any >::iterator
maIter;
589TreeSelectionEnumeration::TreeSelectionEnumeration( std::list< Any >& rSelection )
591 maSelection.swap( rSelection );
592 maIter = maSelection.begin();
596sal_Bool SAL_CALL TreeSelectionEnumeration::hasMoreElements()
598 return maIter != maSelection.end();
602Any SAL_CALL TreeSelectionEnumeration::nextElement()
604 if( maIter == maSelection.end() )
605 throw NoSuchElementException();
618 std::list< Any > aSelection( nSelectionCount );
621 while( pEntry && nSelectionCount )
623 aSelection.emplace_back( pEntry->
mxNode );
628 OSL_ASSERT( (pEntry ==
nullptr) && (nSelectionCount == 0) );
630 return Reference< XEnumeration >(
new TreeSelectionEnumeration( aSelection ) );
641 std::list< Any > aSelection;
644 while( pEntry && nSelectionCount )
646 aSelection.push_front(
Any( pEntry->
mxNode ) );
651 OSL_ASSERT( (pEntry ==
nullptr) && (nSelectionCount == 0) );
653 return Reference< XEnumeration >(
new TreeSelectionEnumeration( aSelection ) );
673 if( !sDefaultExpandedGraphicURL.isEmpty() )
683 ImplContextGraphicItem* pContextGraphicItem =
dynamic_cast< ImplContextGraphicItem*
>( &pEntry->
GetItem( 0 ) );
684 if( pContextGraphicItem )
686 if( pContextGraphicItem->msExpandedGraphicURL.isEmpty() )
689 pEntry = rTree.
Next( pEntry );
709 if( !sDefaultCollapsedGraphicURL.isEmpty() )
719 ImplContextGraphicItem* pContextGraphicItem =
dynamic_cast< ImplContextGraphicItem*
>( &pEntry->
GetItem( 0 ) );
720 if( pContextGraphicItem )
722 if( pContextGraphicItem->msCollapsedGraphicURL.isEmpty() )
725 pEntry = rTree.
Next( pEntry );
810 Reference< XTreeNode > xNode;
827 Reference< XTreeNode > xNode;
912 catch( VetoException& )
935 Reference< XMutableTreeNode > xMutableNode( pEntry->
mxNode, UNO_QUERY );
936 if( xMutableNode.is() )
937 xMutableNode->setDisplayValue(
Any( rNewText ) );
998 Sequence< Reference< XTreeNode > > Nodes;
999 Reference< XTreeNode > xNode( rEvent.ParentNode );
1000 if( !xNode.is() && Nodes.hasElements() )
1018 Reference< XTreeNode > xParentNode( xNode->getParent() );
1022 if( xParentNode.is() )
1024 pParentEntry =
getEntry( xParentNode );
1025 nChild = xParentNode->getIndex( xNode );
1028 pNodeEntry =
createEntry( xNode, pParentEntry, nChild );
1036 if( !(xParentNode.is() && pParentEntry) )
1041 const sal_Int32 nChildCount = xParentNode->getChildCount();
1042 for( sal_Int32 nChild = 0; nChild < nChildCount; nChild++ )
1044 Reference< XTreeNode > xNode( xParentNode->getChildAt( nChild ) );
1045 if( !pCurrentChild || ( pCurrentChild->
mxNode != xNode ) )
1048 if( pNodeEntry ==
nullptr )
1051 pCurrentChild =
createEntry( xNode, pParentEntry, nChild );
1053 else if( pNodeEntry != pCurrentChild )
1056 rTree.
GetModel()->
Move( pNodeEntry, pParentEntry, nChild );
1057 pCurrentChild = pNodeEntry;
1072 while( pCurrentChild )
1076 pCurrentChild = pNextChild;
1083 if( rValue.hasValue() )
1085 switch( rValue.getValueTypeClass() )
1087 case TypeClass_SHORT:
1088 case TypeClass_LONG:
1092 sValue = OUString::number(
nValue );
1095 case TypeClass_BYTE:
1096 case TypeClass_UNSIGNED_SHORT:
1097 case TypeClass_UNSIGNED_LONG:
1101 sValue = OUString::number(
nValue );
1104 case TypeClass_HYPER:
1108 sValue = OUString::number(
nValue );
1111 case TypeClass_UNSIGNED_HYPER:
1115 sValue = OUString::number(
nValue );
1118 case TypeClass_FLOAT:
1119 case TypeClass_DOUBLE:
1121 double fValue = 0.0;
1122 if( rValue >>= fValue )
1123 sValue = OUString::number( fValue );
1126 case TypeClass_STRING:
1163 if( xDataModel.is() && (
mxDataModel == xDataModel) )
1166 Reference< XTreeDataModelListener > xListener(
this );
1169 mxDataModel->removeTreeDataModelListener( xListener );
1176 mxDataModel->addTreeDataModelListener( xListener );
1205 css::awt::Size aSz = rNewSize;
1228 bool bEnabled =
false;
1229 if ( aValue >>= bEnabled )
1235 nStyle &= ~WB_HIDESELECTION;
1244 if( aValue >>= eSelectionType )
1247 switch( eSelectionType )
1249 case SelectionType_SINGLE: eSelMode = SelectionMode::Single;
break;
1250 case SelectionType_RANGE: eSelMode = SelectionMode::Range;
break;
1251 case SelectionType_MULTI: eSelMode = SelectionMode::Multiple;
break;
1253 default: eSelMode = SelectionMode::NONE;
break;
1266 sal_Int32 nHeight = 0;
1267 if( aValue >>= nHeight )
1273 bool bEnabled =
false;
1274 if( aValue >>= bEnabled )
1282 bool bDisplayed =
false;
1291 bool bEnabled =
false;
1292 if( aValue >>= bEnabled )
1304 bool bEnabled =
false;
1305 if( aValue >>= bEnabled )
1338 case SelectionMode::Single: eSelectionType = SelectionType_SINGLE;
break;
1339 case SelectionMode::Range: eSelectionType = SelectionType_RANGE;
break;
1340 case SelectionMode::Multiple:eSelectionType = SelectionType_MULTI;
break;
1342 default: eSelectionType = SelectionType_NONE;
break;
1344 return Any( eSelectionType );
1431 mxPeer->disposeControl();
1440 mxPeer->onSelectionChanged();
1448 if( pEntry && mxPeer.is() )
1450 return mxPeer->onExpanding( pEntry->
mxNode, !IsExpanded( pEntry ) );
1459 if( pEntry && mxPeer.is() )
1461 mxPeer->onExpanded( pEntry->
mxNode, IsExpanded( pEntry ) );
1497UnoTreeListItem::UnoTreeListItem()
1502void UnoTreeListItem::Paint(
1506 Size aSize(GetWidth(&rDev, &rEntry), GetHeight(&rDev, &rEntry));
1509 rRenderContext.
DrawImage(aPos, maImage, rDev.
IsEnabled() ? DrawImageFlags::NONE : DrawImageFlags::Disable);
1510 int nWidth = maImage.GetSizePixel().Width() + 6;
1511 aPos.AdjustX(nWidth );
1512 aSize.AdjustWidth( -nWidth );
1518std::unique_ptr<SvLBoxItem> UnoTreeListItem::Clone(
SvLBoxItem const * pSource)
const
1520 std::unique_ptr<UnoTreeListItem> pNew(
new UnoTreeListItem);
1521 UnoTreeListItem
const * pSourceItem =
static_cast< UnoTreeListItem
const *
>( pSource );
1522 pNew->maText = pSourceItem->maText;
1523 pNew->maImage = pSourceItem->maImage;
1524 return std::unique_ptr<SvLBoxItem>(pNew.release());
1528void UnoTreeListItem::SetImage(
const Image& rImage )
1534void UnoTreeListItem::SetGraphicURL(
const OUString& rGraphicURL )
1536 maGraphicURL = rGraphicURL;
1545 Size aSize(maImage.GetSizePixel());
1546 pViewData->
mnWidth = aSize.Width();
1547 pViewData->
mnHeight = aSize.Height();
1552 pViewData->
mnWidth += (6 + aTextSize.Width());
1553 if( pViewData->
mnHeight < aTextSize.Height() )
1554 pViewData->
mnHeight = aTextSize.Height();
1558 pViewData->
mnWidth = aTextSize.Width();
1559 pViewData->
mnHeight = aTextSize.Height();
std::vector< Reference< XAnimationNode > >::iterator maIter
BitmapEx GetBitmapEx(const GraphicConversionParameters &rParameters=GraphicConversionParameters()) const
void DrawImage(const Point &rPos, const Image &rImage, DrawImageFlags nStyle=DrawImageFlags::NONE)
void DrawText(const Point &rStartPt, const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, std::vector< tools::Rectangle > *pVector=nullptr, OUString *pDisplayText=nullptr, const SalLayoutGlyphs *pLayoutCache=nullptr)
constexpr tools::Long Y() const
virtual void InitViewData(SvTreeListBox *pView, SvTreeListEntry *pEntry, SvViewDataItem *pViewData=nullptr) override
virtual void Paint(const Point &rPos, SvTreeListBox &rOutDev, vcl::RenderContext &rRenderContext, const SvViewDataEntry *pView, const SvTreeListEntry &rEntry) override
virtual std::unique_ptr< SvLBoxItem > Clone(SvLBoxItem const *pSource) const override
bool IsEntryVisible(SvTreeListEntry *pEntry) const
sal_uInt32 GetSelectionCount() const
SvTreeListEntry * NextSelected(SvTreeListEntry *pEntry) const
SvTreeListEntry * FirstSelected() const
bool IsExpanded(SvTreeListEntry *pEntry) const
void SetDeselectHdl(const Link< SvTreeListBox *, void > &rNewHdl)
SvTreeListEntry * FirstChild(SvTreeListEntry *pParent) const
sal_uInt32 GetEntryCount() const
void EnableInplaceEditing(bool bEnable)
void SetExpandedHdl(const Link< SvTreeListBox *, void > &rNewHdl)
void MakeVisible(SvTreeListEntry *pEntry)
SvTreeListEntry * Next(SvTreeListEntry *pEntry) const
Point GetEntryPosition(const SvTreeListEntry *) const
SvTreeListEntry * GetEntry(SvTreeListEntry *pParent, sal_uInt32 nPos) const
void SetEntryHeight(short nHeight)
void SetCollapsedEntryBmp(SvTreeListEntry *_pEntry, const Image &_rImage)
bool Collapse(SvTreeListEntry *pParent)
bool IsInplaceEditingEnabled() const
bool Select(SvTreeListEntry *pEntry, bool bSelect=true)
void SetExpandedEntryBmp(SvTreeListEntry *_pEntry, const Image &_rImage)
SvViewDataItem * GetViewDataItem(SvTreeListEntry const *, SvLBoxItem const *)
bool IsEditingActive() const
short GetEntryHeight() const
virtual void dispose() override
void EditEntry(SvTreeListEntry *pEntry)
void SetSelectionMode(SelectionMode)
void SetNodeDefaultImages()
void EndEditing(bool bCancel=false)
SvTreeListEntry * First() const
void SetSelectHdl(const Link< SvTreeListBox *, void > &rNewHdl)
SelectionMode GetSelectionMode() const
virtual tools::Rectangle GetFocusRect(const SvTreeListEntry *, tools::Long nLine)
void SetExpandingHdl(const Link< SvTreeListBox *, bool > &rNewHdl)
void SelectAll(bool bSelect)
virtual sal_uInt32 Insert(SvTreeListEntry *pEnt, SvTreeListEntry *pPar, sal_uInt32 nPos=TREELIST_APPEND)
SvTreeList * GetModel() const
bool Expand(SvTreeListEntry *pParent)
SvTreeListEntry * NextSibling() const
bool HasChildrenOnDemand() const
const SvLBoxItem & GetItem(size_t nPos) const
void EnableChildrenOnDemand(bool bEnable=true)
void AddItem(std::unique_ptr< SvLBoxItem > pItem)
void Move(SvTreeListEntry *pSource, SvTreeListEntry *pTarget)
bool Remove(const SvTreeListEntry *pEntry)
OUString msDefaultExpandedGraphicURL
virtual OUString SAL_CALL getDefaultCollapsedGraphicURL() override
TreeSelectionListenerMultiplexer maSelectionListeners
virtual void SAL_CALL startEditingAtNode(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
virtual void SAL_CALL clearSelection() override
Image maDefaultCollapsedImage
virtual css::uno::Any SAL_CALL getSelection() override
virtual void SAL_CALL setDefaultExpandedGraphicURL(const OUString &_defaultexpandedgraphicurl) override
virtual OUString SAL_CALL getDefaultExpandedGraphicURL() override
void updateChildNodes(UnoTreeListBoxImpl const &rTree, const css::uno::Reference< css::awt::tree::XTreeNode > &xParentNode, UnoTreeListEntry *pParentEntry)
void updateTree(const css::awt::tree::TreeDataModelEvent &rEvent)
virtual void SAL_CALL removeSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
virtual void SAL_CALL treeStructureChanged(const css::awt::tree::TreeDataModelEvent &aEvent) override
virtual sal_Bool SAL_CALL isNodeExpanded(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
virtual void SAL_CALL removeSelection(const css::uno::Any &Selection) override
virtual void SAL_CALL treeNodesInserted(const css::awt::tree::TreeDataModelEvent &aEvent) override
UnoTreeListBoxImpl & getTreeListBoxOrThrow() const
OUString msDefaultCollapsedGraphicURL
virtual void SAL_CALL cancelEditing() override
Image maDefaultExpandedImage
VclPtr< UnoTreeListBoxImpl > mpTreeImpl
virtual css::awt::Rectangle SAL_CALL getNodeRect(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
TreeEditListenerMultiplexer maTreeEditListeners
std::unique_ptr< TreeNodeMap > mpTreeNodeMap
void onExpanded(const css::uno::Reference< css::awt::tree::XTreeNode > &xNode, bool bExpanding)
virtual sal_Bool SAL_CALL addSelection(const css::uno::Any &Selection) override
virtual void SAL_CALL treeNodesChanged(const css::awt::tree::TreeDataModelEvent &aEvent) override
virtual void SAL_CALL setDefaultCollapsedGraphicURL(const OUString &_defaultcollapsedgraphicurl) override
virtual void SAL_CALL addSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
void onChangeDataModel(UnoTreeListBoxImpl &rTree, const css::uno::Reference< css::awt::tree::XTreeDataModel > &xDataModel)
virtual void SAL_CALL collapseNode(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
UnoTreeListEntry * getEntry(const css::uno::Reference< css::awt::tree::XTreeNode > &xNode, bool bThrow=true)
void ChangeNodesSelection(const css::uno::Any &rSelection, bool bSelect, bool bSetSelection)
virtual void SAL_CALL removeTreeEditListener(const css::uno::Reference< css::awt::tree::XTreeEditListener > &Listener) override
bool onExpanding(const css::uno::Reference< css::awt::tree::XTreeNode > &xNode, bool bExpanding)
void removeEntry(UnoTreeListEntry const *pEntry)
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createSelectionEnumeration() override
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createReverseSelectionEnumeration() override
virtual sal_Bool SAL_CALL isNodeCollapsed(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
void onRequestChildNodes(const css::uno::Reference< css::awt::tree::XTreeNode > &xNode)
std::map< css::uno::Reference< css::awt::tree::XTreeNode >, UnoTreeListEntry * > TreeNodeMap
virtual sal_Bool SAL_CALL select(const css::uno::Any &xSelection) override
void addNode(UnoTreeListBoxImpl &rTree, const css::uno::Reference< css::awt::tree::XTreeNode > &xNode, UnoTreeListEntry *pParentEntry)
bool onEditedEntry(UnoTreeListEntry const *pEntry, const OUString &rNewText)
virtual void SAL_CALL makeNodeVisible(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
void disposeControl()
called from the UnoTreeListBoxImpl when it gets deleted
css::awt::Size SAL_CALL calcAdjustedSize(const css::awt::Size &aNewSize) override
void addEntry(UnoTreeListEntry *pEntry)
static OUString getEntryString(const css::uno::Any &rValue)
virtual void SAL_CALL addTreeEditListener(const css::uno::Reference< css::awt::tree::XTreeEditListener > &Listener) override
virtual void SAL_CALL expandNode(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
virtual void SAL_CALL removeTreeExpansionListener(const css::uno::Reference< css::awt::tree::XTreeExpansionListener > &Listener) override
virtual css::uno::Reference< css::awt::tree::XTreeNode > SAL_CALL getNodeForLocation(::sal_Int32 x, ::sal_Int32 y) override
css::awt::Size SAL_CALL getPreferredSize() override
void fillTree(UnoTreeListBoxImpl &rTree, const css::uno::Reference< css::awt::tree::XTreeDataModel > &xDataModel)
void updateNode(UnoTreeListBoxImpl const &rTree, const css::uno::Reference< css::awt::tree::XTreeNode > &xNode)
void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual ::sal_Int32 SAL_CALL getSelectionCount() override
virtual ~TreeControlPeer() override
void onSelectionChanged()
virtual css::uno::Reference< css::awt::tree::XTreeNode > SAL_CALL getClosestNodeForLocation(::sal_Int32 x, ::sal_Int32 y) override
vcl::Window * createVclControl(vcl::Window *pParent, sal_Int64 nWinStyle)
TreeExpansionListenerMultiplexer maTreeExpansionListeners
void SAL_CALL setProperty(const OUString &PropertyName, const css::uno::Any &Value) override
virtual sal_Bool SAL_CALL isNodeVisible(const css::uno::Reference< css::awt::tree::XTreeNode > &Node) override
void onChangeRootDisplayed(bool bIsRootDisplayed)
css::awt::Size SAL_CALL getMinimumSize() override
virtual sal_Bool SAL_CALL stopEditing() override
friend class UnoTreeListEntry
css::uno::Reference< css::graphic::XGraphicProvider > mxGraphicProvider
void updateEntry(UnoTreeListEntry *pEntry)
css::uno::Any SAL_CALL getProperty(const OUString &PropertyName) override
bool onEditingEntry(UnoTreeListEntry const *pEntry)
virtual void SAL_CALL addTreeExpansionListener(const css::uno::Reference< css::awt::tree::XTreeExpansionListener > &Listener) override
virtual void SAL_CALL treeNodesRemoved(const css::awt::tree::TreeDataModelEvent &aEvent) override
virtual sal_Bool SAL_CALL isEditing() override
bool loadImage(const OUString &rURL, Image &rImage)
UnoTreeListEntry * createEntry(const css::uno::Reference< css::awt::tree::XTreeNode > &xNode, UnoTreeListEntry *pParent, sal_uLong nPos)
css::uno::Reference< css::awt::tree::XTreeDataModel > mxDataModel
virtual bool EditingEntry(SvTreeListEntry *pEntry) override
DECL_LINK(OnExpandingHdl, SvTreeListBox *, bool)
virtual void RequestingChildren(SvTreeListEntry *pParent) override
DECL_LINK(OnExpandedHdl, SvTreeListBox *, void)
void insert(SvTreeListEntry *pEntry, SvTreeListEntry *pParent, sal_uLong nPos)
virtual void dispose() override
rtl::Reference< TreeControlPeer > mxPeer
virtual ~UnoTreeListBoxImpl() override
virtual bool EditedEntry(SvTreeListEntry *pEntry, const OUString &rNewText) override
UnoTreeListBoxImpl(TreeControlPeer *pPeer, vcl::Window *pParent, WinBits nWinStyle)
DECL_LINK(OnSelectionChangeHdl, SvTreeListBox *, void)
virtual ~UnoTreeListEntry() override
UnoTreeListEntry(const Reference< XTreeNode > &xNode, TreeControlPeer *pPeer)
Reference< XTreeNode > mxNode
static css::awt::Rectangle ConvertToAWTRect(::tools::Rectangle const &_rRect)
css::uno::Any SAL_CALL getProperty(const OUString &PropertyName) override
void SAL_CALL setProperty(const OUString &PropertyName, const css::uno::Any &Value) override
static VclPtr< reference_type > Create(Arg &&... arg)
tools::Long GetTextWidth(const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, vcl::text::TextLayoutCache const *=nullptr, SalLayoutGlyphs const *const pLayoutCache=nullptr) const
void SetStyle(WinBits nStyle)
tools::Long GetTextHeight() const
#define LINK(Instance, Class, Member)
Reference< XComponentContext > getProcessComponentContext()
css::beans::PropertyValue makePropertyValue(const OUString &rName, T &&rValue)
std::enable_if<!(detail::IsDerivedReference< T >::value||detail::IsUnoSequenceType< T >::value||std::is_base_of< css::uno::XInterface, T >::value), typenamedetail::Optional< T >::type >::type tryAccess(css::uno::Any const &any)
sal_uInt16 GetPropertyId(const OUString &rPropertyName)
#define BASEPROPERTY_TREE_SHOWSROOTHANDLES
#define BASEPROPERTY_TREE_SHOWSHANDLES
#define BASEPROPERTY_TREE_DATAMODEL
#define BASEPROPERTY_HIDEINACTIVESELECTION
#define BASEPROPERTY_TREE_END
#define BASEPROPERTY_TREE_ROOTDISPLAYED
#define BASEPROPERTY_TREE_EDITABLE
#define BASEPROPERTY_TREE_INVOKESSTOPNODEEDITING
#define BASEPROPERTY_TREE_START
#define BASEPROPERTY_ROW_HEIGHT
#define BASEPROPERTY_TREE_SELECTIONTYPE
IMPL_LINK_NOARG(UnoTreeListBoxImpl, OnSelectionChangeHdl, SvTreeListBox *, void)
WinBits const WB_HIDESELECTION
WinBits const WB_HASBUTTONS
WinBits const WB_HASLINESATROOT
WinBits const WB_HASLINES
WinBits const WB_HASBUTTONSATROOT