diff options
Diffstat (limited to 'toolkit/source/controls/tree/treecontrol.cxx')
-rw-r--r-- | toolkit/source/controls/tree/treecontrol.cxx | 514 |
1 files changed, 0 insertions, 514 deletions
diff --git a/toolkit/source/controls/tree/treecontrol.cxx b/toolkit/source/controls/tree/treecontrol.cxx deleted file mode 100644 index b6be2dbc49..0000000000 --- a/toolkit/source/controls/tree/treecontrol.cxx +++ /dev/null @@ -1,514 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_toolkit.hxx" - -#include <treecontrol.hxx> - -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/view/SelectionType.hpp> -#include <com/sun/star/awt/tree/XTreeDataModel.hpp> -#include <toolkit/helper/unopropertyarrayhelper.hxx> -#include <toolkit/helper/property.hxx> -#include <com/sun/star/awt/XVclWindowPeer.hpp> -#include <comphelper/processfactory.hxx> -#include <osl/diagnose.h> - -using ::rtl::OUString; -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::awt::tree; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::beans; -using namespace ::com::sun::star::container; -using namespace ::com::sun::star::view; - -namespace toolkit -{ -// ---------------------------------------------------- -// class UnoTreeModel -// ---------------------------------------------------- -UnoTreeModel::UnoTreeModel( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& i_factory ) - :UnoControlModel( i_factory ) -{ - ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR ); - ImplRegisterProperty( BASEPROPERTY_BORDER ); - ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR ); - ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL ); - ImplRegisterProperty( BASEPROPERTY_ENABLED ); - ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE ); - ImplRegisterProperty( BASEPROPERTY_FILLCOLOR ); - ImplRegisterProperty( BASEPROPERTY_HELPTEXT ); - ImplRegisterProperty( BASEPROPERTY_HELPURL ); - ImplRegisterProperty( BASEPROPERTY_PRINTABLE ); - ImplRegisterProperty( BASEPROPERTY_TABSTOP ); - ImplRegisterProperty( BASEPROPERTY_TREE_SELECTIONTYPE ); - ImplRegisterProperty( BASEPROPERTY_TREE_EDITABLE ); - ImplRegisterProperty( BASEPROPERTY_TREE_DATAMODEL ); - ImplRegisterProperty( BASEPROPERTY_TREE_ROOTDISPLAYED ); - ImplRegisterProperty( BASEPROPERTY_TREE_SHOWSHANDLES ); - ImplRegisterProperty( BASEPROPERTY_TREE_SHOWSROOTHANDLES ); - ImplRegisterProperty( BASEPROPERTY_ROW_HEIGHT ); - ImplRegisterProperty( BASEPROPERTY_TREE_INVOKESSTOPNODEEDITING ); - ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION ); -} - -UnoTreeModel::UnoTreeModel( const UnoTreeModel& rModel ) -: UnoControlModel( rModel ) -{ -} - -UnoControlModel* UnoTreeModel::Clone() const -{ - return new UnoTreeModel( *this ); -} - -OUString UnoTreeModel::getServiceName() throw(RuntimeException) -{ - return OUString::createFromAscii( szServiceName_TreeControlModel ); -} - -Any UnoTreeModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const -{ - switch( nPropId ) - { - case BASEPROPERTY_TREE_SELECTIONTYPE: - return Any( SelectionType_NONE ); - case BASEPROPERTY_ROW_HEIGHT: - return Any( sal_Int32( 0 ) ); - case BASEPROPERTY_TREE_DATAMODEL: - return Any( Reference< XTreeDataModel >( 0 ) ); - case BASEPROPERTY_TREE_EDITABLE: - case BASEPROPERTY_TREE_INVOKESSTOPNODEEDITING: - return Any( sal_False ); - case BASEPROPERTY_TREE_ROOTDISPLAYED: - case BASEPROPERTY_TREE_SHOWSROOTHANDLES: - case BASEPROPERTY_TREE_SHOWSHANDLES: - return Any( sal_True ); - case BASEPROPERTY_DEFAULTCONTROL: - return uno::makeAny( ::rtl::OUString::createFromAscii( szServiceName_TreeControl ) ); - default: - return UnoControlModel::ImplGetDefaultValue( nPropId ); - } -} - -::cppu::IPropertyArrayHelper& UnoTreeModel::getInfoHelper() -{ - static UnoPropertyArrayHelper* pHelper = NULL; - if ( !pHelper ) - { - Sequence<sal_Int32> aIDs = ImplGetPropertyIds(); - pHelper = new UnoPropertyArrayHelper( aIDs ); - } - return *pHelper; -} - -// XMultiPropertySet -Reference< XPropertySetInfo > UnoTreeModel::getPropertySetInfo( ) throw(RuntimeException) -{ - static Reference< XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) ); - return xInfo; -} - - -// ---------------------------------------------------- -// class UnoTreeControl -// ---------------------------------------------------- -UnoTreeControl::UnoTreeControl( const Reference< XMultiServiceFactory >& i_factory ) -: UnoTreeControl_Base( i_factory ) -, maSelectionListeners( *this ) -, maTreeExpansionListeners( *this ) -, maTreeEditListeners( *this ) -{ -} - -OUString UnoTreeControl::GetComponentServiceName() -{ - return OUString(RTL_CONSTASCII_USTRINGPARAM("Tree")); -} - -// ------------------------------------------------------------------- -// ::com::sun::star::view::XSelectionSupplier -// ------------------------------------------------------------------- - -sal_Bool SAL_CALL UnoTreeControl::select( const Any& rSelection ) throw (IllegalArgumentException, RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->select( rSelection ); -} - -// ------------------------------------------------------------------- - -Any SAL_CALL UnoTreeControl::getSelection() throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getSelection(); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::addSelectionChangeListener( const Reference< XSelectionChangeListener >& xListener ) throw (RuntimeException) -{ - maSelectionListeners.addInterface( xListener ); - if( getPeer().is() && (maSelectionListeners.getLength() == 1) ) - { - // maSelectionListeners acts as a proxy, - // add it to the peer if this is the first listener added to that proxy - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->addSelectionChangeListener(&maSelectionListeners); - } -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::removeSelectionChangeListener( const Reference< XSelectionChangeListener >& xListener ) throw (RuntimeException) -{ - if( getPeer().is() && (maSelectionListeners.getLength() == 1) ) - { - // maSelectionListeners acts as a proxy, - // remove it from the peer if this is the last listener removed from that proxy - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->removeSelectionChangeListener(&maSelectionListeners); - } - maSelectionListeners.removeInterface( xListener ); -} - -// ------------------------------------------------------------------- -// ::com::sun::star::view::XMultiSelectionSupplier -// ------------------------------------------------------------------- - -sal_Bool SAL_CALL UnoTreeControl::addSelection( const Any& rSelection ) throw (IllegalArgumentException, RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->addSelection(rSelection); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::removeSelection( const Any& rSelection ) throw (IllegalArgumentException, RuntimeException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->removeSelection(rSelection); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::clearSelection() throw (RuntimeException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->clearSelection(); -} - -// ------------------------------------------------------------------- - -sal_Int32 SAL_CALL UnoTreeControl::getSelectionCount() throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getSelectionCount(); -} - -// ------------------------------------------------------------------- - -Reference< XEnumeration > SAL_CALL UnoTreeControl::createSelectionEnumeration() throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->createSelectionEnumeration(); -} - -// ------------------------------------------------------------------- - -Reference< XEnumeration > SAL_CALL UnoTreeControl::createReverseSelectionEnumeration() throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->createReverseSelectionEnumeration(); -} - -// -------------------------------------------------------------------- -// XTreeControl -// -------------------------------------------------------------------- - -OUString SAL_CALL UnoTreeControl::getDefaultExpandedGraphicURL() throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getDefaultExpandedGraphicURL(); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::setDefaultExpandedGraphicURL( const OUString& _defaultexpansiongraphicurl ) throw (RuntimeException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->setDefaultExpandedGraphicURL(_defaultexpansiongraphicurl); -} - -// ------------------------------------------------------------------- - -OUString SAL_CALL UnoTreeControl::getDefaultCollapsedGraphicURL() throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getDefaultCollapsedGraphicURL(); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::setDefaultCollapsedGraphicURL( const OUString& _defaultcollapsedgraphicurl ) throw (RuntimeException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->setDefaultCollapsedGraphicURL(_defaultcollapsedgraphicurl); -} - -// ------------------------------------------------------------------- - -sal_Bool SAL_CALL UnoTreeControl::isNodeExpanded( const Reference< XTreeNode >& xNode ) throw (RuntimeException, IllegalArgumentException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->isNodeExpanded(xNode); -} - -// ------------------------------------------------------------------- - -sal_Bool SAL_CALL UnoTreeControl::isNodeCollapsed( const Reference< XTreeNode >& xNode ) throw (RuntimeException, IllegalArgumentException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->isNodeCollapsed(xNode); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::makeNodeVisible( const Reference< XTreeNode >& xNode ) throw (RuntimeException, ExpandVetoException, IllegalArgumentException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->makeNodeVisible(xNode); -} - -// ------------------------------------------------------------------- - -sal_Bool SAL_CALL UnoTreeControl::isNodeVisible( const Reference< XTreeNode >& xNode ) throw (RuntimeException, IllegalArgumentException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->isNodeVisible(xNode); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::expandNode( const Reference< XTreeNode >& xNode ) throw (RuntimeException, ExpandVetoException, IllegalArgumentException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->expandNode(xNode); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::collapseNode( const Reference< XTreeNode >& xNode ) throw (RuntimeException, ExpandVetoException, IllegalArgumentException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->collapseNode(xNode); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::addTreeExpansionListener( const Reference< XTreeExpansionListener >& xListener ) throw (RuntimeException) -{ - maTreeExpansionListeners.addInterface( xListener ); - if( getPeer().is() && (maTreeExpansionListeners.getLength() == 1) ) - { - // maSelectionListeners acts as a proxy, - // add it to the peer if this is the first listener added to that proxy - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->addTreeExpansionListener(&maTreeExpansionListeners); - } -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::removeTreeExpansionListener( const Reference< XTreeExpansionListener >& xListener ) throw (RuntimeException) -{ - if( getPeer().is() && (maTreeExpansionListeners.getLength() == 1) ) - { - // maSelectionListeners acts as a proxy, - // remove it from the peer if this is the last listener removed from that proxy - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->removeTreeExpansionListener(&maTreeExpansionListeners); - } - maTreeExpansionListeners.removeInterface( xListener ); -} - -// ------------------------------------------------------------------- - -Reference< XTreeNode > SAL_CALL UnoTreeControl::getNodeForLocation( sal_Int32 x, sal_Int32 y ) throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getNodeForLocation(x,y); -} - -// ------------------------------------------------------------------- - -Reference< XTreeNode > SAL_CALL UnoTreeControl::getClosestNodeForLocation( sal_Int32 x, sal_Int32 y ) throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getClosestNodeForLocation(x,y); -} - -// ------------------------------------------------------------------- - -awt::Rectangle SAL_CALL UnoTreeControl::getNodeRect( const Reference< XTreeNode >& Node ) throw (IllegalArgumentException, RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->getNodeRect( Node ); -} - -// ------------------------------------------------------------------- - -sal_Bool SAL_CALL UnoTreeControl::isEditing( ) throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->isEditing(); -} - -// ------------------------------------------------------------------- - -sal_Bool SAL_CALL UnoTreeControl::stopEditing() throw (RuntimeException) -{ - return Reference< XTreeControl >( getPeer(), UNO_QUERY_THROW )->stopEditing(); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::cancelEditing() throw (RuntimeException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->cancelEditing(); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::startEditingAtNode( const Reference< XTreeNode >& xNode ) throw (IllegalArgumentException, RuntimeException) -{ - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->startEditingAtNode(xNode); -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::addTreeEditListener( const Reference< XTreeEditListener >& xListener ) throw (RuntimeException) -{ - maTreeEditListeners.addInterface( xListener ); - if( getPeer().is() && (maTreeEditListeners.getLength() == 1) ) - { - // maSelectionListeners acts as a proxy, - // add it to the peer if this is the first listener added to that proxy - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->addTreeEditListener(&maTreeEditListeners); - } -} - -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::removeTreeEditListener( const Reference< XTreeEditListener >& xListener ) throw (RuntimeException) -{ - if( getPeer().is() && (maTreeEditListeners.getLength() == 1) ) - { - // maSelectionListeners acts as a proxy, - // remove it from the peer if this is the last listener removed from that proxy - Reference< XWindowPeer > xGcc3WorkaroundTemporary( getPeer()); - Reference< XTreeControl >( xGcc3WorkaroundTemporary, UNO_QUERY_THROW )->removeTreeEditListener(&maTreeEditListeners); - } - maTreeEditListeners.removeInterface( xListener ); -} - -// ------------------------------------------------------------------- -// XComponent -// ------------------------------------------------------------------- - -void SAL_CALL UnoTreeControl::dispose( ) throw(RuntimeException) -{ - lang::EventObject aEvt; - aEvt.Source = static_cast< ::cppu::OWeakObject* >(this); - maSelectionListeners.disposeAndClear( aEvt ); - maTreeExpansionListeners.disposeAndClear( aEvt ); - UnoControl::dispose(); -} - -void UnoTreeControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException) -{ - UnoControlBase::createPeer( rxToolkit, rParentPeer ); - - Reference< XTreeControl > xTree( getPeer(), UNO_QUERY_THROW ); - if( maSelectionListeners.getLength() ) - xTree->addSelectionChangeListener( &maSelectionListeners ); - if( maTreeExpansionListeners.getLength() ) - xTree->addTreeExpansionListener( &maTreeExpansionListeners ); -} - -} - -Reference< XInterface > SAL_CALL TreeControl_CreateInstance( const Reference< XMultiServiceFactory >& i_factory ) -{ - return Reference < XInterface >( ( ::cppu::OWeakObject* ) new ::toolkit::UnoTreeControl( i_factory ) ); -} - -Reference< XInterface > SAL_CALL TreeControlModel_CreateInstance( const Reference< XMultiServiceFactory >& i_factory ) -{ - return Reference < XInterface >( ( ::cppu::OWeakObject* ) new ::toolkit::UnoTreeModel( i_factory ) ); -} - -void SAL_CALL TreeEditListenerMultiplexer::nodeEditing( const Reference< XTreeNode >& Node ) throw (RuntimeException, ::com::sun::star::util::VetoException) -{ - ::cppu::OInterfaceIteratorHelper aIt( *this ); - while( aIt.hasMoreElements() ) - { - Reference< XTreeEditListener > xListener(static_cast< XTreeEditListener* >( aIt.next() ) ); - try - { - xListener->nodeEditing( Node ); - } - catch( DisposedException& e ) - { - OSL_ENSURE( e.Context.is(), "caught DisposedException with empty Context field" ); - if ( e.Context == xListener || !e.Context.is() ) - aIt.remove(); - } - catch( RuntimeException& e ) - { - (void)e; - DISPLAY_EXCEPTION( TreeEditListenerMultiplexer, nodeEditing, e ) - } - } -} - -void SAL_CALL TreeEditListenerMultiplexer::nodeEdited( const Reference< XTreeNode >& Node, const OUString& NewText ) throw (RuntimeException) -{ - ::cppu::OInterfaceIteratorHelper aIt( *this ); - while( aIt.hasMoreElements() ) - { - Reference< XTreeEditListener > xListener( static_cast< XTreeEditListener* >( aIt.next() ) ); - try - { - xListener->nodeEdited( Node, NewText ); - } - catch( DisposedException& e ) - { - OSL_ENSURE( e.Context.is(), "caught DisposedException with empty Context field" ); - if ( e.Context == xListener || !e.Context.is() ) - aIt.remove(); - } - catch( RuntimeException& e ) - { - (void)e; - DISPLAY_EXCEPTION( TreeEditListenerMultiplexer, nodeEdited, e ) - } - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |