1*96de5490SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*96de5490SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*96de5490SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*96de5490SAndrew Rist * distributed with this work for additional information 6*96de5490SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*96de5490SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*96de5490SAndrew Rist * "License"); you may not use this file except in compliance 9*96de5490SAndrew Rist * with the License. You may obtain a copy of the License at 10*96de5490SAndrew Rist * 11*96de5490SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*96de5490SAndrew Rist * 13*96de5490SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*96de5490SAndrew Rist * software distributed under the License is distributed on an 15*96de5490SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*96de5490SAndrew Rist * KIND, either express or implied. See the License for the 17*96de5490SAndrew Rist * specific language governing permissions and limitations 18*96de5490SAndrew Rist * under the License. 19*96de5490SAndrew Rist * 20*96de5490SAndrew Rist *************************************************************/ 21*96de5490SAndrew Rist 22*96de5490SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_dbaccess.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "dbmm_module.hxx" 28cdf0e10cSrcweir #include "dbmm_global.hrc" 29cdf0e10cSrcweir #include "macromigrationdialog.hxx" 30cdf0e10cSrcweir 31cdf0e10cSrcweir /** === begin UNO includes === **/ 32cdf0e10cSrcweir #include <com/sun/star/ucb/AlreadyInitializedException.hpp> 33cdf0e10cSrcweir #include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp> 34cdf0e10cSrcweir #include <com/sun/star/frame/XStorable.hpp> 35cdf0e10cSrcweir /** === end UNO includes === **/ 36cdf0e10cSrcweir 37cdf0e10cSrcweir #include <comphelper/componentcontext.hxx> 38cdf0e10cSrcweir #include <svtools/genericunodialog.hxx> 39cdf0e10cSrcweir 40cdf0e10cSrcweir //........................................................................ 41cdf0e10cSrcweir namespace dbmm 42cdf0e10cSrcweir { 43cdf0e10cSrcweir //........................................................................ 44cdf0e10cSrcweir 45cdf0e10cSrcweir /** === begin UNO using === **/ 46cdf0e10cSrcweir using ::com::sun::star::uno::Reference; 47cdf0e10cSrcweir using ::com::sun::star::uno::XInterface; 48cdf0e10cSrcweir using ::com::sun::star::uno::UNO_QUERY; 49cdf0e10cSrcweir using ::com::sun::star::uno::UNO_QUERY_THROW; 50cdf0e10cSrcweir using ::com::sun::star::uno::UNO_SET_THROW; 51cdf0e10cSrcweir using ::com::sun::star::uno::Exception; 52cdf0e10cSrcweir using ::com::sun::star::uno::RuntimeException; 53cdf0e10cSrcweir using ::com::sun::star::uno::Any; 54cdf0e10cSrcweir using ::com::sun::star::uno::makeAny; 55cdf0e10cSrcweir using ::com::sun::star::uno::XComponentContext; 56cdf0e10cSrcweir using ::com::sun::star::uno::Sequence; 57cdf0e10cSrcweir using ::com::sun::star::beans::XPropertySetInfo; 58cdf0e10cSrcweir using ::com::sun::star::beans::Property; 59cdf0e10cSrcweir using ::com::sun::star::ucb::AlreadyInitializedException; 60cdf0e10cSrcweir using ::com::sun::star::sdb::XOfficeDatabaseDocument; 61cdf0e10cSrcweir using ::com::sun::star::lang::IllegalArgumentException; 62cdf0e10cSrcweir using ::com::sun::star::frame::XStorable; 63cdf0e10cSrcweir /** === end UNO using === **/ 64cdf0e10cSrcweir 65cdf0e10cSrcweir //==================================================================== 66cdf0e10cSrcweir //= MacroMigrationDialogService 67cdf0e10cSrcweir //==================================================================== 68cdf0e10cSrcweir class MacroMigrationDialogService; 69cdf0e10cSrcweir typedef ::svt::OGenericUnoDialog MacroMigrationDialogService_Base; 70cdf0e10cSrcweir typedef ::comphelper::OPropertyArrayUsageHelper< MacroMigrationDialogService > MacroMigrationDialogService_PBase; 71cdf0e10cSrcweir 72cdf0e10cSrcweir class MacroMigrationDialogService 73cdf0e10cSrcweir :public MacroMigrationDialogService_Base 74cdf0e10cSrcweir ,public MacroMigrationDialogService_PBase 75cdf0e10cSrcweir ,public MacroMigrationModuleClient 76cdf0e10cSrcweir { 77cdf0e10cSrcweir public: 78cdf0e10cSrcweir MacroMigrationDialogService( const Reference< XComponentContext >& _rxContext ); 79cdf0e10cSrcweir 80cdf0e10cSrcweir // XTypeProvider 81cdf0e10cSrcweir virtual Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(RuntimeException); 82cdf0e10cSrcweir 83cdf0e10cSrcweir // XServiceInfo 84cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL getImplementationName() throw(RuntimeException); 85cdf0e10cSrcweir virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException); 86cdf0e10cSrcweir 87cdf0e10cSrcweir // XInitialization 88cdf0e10cSrcweir 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); 89cdf0e10cSrcweir 90cdf0e10cSrcweir // XPropertySet 91cdf0e10cSrcweir virtual Reference< XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(RuntimeException); 92cdf0e10cSrcweir virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper(); 93cdf0e10cSrcweir 94cdf0e10cSrcweir // OPropertyArrayUsageHelper 95cdf0e10cSrcweir virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const; 96cdf0e10cSrcweir 97cdf0e10cSrcweir // helper for factories 98cdf0e10cSrcweir static Reference< XInterface > SAL_CALL Create( const Reference< XComponentContext >& _rxContext ); 99cdf0e10cSrcweir static ::rtl::OUString SAL_CALL getImplementationName_static() throw(RuntimeException); 100cdf0e10cSrcweir static Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static() throw(RuntimeException); 101cdf0e10cSrcweir 102cdf0e10cSrcweir protected: 103cdf0e10cSrcweir ~MacroMigrationDialogService(); 104cdf0e10cSrcweir 105cdf0e10cSrcweir protected: 106cdf0e10cSrcweir virtual Dialog* createDialog( Window* _pParent ); 107cdf0e10cSrcweir virtual void destroyDialog(); 108cdf0e10cSrcweir 109cdf0e10cSrcweir private: 110cdf0e10cSrcweir ::comphelper::ComponentContext m_aContext; 111cdf0e10cSrcweir Reference< XOfficeDatabaseDocument > m_xDocument; 112cdf0e10cSrcweir }; 113cdf0e10cSrcweir 114cdf0e10cSrcweir //==================================================================== 115cdf0e10cSrcweir //= MacroMigrationDialogService 116cdf0e10cSrcweir //==================================================================== 117cdf0e10cSrcweir //-------------------------------------------------------------------- MacroMigrationDialogService(const Reference<XComponentContext> & _rxContext)118cdf0e10cSrcweir MacroMigrationDialogService::MacroMigrationDialogService( const Reference< XComponentContext >& _rxContext ) 119cdf0e10cSrcweir :MacroMigrationDialogService_Base( _rxContext ) 120cdf0e10cSrcweir ,m_aContext( _rxContext ) 121cdf0e10cSrcweir { 122cdf0e10cSrcweir m_bNeedInitialization = true; 123cdf0e10cSrcweir } 124cdf0e10cSrcweir 125cdf0e10cSrcweir //-------------------------------------------------------------------- ~MacroMigrationDialogService()126cdf0e10cSrcweir MacroMigrationDialogService::~MacroMigrationDialogService() 127cdf0e10cSrcweir { 128cdf0e10cSrcweir // we do this here cause the base class' call to destroyDialog won't reach us anymore : we're within an dtor, 129cdf0e10cSrcweir // so this virtual-method-call the base class does does not work, we're already dead then ... 130cdf0e10cSrcweir if ( m_pDialog ) 131cdf0e10cSrcweir { 132cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 133cdf0e10cSrcweir if ( m_pDialog ) 134cdf0e10cSrcweir destroyDialog(); 135cdf0e10cSrcweir } 136cdf0e10cSrcweir } 137cdf0e10cSrcweir 138cdf0e10cSrcweir //-------------------------------------------------------------------- Create(const Reference<XComponentContext> & _rxContext)139cdf0e10cSrcweir Reference< XInterface > SAL_CALL MacroMigrationDialogService::Create( const Reference< XComponentContext >& _rxContext ) 140cdf0e10cSrcweir { 141cdf0e10cSrcweir return *(new MacroMigrationDialogService( _rxContext ) ); 142cdf0e10cSrcweir } 143cdf0e10cSrcweir 144cdf0e10cSrcweir //-------------------------------------------------------------------- createDialog(Window * _pParent)145cdf0e10cSrcweir Dialog* MacroMigrationDialogService::createDialog( Window* _pParent ) 146cdf0e10cSrcweir { 147cdf0e10cSrcweir return new MacroMigrationDialog( _pParent, m_aContext, m_xDocument ); 148cdf0e10cSrcweir } 149cdf0e10cSrcweir 150cdf0e10cSrcweir //-------------------------------------------------------------------- destroyDialog()151cdf0e10cSrcweir void MacroMigrationDialogService::destroyDialog() 152cdf0e10cSrcweir { 153cdf0e10cSrcweir MacroMigrationDialogService_Base::destroyDialog(); 154cdf0e10cSrcweir } 155cdf0e10cSrcweir 156cdf0e10cSrcweir //-------------------------------------------------------------------- getImplementationId()157cdf0e10cSrcweir Sequence< sal_Int8 > SAL_CALL MacroMigrationDialogService::getImplementationId() throw(RuntimeException) 158cdf0e10cSrcweir { 159cdf0e10cSrcweir static ::cppu::OImplementationId* pId = NULL; 160cdf0e10cSrcweir if ( !pId ) 161cdf0e10cSrcweir { 162cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); 163cdf0e10cSrcweir if ( !pId ) 164cdf0e10cSrcweir { 165cdf0e10cSrcweir static ::cppu::OImplementationId aId; 166cdf0e10cSrcweir pId = &aId; 167cdf0e10cSrcweir } 168cdf0e10cSrcweir } 169cdf0e10cSrcweir return pId->getImplementationId(); 170cdf0e10cSrcweir } 171cdf0e10cSrcweir 172cdf0e10cSrcweir //-------------------------------------------------------------------- getImplementationName_static()173cdf0e10cSrcweir ::rtl::OUString SAL_CALL MacroMigrationDialogService::getImplementationName_static() throw(RuntimeException) 174cdf0e10cSrcweir { 175cdf0e10cSrcweir return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.dbaccess.macromigration.MacroMigrationDialogService" ) ); 176cdf0e10cSrcweir } 177cdf0e10cSrcweir 178cdf0e10cSrcweir //-------------------------------------------------------------------- getSupportedServiceNames_static()179cdf0e10cSrcweir Sequence< ::rtl::OUString > SAL_CALL MacroMigrationDialogService::getSupportedServiceNames_static() throw(RuntimeException) 180cdf0e10cSrcweir { 181cdf0e10cSrcweir Sequence< ::rtl::OUString > aServices(1); 182cdf0e10cSrcweir aServices[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.application.MacroMigrationWizard" ) ); 183cdf0e10cSrcweir return aServices; 184cdf0e10cSrcweir } 185cdf0e10cSrcweir 186cdf0e10cSrcweir //-------------------------------------------------------------------- getImplementationName()187cdf0e10cSrcweir ::rtl::OUString SAL_CALL MacroMigrationDialogService::getImplementationName() throw(RuntimeException) 188cdf0e10cSrcweir { 189cdf0e10cSrcweir return getImplementationName_static(); 190cdf0e10cSrcweir } 191cdf0e10cSrcweir 192cdf0e10cSrcweir //-------------------------------------------------------------------- getSupportedServiceNames()193cdf0e10cSrcweir Sequence< ::rtl::OUString > SAL_CALL MacroMigrationDialogService::getSupportedServiceNames() throw(RuntimeException) 194cdf0e10cSrcweir { 195cdf0e10cSrcweir return getSupportedServiceNames_static(); 196cdf0e10cSrcweir } 197cdf0e10cSrcweir 198cdf0e10cSrcweir //-------------------------------------------------------------------- initialize(const Sequence<Any> & _rArguments)199cdf0e10cSrcweir void SAL_CALL MacroMigrationDialogService::initialize( const Sequence< Any >& _rArguments ) throw(Exception, RuntimeException) 200cdf0e10cSrcweir { 201cdf0e10cSrcweir ::osl::MutexGuard aGuard( m_aMutex ); 202cdf0e10cSrcweir if ( m_bInitialized ) 203cdf0e10cSrcweir throw AlreadyInitializedException( ::rtl::OUString(), *this ); 204cdf0e10cSrcweir 205cdf0e10cSrcweir if ( _rArguments.getLength() != 1 ) 206cdf0e10cSrcweir throw IllegalArgumentException( 207cdf0e10cSrcweir String(MacroMigrationResId(STR_INVALID_NUMBER_ARGS)), 208cdf0e10cSrcweir *this, 209cdf0e10cSrcweir 1 210cdf0e10cSrcweir ); 211cdf0e10cSrcweir 212cdf0e10cSrcweir m_xDocument.set( _rArguments[0], UNO_QUERY ); 213cdf0e10cSrcweir if ( !m_xDocument.is() ) 214cdf0e10cSrcweir throw IllegalArgumentException( 215cdf0e10cSrcweir String(MacroMigrationResId(STR_NO_DATABASE)), 216cdf0e10cSrcweir *this, 217cdf0e10cSrcweir 1 218cdf0e10cSrcweir ); 219cdf0e10cSrcweir 220cdf0e10cSrcweir Reference< XStorable > xDocStor( m_xDocument, UNO_QUERY_THROW ); 221cdf0e10cSrcweir if ( xDocStor->isReadonly() ) 222cdf0e10cSrcweir throw IllegalArgumentException( 223cdf0e10cSrcweir String(MacroMigrationResId(STR_NOT_READONLY)), 224cdf0e10cSrcweir *this, 225cdf0e10cSrcweir 1 226cdf0e10cSrcweir ); 227cdf0e10cSrcweir 228cdf0e10cSrcweir m_bInitialized = true; 229cdf0e10cSrcweir } 230cdf0e10cSrcweir 231cdf0e10cSrcweir //-------------------------------------------------------------------- getPropertySetInfo()232cdf0e10cSrcweir Reference< XPropertySetInfo > SAL_CALL MacroMigrationDialogService::getPropertySetInfo() throw(RuntimeException) 233cdf0e10cSrcweir { 234cdf0e10cSrcweir return createPropertySetInfo( getInfoHelper() ); 235cdf0e10cSrcweir } 236cdf0e10cSrcweir 237cdf0e10cSrcweir //-------------------------------------------------------------------- getInfoHelper()238cdf0e10cSrcweir ::cppu::IPropertyArrayHelper& SAL_CALL MacroMigrationDialogService::getInfoHelper() 239cdf0e10cSrcweir { 240cdf0e10cSrcweir return *const_cast< MacroMigrationDialogService* >( this )->getArrayHelper(); 241cdf0e10cSrcweir } 242cdf0e10cSrcweir 243cdf0e10cSrcweir //-------------------------------------------------------------------- createArrayHelper() const244cdf0e10cSrcweir ::cppu::IPropertyArrayHelper* MacroMigrationDialogService::createArrayHelper( ) const 245cdf0e10cSrcweir { 246cdf0e10cSrcweir Sequence< Property > aProps; 247cdf0e10cSrcweir describeProperties( aProps ); 248cdf0e10cSrcweir return new ::cppu::OPropertyArrayHelper( aProps ); 249cdf0e10cSrcweir } 250cdf0e10cSrcweir 251cdf0e10cSrcweir //-------------------------------------------------------------------- createRegistryInfo_MacroMigrationDialogService()252cdf0e10cSrcweir void createRegistryInfo_MacroMigrationDialogService() 253cdf0e10cSrcweir { 254cdf0e10cSrcweir static OAutoRegistration< MacroMigrationDialogService > aAutoRegistration; 255cdf0e10cSrcweir } 256cdf0e10cSrcweir 257cdf0e10cSrcweir //........................................................................ 258cdf0e10cSrcweir } // namespace dbmm 259cdf0e10cSrcweir //........................................................................ 260