summaryrefslogtreecommitdiff
path: root/toolkit/source/controls/grid/gridcontrol.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/source/controls/grid/gridcontrol.cxx')
-rw-r--r--toolkit/source/controls/grid/gridcontrol.cxx456
1 files changed, 0 insertions, 456 deletions
diff --git a/toolkit/source/controls/grid/gridcontrol.cxx b/toolkit/source/controls/grid/gridcontrol.cxx
deleted file mode 100644
index 69fb1e1f4f..0000000000
--- a/toolkit/source/controls/grid/gridcontrol.cxx
+++ /dev/null
@@ -1,456 +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 "gridcontrol.hxx"
-#include "grideventforwarder.hxx"
-
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/view/SelectionType.hpp>
-#include <com/sun/star/awt/grid/XGridDataModel.hpp>
-#include <com/sun/star/awt/grid/XMutableGridDataModel.hpp>
-#include <com/sun/star/awt/grid/DefaultGridDataModel.hpp>
-#include <com/sun/star/awt/grid/SortableGridDataModel.hpp>
-#include <com/sun/star/awt/grid/XGridColumnModel.hpp>
-#include <toolkit/helper/unopropertyarrayhelper.hxx>
-#include <toolkit/helper/property.hxx>
-#include <com/sun/star/awt/XVclWindowPeer.hpp>
-#include <comphelper/processfactory.hxx>
-#include <tools/diagnose_ex.h>
-#include <tools/color.hxx>
-
-using ::rtl::OUString;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::awt;
-using namespace ::com::sun::star::awt::grid;
-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
-{
-//======================================================================================================================
-//= UnoGridModel
-//======================================================================================================================
-namespace
-{
- Reference< XGridDataModel > lcl_getDefaultDataModel_throw( ::comphelper::ComponentContext const & i_context )
- {
- Reference< XMutableGridDataModel > const xDelegatorModel( DefaultGridDataModel::create( i_context.getUNOContext() ), UNO_QUERY_THROW );
- Reference< XGridDataModel > const xDataModel( SortableGridDataModel::create( i_context.getUNOContext(), xDelegatorModel ), UNO_QUERY_THROW );
- return xDataModel;
- }
-
- Reference< XGridColumnModel > lcl_getDefaultColumnModel_throw( ::comphelper::ComponentContext const & i_context )
- {
- Reference< XGridColumnModel > const xColumnModel( i_context.createComponent( "com.sun.star.awt.grid.DefaultGridColumnModel" ), UNO_QUERY_THROW );
- return xColumnModel;
- }
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-UnoGridModel::UnoGridModel( 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_FILLCOLOR );
- ImplRegisterProperty( BASEPROPERTY_HELPTEXT );
- ImplRegisterProperty( BASEPROPERTY_HELPURL );
- ImplRegisterProperty( BASEPROPERTY_PRINTABLE );
- ImplRegisterProperty( BASEPROPERTY_SIZEABLE ); // resizeable
- ImplRegisterProperty( BASEPROPERTY_HSCROLL );
- ImplRegisterProperty( BASEPROPERTY_VSCROLL );
- ImplRegisterProperty( BASEPROPERTY_TABSTOP );
- ImplRegisterProperty( BASEPROPERTY_GRID_SHOWROWHEADER );
- ImplRegisterProperty( BASEPROPERTY_ROW_HEADER_WIDTH );
- ImplRegisterProperty( BASEPROPERTY_GRID_SHOWCOLUMNHEADER );
- ImplRegisterProperty( BASEPROPERTY_COLUMN_HEADER_HEIGHT );
- ImplRegisterProperty( BASEPROPERTY_ROW_HEIGHT );
- ImplRegisterProperty( BASEPROPERTY_GRID_DATAMODEL, makeAny( lcl_getDefaultDataModel_throw( maContext ) ) );
- ImplRegisterProperty( BASEPROPERTY_GRID_COLUMNMODEL, makeAny( lcl_getDefaultColumnModel_throw( maContext ) ) );
- ImplRegisterProperty( BASEPROPERTY_GRID_SELECTIONMODE );
- ImplRegisterProperty( BASEPROPERTY_FONTRELIEF );
- ImplRegisterProperty( BASEPROPERTY_FONTEMPHASISMARK );
- ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR );
- ImplRegisterProperty( BASEPROPERTY_TEXTCOLOR );
- ImplRegisterProperty( BASEPROPERTY_TEXTLINECOLOR );
- ImplRegisterProperty( BASEPROPERTY_USE_GRID_LINES );
- ImplRegisterProperty( BASEPROPERTY_GRID_LINE_COLOR );
- ImplRegisterProperty( BASEPROPERTY_GRID_HEADER_BACKGROUND );
- ImplRegisterProperty( BASEPROPERTY_GRID_HEADER_TEXT_COLOR );
- ImplRegisterProperty( BASEPROPERTY_GRID_ROW_BACKGROUND_COLORS );
- ImplRegisterProperty( BASEPROPERTY_VERTICALALIGN );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-UnoGridModel::UnoGridModel( const UnoGridModel& rModel )
- :UnoControlModel( rModel )
-{
- osl_incrementInterlockedCount( &m_refCount );
- {
- Reference< XGridDataModel > xDataModel;
- // clone the data model
- const Reference< XFastPropertySet > xCloneSource( &const_cast< UnoGridModel& >( rModel ) );
- try
- {
- const Reference< XCloneable > xCloneable( xCloneSource->getFastPropertyValue( BASEPROPERTY_GRID_DATAMODEL ), UNO_QUERY_THROW );
- xDataModel.set( xCloneable->createClone(), UNO_QUERY_THROW );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- if ( !xDataModel.is() )
- xDataModel = lcl_getDefaultDataModel_throw( maContext );
- UnoControlModel::setFastPropertyValue_NoBroadcast( BASEPROPERTY_GRID_DATAMODEL, makeAny( xDataModel ) );
- // do *not* use setFastPropertyValue here: The UnoControlModel ctor did a simple copy of all property values,
- // so before this call here, we share our data model with the own of the clone source. setFastPropertyValue,
- // then, disposes the old data model - which means the data model which in fact belongs to the clone source.
- // so, call the UnoControlModel's impl-method for setting the value.
-
- // clone the column model
- Reference< XGridColumnModel > xColumnModel;
- try
- {
- const Reference< XCloneable > xCloneable( xCloneSource->getFastPropertyValue( BASEPROPERTY_GRID_COLUMNMODEL ), UNO_QUERY_THROW );
- xColumnModel.set( xCloneable->createClone(), UNO_QUERY_THROW );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- if ( !xColumnModel.is() )
- xColumnModel = lcl_getDefaultColumnModel_throw( maContext );
- UnoControlModel::setFastPropertyValue_NoBroadcast( BASEPROPERTY_GRID_COLUMNMODEL, makeAny( xColumnModel ) );
- // same comment as above: do not use our own setPropertyValue here.
- }
- osl_decrementInterlockedCount( &m_refCount );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-UnoControlModel* UnoGridModel::Clone() const
-{
- return new UnoGridModel( *this );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-namespace
-{
- void lcl_dispose_nothrow( const Any& i_component )
- {
- try
- {
- const Reference< XComponent > xComponent( i_component, UNO_QUERY_THROW );
- xComponent->dispose();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridModel::dispose( ) throw(RuntimeException)
-{
- lcl_dispose_nothrow( getFastPropertyValue( BASEPROPERTY_GRID_COLUMNMODEL ) );
- lcl_dispose_nothrow( getFastPropertyValue( BASEPROPERTY_GRID_DATAMODEL ) );
-
- UnoControlModel::dispose();
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridModel::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw (Exception)
-{
- Any aOldSubModel;
- if ( ( nHandle == BASEPROPERTY_GRID_COLUMNMODEL ) || ( nHandle == BASEPROPERTY_GRID_DATAMODEL ) )
- {
- aOldSubModel = getFastPropertyValue( nHandle );
- if ( aOldSubModel == rValue )
- {
- OSL_ENSURE( false, "UnoGridModel::setFastPropertyValue_NoBroadcast: setting the same value, again!" );
- // shouldn't this have been caught by convertFastPropertyValue?
- aOldSubModel.clear();
- }
- }
-
- UnoControlModel::setFastPropertyValue_NoBroadcast( nHandle, rValue );
-
- if ( aOldSubModel.hasValue() )
- lcl_dispose_nothrow( aOldSubModel );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-OUString UnoGridModel::getServiceName() throw(RuntimeException)
-{
- return OUString::createFromAscii( szServiceName_GridControlModel );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-Any UnoGridModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
-{
- switch( nPropId )
- {
- case BASEPROPERTY_DEFAULTCONTROL:
- return uno::makeAny( ::rtl::OUString::createFromAscii( szServiceName_GridControl ) );
- case BASEPROPERTY_GRID_SELECTIONMODE:
- return uno::makeAny( SelectionType(1) );
- case BASEPROPERTY_GRID_SHOWROWHEADER:
- case BASEPROPERTY_USE_GRID_LINES:
- return uno::makeAny( (sal_Bool)sal_False );
- case BASEPROPERTY_ROW_HEADER_WIDTH:
- return uno::makeAny( sal_Int32( 10 ) );
- case BASEPROPERTY_GRID_SHOWCOLUMNHEADER:
- return uno::makeAny( (sal_Bool)sal_True );
- case BASEPROPERTY_COLUMN_HEADER_HEIGHT:
- case BASEPROPERTY_ROW_HEIGHT:
- case BASEPROPERTY_GRID_HEADER_BACKGROUND:
- case BASEPROPERTY_GRID_HEADER_TEXT_COLOR:
- case BASEPROPERTY_GRID_LINE_COLOR:
- case BASEPROPERTY_GRID_ROW_BACKGROUND_COLORS:
- return Any();
- default:
- return UnoControlModel::ImplGetDefaultValue( nPropId );
- }
-
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-::cppu::IPropertyArrayHelper& UnoGridModel::getInfoHelper()
-{
- static UnoPropertyArrayHelper* pHelper = NULL;
- if ( !pHelper )
- {
- Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
- pHelper = new UnoPropertyArrayHelper( aIDs );
- }
- return *pHelper;
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-// XMultiPropertySet
-Reference< XPropertySetInfo > UnoGridModel::getPropertySetInfo( ) throw(RuntimeException)
-{
- static Reference< XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
- return xInfo;
-}
-
-
-//======================================================================================================================
-//= UnoGridControl
-//======================================================================================================================
-UnoGridControl::UnoGridControl( const Reference< XMultiServiceFactory >& i_factory )
- :UnoGridControl_Base( i_factory )
- ,mSelectionMode(SelectionType(1))
- ,m_aSelectionListeners( *this )
- ,m_pEventForwarder( new GridEventForwarder( *this ) )
-{
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-UnoGridControl::~UnoGridControl()
-{
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-OUString UnoGridControl::GetComponentServiceName()
-{
- return OUString(RTL_CONSTASCII_USTRINGPARAM("Grid"));
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridControl::dispose( ) throw(RuntimeException)
-{
- lang::EventObject aEvt;
- aEvt.Source = (::cppu::OWeakObject*)this;
- m_aSelectionListeners.disposeAndClear( aEvt );
- UnoControl::dispose();
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException)
-{
- UnoControlBase::createPeer( rxToolkit, rParentPeer );
-
- const Reference< XGridControl > xGrid( getPeer(), UNO_QUERY_THROW );
- xGrid->addSelectionListener(&m_aSelectionListeners);
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-namespace
-{
- void lcl_setEventForwarding( const Reference< XControlModel >& i_gridControlModel, const ::boost::scoped_ptr< GridEventForwarder >& i_listener,
- bool const i_add )
- {
- const Reference< XPropertySet > xModelProps( i_gridControlModel, UNO_QUERY );
- if ( !xModelProps.is() )
- return;
-
- try
- {
- Reference< XContainer > const xColModel(
- xModelProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ColumnModel" ) ) ),
- UNO_QUERY_THROW );
- if ( i_add )
- xColModel->addContainerListener( i_listener.get() );
- else
- xColModel->removeContainerListener( i_listener.get() );
-
- Reference< XGridDataModel > const xDataModel(
- xModelProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "GridDataModel" ) ) ),
- UNO_QUERY_THROW
- );
- Reference< XMutableGridDataModel > const xMutableDataModel( xDataModel, UNO_QUERY );
- if ( xMutableDataModel.is() )
- {
- if ( i_add )
- xMutableDataModel->addGridDataListener( i_listener.get() );
- else
- xMutableDataModel->removeGridDataListener( i_listener.get() );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-sal_Bool SAL_CALL UnoGridControl::setModel( const Reference< XControlModel >& i_model ) throw(RuntimeException)
-{
- lcl_setEventForwarding( getModel(), m_pEventForwarder, false );
- if ( !UnoGridControl_Base::setModel( i_model ) )
- return sal_False;
- lcl_setEventForwarding( getModel(), m_pEventForwarder, true );
- return sal_True;
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-::sal_Int32 UnoGridControl::getRowAtPoint(::sal_Int32 x, ::sal_Int32 y) throw (::com::sun::star::uno::RuntimeException)
-{
- Reference< XGridControl > const xGrid ( getPeer(), UNO_QUERY_THROW );
- return xGrid->getRowAtPoint( x, y );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-::sal_Int32 UnoGridControl::getColumnAtPoint(::sal_Int32 x, ::sal_Int32 y) throw (::com::sun::star::uno::RuntimeException)
-{
- Reference< XGridControl > const xGrid ( getPeer(), UNO_QUERY_THROW );
- return xGrid->getColumnAtPoint( x, y );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-::sal_Int32 SAL_CALL UnoGridControl::getCurrentColumn( ) throw (RuntimeException)
-{
- Reference< XGridControl > const xGrid ( getPeer(), UNO_QUERY_THROW );
- return xGrid->getCurrentColumn();
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-::sal_Int32 SAL_CALL UnoGridControl::getCurrentRow( ) throw (RuntimeException)
-{
- Reference< XGridControl > const xGrid ( getPeer(), UNO_QUERY_THROW );
- return xGrid->getCurrentRow();
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridControl::selectRow( ::sal_Int32 i_rowIndex ) throw (::com::sun::star::uno::RuntimeException)
-{
- Reference< XGridControl >( getPeer(), UNO_QUERY_THROW )->selectRow( i_rowIndex );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridControl::selectAllRows() throw (::com::sun::star::uno::RuntimeException)
-{
- Reference< XGridControl >( getPeer(), UNO_QUERY_THROW )->selectAllRows();
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridControl::deselectRow( ::sal_Int32 i_rowIndex ) throw (::com::sun::star::uno::RuntimeException)
-{
- Reference< XGridControl >( getPeer(), UNO_QUERY_THROW )->deselectRow( i_rowIndex );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridControl::deselectAllRows() throw (::com::sun::star::uno::RuntimeException)
-{
- Reference< XGridControl >( getPeer(), UNO_QUERY_THROW )->deselectAllRows();
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-::com::sun::star::uno::Sequence< ::sal_Int32 > SAL_CALL UnoGridControl::getSelection() throw (::com::sun::star::uno::RuntimeException)
-{
- return Reference< XGridControl >( getPeer(), UNO_QUERY_THROW )->getSelection();
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-::sal_Bool SAL_CALL UnoGridControl::isSelectionEmpty() throw (::com::sun::star::uno::RuntimeException)
-{
- return Reference< XGridControl >( getPeer(), UNO_QUERY_THROW )->isSelectionEmpty();
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-::sal_Bool SAL_CALL UnoGridControl::isSelectedIndex(::sal_Int32 index) throw (::com::sun::star::uno::RuntimeException)
-{
- return Reference< XGridControl >( getPeer(), UNO_QUERY_THROW )->isSelectedIndex( index );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridControl::addSelectionListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::grid::XGridSelectionListener > & listener) throw (::com::sun::star::uno::RuntimeException)
-{
- m_aSelectionListeners.addInterface( listener );
-}
-
-//----------------------------------------------------------------------------------------------------------------------
-void SAL_CALL UnoGridControl::removeSelectionListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::grid::XGridSelectionListener > & listener) throw (::com::sun::star::uno::RuntimeException)
-{
- m_aSelectionListeners.removeInterface( listener );
-}
-
-}//namespace toolkit
-
-Reference< XInterface > SAL_CALL GridControl_CreateInstance( const Reference< XMultiServiceFactory >& i_factory )
-{
- return Reference < XInterface >( ( ::cppu::OWeakObject* ) new ::toolkit::UnoGridControl( i_factory ) );
-}
-
-Reference< XInterface > SAL_CALL GridControlModel_CreateInstance( const Reference< XMultiServiceFactory >& i_factory )
-{
- return Reference < XInterface >( ( ::cppu::OWeakObject* ) new ::toolkit::UnoGridModel( i_factory ) );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */