summaryrefslogtreecommitdiff
path: root/toolkit
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2008-03-06 10:44:46 +0000
committerKurt Zenker <kz@openoffice.org>2008-03-06 10:44:46 +0000
commit8725d0132c3a2cae87e030f1db0b4db48ebc1270 (patch)
tree054c235556af25c68c763e55e38565b8e06a4dd0 /toolkit
parentf82df298b6c8183bffb6d77e340f9e0be71495ee (diff)
INTEGRATION: CWS layout_DEV300 (1.1.2); FILE ADDED
2008/02/12 11:05:46 jcn 1.1.2.2: Annotate classes with TOOLKIT_DLLPUBLIC. Remove -fvisibility=default, -fno-visibility-inlines-hidden hack. 2008/02/08 18:44:43 jcn 1.1.2.1: Initial toolkit import from ee9a2fcc29d7e2f01cc80ef7c13bf7bc7d55ae7e. layout/source/awt -> toolkit/source/awt layout/source/core -> toolkit/source/layout layout/source/wrapper -> toolkit/source/vclcompat layout/inc/layout -> toolkit/inc/layout layout/source/inc -> toolkit/inc/layout layout/workben -> toolkit/workben/layout That's ooo-build trunk r11539 @ ooh680-m5/src680-m245.
Diffstat (limited to 'toolkit')
-rw-r--r--toolkit/source/layout/factory.cxx134
1 files changed, 134 insertions, 0 deletions
diff --git a/toolkit/source/layout/factory.cxx b/toolkit/source/layout/factory.cxx
new file mode 100644
index 000000000000..738eee678411
--- /dev/null
+++ b/toolkit/source/layout/factory.cxx
@@ -0,0 +1,134 @@
+#include "factory.hxx"
+
+#include <com/sun/star/registry/XRegistryKey.hpp>
+#include <com/sun/star/registry/InvalidRegistryException.hpp>
+#include <cppuhelper/factory.hxx>
+
+#include "root.hxx"
+
+using namespace ::com::sun::star;
+using namespace layoutimpl;
+
+extern "C"
+{
+
+ TOOLKIT_DLLPUBLIC void
+ SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ )
+ {
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+ }
+
+ TOOLKIT_DLLPUBLIC void * SAL_CALL
+ component_getFactory( const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
+ {
+ void * pRet = 0;
+
+ ::rtl::OUString aImplName( ::rtl::OUString::createFromAscii( pImplName ) );
+ uno::Reference< lang::XSingleServiceFactory > xFactory;
+
+ if ( pServiceManager && aImplName.equals( LayoutFactory::impl_staticGetImplementationName() ) )
+ xFactory = ::cppu::createOneInstanceFactory( reinterpret_cast< lang::XMultiServiceFactory*>( pServiceManager ),
+ LayoutFactory::impl_staticGetImplementationName(),
+ LayoutFactory::impl_staticCreateSelfInstance,
+ LayoutFactory::impl_staticGetSupportedServiceNames() );
+ if ( xFactory.is() )
+ {
+ xFactory->acquire();
+ pRet = xFactory.get();
+ }
+
+ return pRet;
+ }
+
+ TOOLKIT_DLLPUBLIC sal_Bool SAL_CALL
+ component_writeInfo( void * /*pServiceManager*/, void * pRegistryKey )
+ {
+ if ( pRegistryKey )
+ {
+ try
+ {
+ uno::Reference< registry::XRegistryKey > xKey( reinterpret_cast< registry::XRegistryKey* >( pRegistryKey ) );
+ uno::Reference< registry::XRegistryKey > xNewKey;
+
+ xNewKey = xKey->createKey( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("/") ) +
+ LayoutFactory::impl_staticGetImplementationName() +
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/UNO/SERVICES") ) );
+
+ const uno::Sequence< ::rtl::OUString > aServices = LayoutFactory::impl_staticGetSupportedServiceNames();
+ for( sal_Int32 i = 0; i < aServices.getLength(); i++ )
+ xNewKey->createKey( aServices.getConstArray()[i] );
+
+ return sal_True;
+ }
+ catch (registry::InvalidRegistryException &)
+ { OSL_ENSURE( sal_False, "### InvalidRegistryException!" ); }
+ }
+ return sal_False;
+ }
+
+} // extern "C"
+
+// Component registration
+::rtl::OUString SAL_CALL LayoutFactory::impl_staticGetImplementationName()
+{
+ return ::rtl::OUString::createFromAscii( "com.sun.star.comp.awt.Layout" );
+}
+
+uno::Sequence< ::rtl::OUString > SAL_CALL LayoutFactory::impl_staticGetSupportedServiceNames()
+{
+ uno::Sequence< ::rtl::OUString > aRet(2);
+ aRet[0] = ::rtl::OUString::createFromAscii("com.sun.star.awt.Layout");
+ aRet[1] = ::rtl::OUString::createFromAscii("com.sun.star.comp.awt.Layout");
+ return aRet;
+}
+
+uno::Reference< uno::XInterface > SAL_CALL LayoutFactory::impl_staticCreateSelfInstance(
+ const uno::Reference< lang::XMultiServiceFactory >& xServiceManager )
+{
+ return uno::Reference< uno::XInterface >( *new LayoutFactory( xServiceManager ) );
+}
+
+// XServiceInfo
+::rtl::OUString SAL_CALL LayoutFactory::getImplementationName()
+ throw ( uno::RuntimeException )
+{
+ return impl_staticGetImplementationName();
+}
+
+uno::Sequence< ::rtl::OUString > SAL_CALL LayoutFactory::getSupportedServiceNames()
+ throw ( uno::RuntimeException )
+{
+ return impl_staticGetSupportedServiceNames();
+}
+
+sal_Bool SAL_CALL LayoutFactory::supportsService( const ::rtl::OUString& ServiceName )
+ throw ( uno::RuntimeException )
+{
+ uno::Sequence< ::rtl::OUString > aSeq = impl_staticGetSupportedServiceNames();
+ for( sal_Int32 i = 0; i < aSeq.getLength(); i++ )
+ if ( ServiceName.compareTo( aSeq[i] ) == 0 )
+ return sal_True;
+
+ return sal_False;
+}
+
+// XSingleServiceFactory
+uno::Reference< uno::XInterface > SAL_CALL LayoutFactory::createInstance()
+ throw ( uno::Exception,
+ uno::RuntimeException )
+{
+ return uno::Reference< uno::XInterface >(
+ static_cast< OWeakObject* >( new LayoutRoot( m_xFactory ) ),
+ uno::UNO_QUERY );
+}
+
+uno::Reference< uno::XInterface > SAL_CALL LayoutFactory::createInstanceWithArguments(
+ const uno::Sequence< uno::Any >& aArguments )
+ throw ( uno::Exception,
+ uno::RuntimeException )
+{
+ uno::Reference< uno::XInterface > layout = createInstance();
+ uno::Reference< lang::XInitialization > xInit( layout, uno::UNO_QUERY );
+ xInit->initialize( aArguments );
+ return layout;
+}