From cd3ef5819cb644515289776b8872970218c0ac65 Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Thu, 18 Mar 2010 15:25:13 +0100 Subject: slidecopy: initial implementation for custom tool panels The idea is to allow third-party components to plug additional tool panels into the task pane, by using the drawing framework (http://wiki.services.openoffice.org/wiki/Drawing_framework). This first step is not finished at all, it just adds a configuration scheme/data for such custom tool panels, and implements basic functionality in the ToolPanelDeck to respect this config data. Additionally, the first version of an example extension for a custom tool panel is implemented in sd/workben/custompanel. Still, except showing a drawer in the tool panel deck, representing the custom panel, nothing works. More to come :) --- sd/workben/custompanel/Impress.xcu | 34 ++++++ sd/workben/custompanel/colorpanel.map | 8 ++ sd/workben/custompanel/ctp_factory.cxx | 187 ++++++++++++++++++++++++++++++++ sd/workben/custompanel/ctp_factory.hxx | 114 +++++++++++++++++++ sd/workben/custompanel/ctp_panel.cxx | 90 +++++++++++++++ sd/workben/custompanel/ctp_panel.hxx | 79 ++++++++++++++ sd/workben/custompanel/ctp_services.cxx | 92 ++++++++++++++++ sd/workben/custompanel/delzip | 0 sd/workben/custompanel/description.xml | 16 +++ sd/workben/custompanel/makefile.mk | 102 +++++++++++++++++ sd/workben/custompanel/manifest.xml | 8 ++ 11 files changed, 730 insertions(+) create mode 100644 sd/workben/custompanel/Impress.xcu create mode 100644 sd/workben/custompanel/colorpanel.map create mode 100644 sd/workben/custompanel/ctp_factory.cxx create mode 100644 sd/workben/custompanel/ctp_factory.hxx create mode 100644 sd/workben/custompanel/ctp_panel.cxx create mode 100644 sd/workben/custompanel/ctp_panel.hxx create mode 100644 sd/workben/custompanel/ctp_services.cxx create mode 100644 sd/workben/custompanel/delzip create mode 100644 sd/workben/custompanel/description.xml create mode 100644 sd/workben/custompanel/makefile.mk create mode 100644 sd/workben/custompanel/manifest.xml (limited to 'sd/workben') diff --git a/sd/workben/custompanel/Impress.xcu b/sd/workben/custompanel/Impress.xcu new file mode 100644 index 000000000000..1c7bb5f6b102 --- /dev/null +++ b/sd/workben/custompanel/Impress.xcu @@ -0,0 +1,34 @@ + + + + + + + + + private:resource/view/SingleColorView + + + Single Color Panel + + + + + + + + + org.openoffice.example.colorpanel.ResourceFactory + + + + + private:resource/view/SingleColorView + + + + + + + + diff --git a/sd/workben/custompanel/colorpanel.map b/sd/workben/custompanel/colorpanel.map new file mode 100644 index 000000000000..f4ed78b9e970 --- /dev/null +++ b/sd/workben/custompanel/colorpanel.map @@ -0,0 +1,8 @@ +UDK_3_0_0 { + global: + component_getImplementationEnvironment; + component_writeInfo; + component_getFactory; + local: + *; +}; diff --git a/sd/workben/custompanel/ctp_factory.cxx b/sd/workben/custompanel/ctp_factory.cxx new file mode 100644 index 000000000000..573c68ebfecb --- /dev/null +++ b/sd/workben/custompanel/ctp_factory.cxx @@ -0,0 +1,187 @@ +/************************************************************************* + * 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 + * + * for a copy of the LGPLv3 License. + * +************************************************************************/ + +#include "precompiled_sd.hxx" + +#include "ctp_factory.hxx" +#include "ctp_panel.hxx" + +/** === begin UNO includes === **/ +#include +#include +#include +/** === end UNO includes === **/ + +//...................................................................................................................... +namespace sd { namespace colortoolpanel +{ +//...................................................................................................................... + + /** === begin UNO using === **/ + using ::com::sun::star::uno::Reference; + using ::com::sun::star::uno::XInterface; + using ::com::sun::star::uno::UNO_QUERY; + using ::com::sun::star::uno::UNO_QUERY_THROW; + using ::com::sun::star::uno::UNO_SET_THROW; + using ::com::sun::star::uno::Exception; + using ::com::sun::star::uno::RuntimeException; + using ::com::sun::star::uno::Any; + using ::com::sun::star::uno::makeAny; + using ::com::sun::star::uno::Sequence; + using ::com::sun::star::uno::Type; + using ::com::sun::star::uno::XComponentContext; + using ::com::sun::star::drawing::framework::XResourceId; + using ::com::sun::star::drawing::framework::XResource; + using ::com::sun::star::lang::NotInitializedException; + using ::com::sun::star::lang::IllegalArgumentException; + using ::com::sun::star::drawing::framework::XResourceFactoryManager; + /** === end UNO using === **/ + + //================================================================================================================== + //= helper + //================================================================================================================== + namespace + { + const ::rtl::OUString& lcl_getSingleColorViewURL() + { + static ::rtl::OUString s_sSingleColorViewURL( RTL_CONSTASCII_USTRINGPARAM( "private:resource/view/SingleColorView" ) ); + return s_sSingleColorViewURL; + } + } + + //================================================================================================================== + //= ResourceFactory + //================================================================================================================== + //------------------------------------------------------------------------------------------------------------------ + ResourceFactory::ResourceFactory( const Reference< XComponentContext >& i_rContext ) + :m_xContext( i_rContext ) + { + } + + //------------------------------------------------------------------------------------------------------------------ + ResourceFactory::~ResourceFactory() + { + } + + //------------------------------------------------------------------------------------------------------------------ + Reference< XResource > SAL_CALL ResourceFactory::createResource( const Reference< XResourceId >& i_rResourceId ) throw (RuntimeException) + { + FactoryGuard aGuard( *this ); + if ( !i_rResourceId.is() ) + // TODO: the API should allow me to throw an IllegalArgumentException here + throw NULL; + + const ::rtl::OUString sResourceURL( i_rResourceId->getResourceURL() ); + if ( sResourceURL != lcl_getSingleColorViewURL() ) + return NULL; + + return new SingleColorPanel( m_xContext, m_xControllerManager->getConfigurationController(), i_rResourceId ); + } + + //------------------------------------------------------------------------------------------------------------------ + void SAL_CALL ResourceFactory::releaseResource( const Reference< XResource >& i_rResource ) throw (RuntimeException) + { + FactoryGuard aGuard( *this ); + // TODO: place your code here + (void)i_rResource; + } + + //------------------------------------------------------------------------------------------------------------------ + ::rtl::OUString SAL_CALL ResourceFactory::getImplementationName( ) throw (RuntimeException) + { + return getImplementationName_static(); + } + + //------------------------------------------------------------------------------------------------------------------ + ::rtl::OUString SAL_CALL ResourceFactory::getImplementationName_static( ) throw (RuntimeException) + { + return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.comp.example.colorpanel.ResourceFactory" ) ); + } + + //------------------------------------------------------------------------------------------------------------------ + ::sal_Bool SAL_CALL ResourceFactory::supportsService( const ::rtl::OUString& i_rServiceName ) throw (RuntimeException) + { + const Sequence< ::rtl::OUString > aServiceNames( getSupportedServiceNames() ); + for ( const ::rtl::OUString* serviceName = aServiceNames.getConstArray(); + serviceName != aServiceNames.getConstArray() + aServiceNames.getLength(); + ++serviceName + ) + { + if ( i_rServiceName == *serviceName ) + return sal_True; + } + return sal_False; + } + + //------------------------------------------------------------------------------------------------------------------ + Sequence< ::rtl::OUString > SAL_CALL ResourceFactory::getSupportedServiceNames() throw (RuntimeException) + { + return getSupportedServiceNames_static(); + } + + //------------------------------------------------------------------------------------------------------------------ + Sequence< ::rtl::OUString > SAL_CALL ResourceFactory::getSupportedServiceNames_static() throw (RuntimeException) + { + Sequence< ::rtl::OUString > aServiceNames(1); + aServiceNames[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.example.colorpanel.ResourceFactory" ) ); + return aServiceNames; + } + + //------------------------------------------------------------------------------------------------------------------ + Reference< XInterface > SAL_CALL ResourceFactory::Create( const Reference< XComponentContext >& i_rContext ) throw (RuntimeException) + { + return *( new ResourceFactory( i_rContext ) ); + } + + //------------------------------------------------------------------------------------------------------------------ + void ResourceFactory::checkInitialized( GuardAccess ) const + { + if ( !m_xControllerManager.is() ) + throw NotInitializedException( ::rtl::OUString(), *const_cast< ResourceFactory* >( this ) ); + } + + //------------------------------------------------------------------------------------------------------------------ + void ResourceFactory::checkDisposed( GuardAccess ) const + { + // cannot be disposed currently ... + } + + //------------------------------------------------------------------------------------------------------------------ + void SAL_CALL ResourceFactory::initialize( const Sequence< Any >& i_rArguments ) throw (Exception, RuntimeException) + { + if ( !i_rArguments.getLength() ) + throw IllegalArgumentException(); + + FactoryGuard aGuard( *this, false ); + m_xControllerManager.set( i_rArguments[0], UNO_QUERY_THROW ); + + Reference< XResourceFactoryManager > xFactoryManager( m_xControllerManager->getConfigurationController(), UNO_QUERY_THROW ); + xFactoryManager->addResourceFactory( lcl_getSingleColorViewURL(), this ); + } + +//...................................................................................................................... +} } // namespace sd::colortoolpanel +//...................................................................................................................... diff --git a/sd/workben/custompanel/ctp_factory.hxx b/sd/workben/custompanel/ctp_factory.hxx new file mode 100644 index 000000000000..8f9ff523f5ec --- /dev/null +++ b/sd/workben/custompanel/ctp_factory.hxx @@ -0,0 +1,114 @@ +/************************************************************************* + * 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 + * + * for a copy of the LGPLv3 License. + * +************************************************************************/ + +#ifndef SD_WORKBENCH_CTP_FACTORY_HXX +#define SD_WORKBENCH_CTP_FACTORY_HXX + +/** === begin UNO includes === **/ +#include +#include +#include +#include +#include +/** === end UNO includes === **/ + +#include +#include + +//...................................................................................................................... +namespace sd { namespace colortoolpanel +{ +//...................................................................................................................... + + class FactoryGuard; + + //================================================================================================================== + //= ResourceFactory + //================================================================================================================== + typedef ::cppu::WeakImplHelper3 < ::com::sun::star::drawing::framework::XResourceFactory + , ::com::sun::star::lang::XServiceInfo + , ::com::sun::star::lang::XInitialization + > ResourceFactory_Base; + class ResourceFactory :public ::cppu::BaseMutex + ,public ResourceFactory_Base + { + public: + ResourceFactory( + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& i_rContext + ); + ~ResourceFactory(); + + // XResourceFactory + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::framework::XResource > SAL_CALL createResource( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::framework::XResourceId >& xResourceId ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL releaseResource( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::framework::XResource >& xResource ) throw (::com::sun::star::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); + + // XServiceInfo - static versions + static ::rtl::OUString SAL_CALL getImplementationName_static( ) throw (::com::sun::star::uno::RuntimeException); + static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static( ) throw (::com::sun::star::uno::RuntimeException); + static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL Create( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& i_rContext ) throw (::com::sun::star::uno::RuntimeException); + + // XInitialization + virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + + public: + struct GuardAccess { friend class FactoryGuard; private: GuardAccess() { } }; + + void checkInitialized( GuardAccess ) const; + void checkDisposed( GuardAccess ) const; + ::osl::Mutex& getMutex( GuardAccess ) { return m_aMutex; } + + private: + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > + m_xContext; + ::com::sun::star::uno::Reference< ::com::sun::star::drawing::framework::XControllerManager > + m_xControllerManager; + }; + + class FactoryGuard + { + public: + FactoryGuard( ResourceFactory& i_rFactory, const bool i_bNeedInit = true ) + :m_aGuard( i_rFactory.getMutex( ResourceFactory::GuardAccess() ) ) + { + i_rFactory.checkDisposed( ResourceFactory::GuardAccess() ); + if ( i_bNeedInit ) + i_rFactory.checkInitialized( ResourceFactory::GuardAccess() ); + } + + protected: + ::osl::MutexGuard m_aGuard; + }; + +//...................................................................................................................... +} } // namespace sd::colortoolpanel +//...................................................................................................................... + +#endif // SD_WORKBENCH_CTP_FACTORY_HXX diff --git a/sd/workben/custompanel/ctp_panel.cxx b/sd/workben/custompanel/ctp_panel.cxx new file mode 100644 index 000000000000..dbbbb8c6f273 --- /dev/null +++ b/sd/workben/custompanel/ctp_panel.cxx @@ -0,0 +1,90 @@ +/************************************************************************* + * 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 + * + * for a copy of the LGPLv3 License. + * +************************************************************************/ + +#include "precompiled_sd.hxx" + +#include "ctp_panel.hxx" + +/** === begin UNO includes === **/ +/** === end UNO includes === **/ + +//...................................................................................................................... +namespace sd { namespace colortoolpanel +{ +//...................................................................................................................... + + /** === begin UNO using === **/ + using ::com::sun::star::uno::Reference; + using ::com::sun::star::uno::XInterface; + using ::com::sun::star::uno::UNO_QUERY; + using ::com::sun::star::uno::UNO_QUERY_THROW; + using ::com::sun::star::uno::UNO_SET_THROW; + using ::com::sun::star::uno::Exception; + using ::com::sun::star::uno::RuntimeException; + using ::com::sun::star::uno::Any; + using ::com::sun::star::uno::makeAny; + using ::com::sun::star::uno::Sequence; + using ::com::sun::star::uno::Type; + using ::com::sun::star::drawing::framework::XConfigurationController; + using ::com::sun::star::drawing::framework::XResourceId; + using ::com::sun::star::uno::XComponentContext; + /** === end UNO using === **/ + + //================================================================================================================== + //= class SingleColorPanel + //================================================================================================================== + //------------------------------------------------------------------------------------------------------------------ + SingleColorPanel::SingleColorPanel( const Reference< XComponentContext >& i_rContext, + const Reference< XConfigurationController >& i_rConfigController, const Reference< XResourceId >& i_rResourceId ) + :m_xContext( i_rContext ) + ,m_xResourceId( i_rResourceId ) + { + // TODO: retrieve the resource object for the anchor, ask it for its XPane interface, retrieve the window + // associated with it, create our own window as child of the pane's window + (void)i_rConfigController; + } + + //------------------------------------------------------------------------------------------------------------------ + SingleColorPanel::~SingleColorPanel() + { + } + + //-------------------------------------------------------------------- + Reference< XResourceId > SAL_CALL SingleColorPanel::getResourceId( ) throw (RuntimeException) + { + return m_xResourceId; + } + + //-------------------------------------------------------------------- + ::sal_Bool SAL_CALL SingleColorPanel::isAnchorOnly( ) throw (RuntimeException) + { + return sal_False; + } + + +//...................................................................................................................... +} } // namespace sd::colortoolpanel +//...................................................................................................................... diff --git a/sd/workben/custompanel/ctp_panel.hxx b/sd/workben/custompanel/ctp_panel.hxx new file mode 100644 index 000000000000..c7ecb7c19795 --- /dev/null +++ b/sd/workben/custompanel/ctp_panel.hxx @@ -0,0 +1,79 @@ +/************************************************************************* + * 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 + * + * for a copy of the LGPLv3 License. + * +************************************************************************/ + +#ifndef SD_WORKBENCH_CTP_PANEL_HXX +#define SD_WORKBENCH_CTP_PANEL_HXX + +/** === begin UNO includes === **/ +#include +#include +#include +#include +/** === end UNO includes === **/ + +#include +#include + +//...................................................................................................................... +namespace sd { namespace colortoolpanel +{ +//...................................................................................................................... + + //================================================================================================================== + //= class SingleColorPanel + //================================================================================================================== + typedef ::cppu::WeakImplHelper1 < ::com::sun::star::drawing::framework::XView + > SingleColorPanel_Base; + class SingleColorPanel :public ::cppu::BaseMutex + ,public SingleColorPanel_Base + { + public: + SingleColorPanel( + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& i_rContext, + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::framework::XConfigurationController >& i_rConfigController, + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::framework::XResourceId >& i_rResourceId + ); + + // XView + // (no methods) + + // XResource + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::framework::XResourceId > SAL_CALL getResourceId( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isAnchorOnly( ) throw (::com::sun::star::uno::RuntimeException); + + protected: + ~SingleColorPanel(); + + private: + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext; + ::com::sun::star::uno::Reference< ::com::sun::star::drawing::framework::XResourceId > m_xResourceId; + }; + +//...................................................................................................................... +} } // namespace sd::colortoolpanel +//...................................................................................................................... + +#endif // SD_WORKBENCH_CTP_PANEL_HXX diff --git a/sd/workben/custompanel/ctp_services.cxx b/sd/workben/custompanel/ctp_services.cxx new file mode 100644 index 000000000000..67fd5af14c7b --- /dev/null +++ b/sd/workben/custompanel/ctp_services.cxx @@ -0,0 +1,92 @@ +/************************************************************************* + * 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 + * + * for a copy of the LGPLv3 License. + * +************************************************************************/ + +#include "precompiled_sd.hxx" + +#include "ctp_factory.hxx" + +/** === begin UNO includes === **/ +/** === end UNO includes === **/ + +#include + +//...................................................................................................................... +namespace sd { namespace colortoolpanel +{ +//...................................................................................................................... + + /** === begin UNO using === **/ + using ::com::sun::star::uno::Reference; + using ::com::sun::star::uno::XInterface; + using ::com::sun::star::uno::UNO_QUERY; + using ::com::sun::star::uno::UNO_QUERY_THROW; + using ::com::sun::star::uno::UNO_SET_THROW; + using ::com::sun::star::uno::Exception; + using ::com::sun::star::uno::RuntimeException; + using ::com::sun::star::uno::Any; + using ::com::sun::star::uno::makeAny; + using ::com::sun::star::uno::Sequence; + using ::com::sun::star::uno::Type; + /** === end UNO using === **/ + + //================================================================================================================== + //= descriptors for the services implemented in this component + //================================================================================================================== + static struct ::cppu::ImplementationEntry s_aServiceEntries[] = + { + { + ResourceFactory::Create, + ResourceFactory::getImplementationName_static, + ResourceFactory::getSupportedServiceNames_static, + ::cppu::createSingleComponentFactory, NULL, 0 + }, + { 0, 0, 0, 0, 0, 0 } + }; + +//...................................................................................................................... +} } // namespace sd::colortoolpanel +//...................................................................................................................... + +extern "C" +{ + //------------------------------------------------------------------------------------------------------------------ + void SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** ) + { + *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; + } + + //------------------------------------------------------------------------------------------------------------------ + sal_Bool SAL_CALL component_writeInfo( void * pServiceManager, void * pRegistryKey ) + { + return ::cppu::component_writeInfoHelper( pServiceManager, pRegistryKey, ::sd::colortoolpanel::s_aServiceEntries ); + } + + //------------------------------------------------------------------------------------------------------------------ + void * SAL_CALL component_getFactory( const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey ) + { + return ::cppu::component_getFactoryHelper( pImplName, pServiceManager, pRegistryKey , ::sd::colortoolpanel::s_aServiceEntries ); + } +} diff --git a/sd/workben/custompanel/delzip b/sd/workben/custompanel/delzip new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/sd/workben/custompanel/description.xml b/sd/workben/custompanel/description.xml new file mode 100644 index 000000000000..a1dbdf4f125d --- /dev/null +++ b/sd/workben/custompanel/description.xml @@ -0,0 +1,16 @@ + + + + + + + + Custom Tool Panel Example + + + + + diff --git a/sd/workben/custompanel/makefile.mk b/sd/workben/custompanel/makefile.mk new file mode 100644 index 000000000000..7703b7163fa3 --- /dev/null +++ b/sd/workben/custompanel/makefile.mk @@ -0,0 +1,102 @@ +#************************************************************************* +# +# 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 +# +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +PRJ=../.. +PRJNAME=sd + +TARGET=colorpanel +ENABLE_EXCEPTIONS=TRUE +LIBTARGET=NO +EXTENSIONNAME:=colored-tool-panel + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk + +#------------------------------------------------------------------- + +#---- extension version +EXTENSION_VERSION_BASE=0.1 +.IF ( "$(CWS_WORK_STAMP)" == "" ) || ( "$(UPDATER)" == "YES" ) + EXTENSION_VERSION=$(EXTENSION_VERSION_BASE) +.ELSE + EXTENSION_VERSION=$(EXTENSION_VERSION_BASE).cws.$(CWS_WORK_STAMP) +.ENDIF + +#---- extension title package name +EXTENSION_TITLE=Custom Tool Panel Example +EXTENSION_ZIPNAME=$(EXTENSIONNAME)-$(EXTENSION_VERSION_BASE)-$(RTL_OS:l)-$(RTL_ARCH:l) + +#-------------------------------------------------- + +SHL1DLLPRE= +SHL1TARGET=$(TARGET).uno +LIB1TARGET=$(SLB)/$(SHL1TARGET).lib +LIB1OBJFILES= \ + $(SLO)/ctp_factory.obj \ + $(SLO)/ctp_services.obj \ + $(SLO)/ctp_panel.obj + +SHL1STDLIBS= \ + $(CPPULIB) \ + $(SALLIB) \ + $(SALHELPERLIB) \ + $(CPPUHELPERLIB) + +SHL1VERSIONMAP=$(TARGET).map +SHL1LIBS= $(LIB1TARGET) +SHL1DEF= $(MISC)/$(SHL1TARGET).def +SHL1RPATH= OXT +DEF1NAME= $(SHL1TARGET) + +# create Extension ----------------------------- + +COMPONENT_CONFIGDEST=. + +COMPONENT_XCU = \ + $(EXTENSIONDIR)/Impress.xcu + +COMPONENT_LIBRARIES = \ + $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST) + +# ........ dependencies for packaging the extension ........ +EXTENSION_PACKDEPS=makefile.mk + +# --- Targets ------------------------------------------------------ +.INCLUDE : extension_pre.mk +.INCLUDE : target.mk +.INCLUDE : extension_post.mk + +# xcu files: copy + +#$(COMPONENT_XCU) : ./Impress.xcu +# @-$(MKDIRHIER) $(@:d) +# $(COPY) $< $@ + +#$(COMPONENT_LIBRARY) : $(BIN)/$(SHL1TARGET)$(DLLPOST) +# @@-$(MKDIRHIER) $(@:d) +# @$(COPY) $< $@ diff --git a/sd/workben/custompanel/manifest.xml b/sd/workben/custompanel/manifest.xml new file mode 100644 index 000000000000..96f62afe4e27 --- /dev/null +++ b/sd/workben/custompanel/manifest.xml @@ -0,0 +1,8 @@ + + + + + + -- cgit