1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_svx.hxx" 26 #include <svx/fmdmod.hxx> 27 #include "fmservs.hxx" 28 #include <fmobj.hxx> 29 #include <svx/unoshape.hxx> 30 #include <comphelper/processfactory.hxx> 31 #include <svx/fmglob.hxx> 32 33 using namespace ::svxform; 34 35 //----------------------------------------------------------------------------- 36 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL SvxFmMSFactory::createInstance(const ::rtl::OUString& ServiceSpecifier) throw( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException ) 37 { 38 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xRet; 39 if ( ServiceSpecifier.indexOf( ::rtl::OUString::createFromAscii("com.sun.star.form.component.") ) == 0 ) 40 { 41 xRet = ::comphelper::getProcessServiceFactory()->createInstance(ServiceSpecifier); 42 } 43 else if ( ServiceSpecifier == ::rtl::OUString( ::rtl::OUString::createFromAscii("com.sun.star.drawing.ControlShape") ) ) 44 { 45 SdrObject* pObj = new FmFormObj(OBJ_FM_CONTROL); 46 xRet = *new SvxShapeControl(pObj); 47 } 48 if (!xRet.is()) 49 xRet = SvxUnoDrawMSFactory::createInstance(ServiceSpecifier); 50 return xRet; 51 } 52 53 //----------------------------------------------------------------------------- 54 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL SvxFmMSFactory::createInstanceWithArguments(const ::rtl::OUString& ServiceSpecifier, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Arguments) throw( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException ) 55 { 56 return SvxUnoDrawMSFactory::createInstanceWithArguments(ServiceSpecifier, Arguments ); 57 } 58 59 //----------------------------------------------------------------------------- 60 ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL SvxFmMSFactory::getAvailableServiceNames(void) throw( ::com::sun::star::uno::RuntimeException ) 61 { 62 static const ::rtl::OUString aSvxComponentServiceNameList[] = 63 { 64 FM_SUN_COMPONENT_TEXTFIELD, 65 FM_SUN_COMPONENT_FORM, 66 FM_SUN_COMPONENT_LISTBOX, 67 FM_SUN_COMPONENT_COMBOBOX, 68 FM_SUN_COMPONENT_RADIOBUTTON, 69 FM_SUN_COMPONENT_GROUPBOX, 70 FM_SUN_COMPONENT_FIXEDTEXT, 71 FM_SUN_COMPONENT_COMMANDBUTTON, 72 FM_SUN_COMPONENT_CHECKBOX, 73 FM_SUN_COMPONENT_GRIDCONTROL, 74 FM_SUN_COMPONENT_IMAGEBUTTON, 75 FM_SUN_COMPONENT_FILECONTROL, 76 FM_SUN_COMPONENT_TIMEFIELD, 77 FM_SUN_COMPONENT_DATEFIELD, 78 FM_SUN_COMPONENT_NUMERICFIELD, 79 FM_SUN_COMPONENT_CURRENCYFIELD, 80 FM_SUN_COMPONENT_PATTERNFIELD, 81 FM_SUN_COMPONENT_HIDDENCONTROL, 82 FM_SUN_COMPONENT_IMAGECONTROL 83 }; 84 85 static const sal_uInt16 nSvxComponentServiceNameListCount = sizeof(aSvxComponentServiceNameList) / sizeof ( aSvxComponentServiceNameList[0] ); 86 87 ::com::sun::star::uno::Sequence< ::rtl::OUString > aSeq( nSvxComponentServiceNameListCount ); 88 ::rtl::OUString* pStrings = aSeq.getArray(); 89 for( sal_uInt16 nIdx = 0; nIdx < nSvxComponentServiceNameListCount; nIdx++ ) 90 pStrings[nIdx] = aSvxComponentServiceNameList[nIdx]; 91 92 ::com::sun::star::uno::Sequence< ::rtl::OUString > aParentSeq( SvxUnoDrawMSFactory::getAvailableServiceNames() ); 93 return concatServiceNames( aParentSeq, aSeq ); 94 } 95 96 /* 97 // XServiceManager 98 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SvxFmDrawModel::createInstance(const ::rtl::OUString& ServiceName) 99 const throw( ::com::sun::star::lang::ServiceNotRegisteredException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException ) 100 { 101 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xRet; 102 sal_uInt16 nTokenCount = ServiceName.getTokenCount('.'); 103 if (nTokenCount == 5 && 104 ServiceName.getToken( 0, '.' ) == ::rtl::OUString::createFromAscii("stardiv") && 105 ServiceName.getToken( 1, '.' ) == ::rtl::OUString::createFromAscii("one") && 106 ServiceName.getToken( 2, '.' ) == ::rtl::OUString::createFromAscii("form") && 107 ServiceName.getToken( 3, '.' ) == ::rtl::OUString::createFromAscii("component")) 108 { 109 xRet = ::comphelper::getProcessServiceFactory()->createInstance(ServiceName); 110 } 111 else 112 if (nTokenCount == 4 && 113 ServiceName.getToken( 0, '.' ) == ::rtl::OUString::createFromAscii("stardiv") && 114 ServiceName.getToken( 1, '.' ) == ::rtl::OUString::createFromAscii("one") && 115 ServiceName.getToken( 2, '.' ) == ::rtl::OUString::createFromAscii("drawing") && 116 ServiceName.getToken( 3, '.' ) == ::rtl::OUString::createFromAscii("ControlShape")) 117 { 118 SdrObject* pObj = new FmFormObj(); 119 xRet = *new SvxShapeControl(pObj); 120 } 121 if (!xRet.is()) 122 xRet = SvxUnoDrawModel::createInstance(ServiceName); 123 return xRet; 124 } 125 */ 126 127 128