1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_svx.hxx" 30*cdf0e10cSrcweir #include <comphelper/stl_types.hxx> 31*cdf0e10cSrcweir #include <svx/svdobj.hxx> 32*cdf0e10cSrcweir #include "svx/fmtools.hxx" 33*cdf0e10cSrcweir #include "fmservs.hxx" 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #ifndef _FM_FMOBJFAC_HXX 36*cdf0e10cSrcweir #include "svx/fmobjfac.hxx" 37*cdf0e10cSrcweir #endif 38*cdf0e10cSrcweir 39*cdf0e10cSrcweir #ifndef _FM_FMGLOB_HXX 40*cdf0e10cSrcweir #include <svx/fmglob.hxx> 41*cdf0e10cSrcweir #endif 42*cdf0e10cSrcweir 43*cdf0e10cSrcweir #ifndef _FM_FMOBJ_HXX 44*cdf0e10cSrcweir #include "fmobj.hxx" 45*cdf0e10cSrcweir #endif 46*cdf0e10cSrcweir #include "fmshimp.hxx" 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir #ifndef _FM_FMSHELL_HXX 49*cdf0e10cSrcweir #include <svx/fmshell.hxx> 50*cdf0e10cSrcweir #endif 51*cdf0e10cSrcweir 52*cdf0e10cSrcweir #ifndef _SVX_SVXIDS_HRC 53*cdf0e10cSrcweir #include <svx/svxids.hrc> 54*cdf0e10cSrcweir #endif 55*cdf0e10cSrcweir #include "tbxform.hxx" 56*cdf0e10cSrcweir #include <tools/resid.hxx> 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir #ifndef _SVX_FMRESIDS_HRC 59*cdf0e10cSrcweir #include "svx/fmresids.hrc" 60*cdf0e10cSrcweir #endif 61*cdf0e10cSrcweir #include <tools/shl.hxx> 62*cdf0e10cSrcweir #include <svx/dialmgr.hxx> 63*cdf0e10cSrcweir #include "fmservs.hxx" 64*cdf0e10cSrcweir #include "tabwin.hxx" 65*cdf0e10cSrcweir #include "fmexpl.hxx" 66*cdf0e10cSrcweir #include "filtnav.hxx" 67*cdf0e10cSrcweir 68*cdf0e10cSrcweir #ifndef _SVX_FMPROP_HRC 69*cdf0e10cSrcweir #include "fmprop.hrc" 70*cdf0e10cSrcweir #endif 71*cdf0e10cSrcweir #include "fmPropBrw.hxx" 72*cdf0e10cSrcweir #include "datanavi.hxx" 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir using namespace ::com::sun::star::uno; 75*cdf0e10cSrcweir using namespace ::com::sun::star::beans; 76*cdf0e10cSrcweir using namespace ::svxform; 77*cdf0e10cSrcweir 78*cdf0e10cSrcweir static sal_Bool bInit = sal_False; 79*cdf0e10cSrcweir 80*cdf0e10cSrcweir /************************************************************************* 81*cdf0e10cSrcweir |* 82*cdf0e10cSrcweir |* Ctor 83*cdf0e10cSrcweir |* 84*cdf0e10cSrcweir \************************************************************************/ 85*cdf0e10cSrcweir FmFormObjFactory::FmFormObjFactory() 86*cdf0e10cSrcweir { 87*cdf0e10cSrcweir if ( !bInit ) 88*cdf0e10cSrcweir { 89*cdf0e10cSrcweir SdrObjFactory::InsertMakeObjectHdl(LINK(this, FmFormObjFactory, MakeObject)); 90*cdf0e10cSrcweir 91*cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////// 92*cdf0e10cSrcweir // Konfigurations-::com::sun::star::frame::Controller und NavigationBar registrieren 93*cdf0e10cSrcweir SvxFmTbxCtlConfig::RegisterControl( SID_FM_CONFIG ); 94*cdf0e10cSrcweir SvxFmTbxCtlAbsRec::RegisterControl( SID_FM_RECORD_ABSOLUTE ); 95*cdf0e10cSrcweir SvxFmTbxCtlRecText::RegisterControl( SID_FM_RECORD_TEXT ); 96*cdf0e10cSrcweir SvxFmTbxCtlRecFromText::RegisterControl( SID_FM_RECORD_FROM_TEXT ); 97*cdf0e10cSrcweir SvxFmTbxCtlRecTotal::RegisterControl( SID_FM_RECORD_TOTAL ); 98*cdf0e10cSrcweir SvxFmTbxPrevRec::RegisterControl( SID_FM_RECORD_PREV ); 99*cdf0e10cSrcweir SvxFmTbxNextRec::RegisterControl( SID_FM_RECORD_NEXT ); 100*cdf0e10cSrcweir ControlConversionMenuController::RegisterControl(SID_FM_CHANGECONTROLTYPE); 101*cdf0e10cSrcweir 102*cdf0e10cSrcweir // Registrieung von globalen fenstern 103*cdf0e10cSrcweir FmFieldWinMgr::RegisterChildWindow(); 104*cdf0e10cSrcweir FmPropBrwMgr::RegisterChildWindow(); 105*cdf0e10cSrcweir NavigatorFrameManager::RegisterChildWindow(); 106*cdf0e10cSrcweir DataNavigatorManager::RegisterChildWindow(); 107*cdf0e10cSrcweir FmFilterNavigatorWinMgr::RegisterChildWindow(); 108*cdf0e10cSrcweir 109*cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////// 110*cdf0e10cSrcweir // Interface fuer die Formshell registrieren 111*cdf0e10cSrcweir FmFormShell::RegisterInterface(0); 112*cdf0e10cSrcweir 113*cdf0e10cSrcweir ImplSmartRegisterUnoServices(); 114*cdf0e10cSrcweir bInit = sal_True; 115*cdf0e10cSrcweir } 116*cdf0e10cSrcweir } 117*cdf0e10cSrcweir 118*cdf0e10cSrcweir 119*cdf0e10cSrcweir /************************************************************************* 120*cdf0e10cSrcweir |* 121*cdf0e10cSrcweir |* Dtor 122*cdf0e10cSrcweir |* 123*cdf0e10cSrcweir \************************************************************************/ 124*cdf0e10cSrcweir FmFormObjFactory::~FmFormObjFactory() 125*cdf0e10cSrcweir { 126*cdf0e10cSrcweir } 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir 129*cdf0e10cSrcweir /************************************************************************* 130*cdf0e10cSrcweir |* 131*cdf0e10cSrcweir |* ::com::sun::star::form::Form-Objekte erzeugen 132*cdf0e10cSrcweir |* 133*cdf0e10cSrcweir \************************************************************************/ 134*cdf0e10cSrcweir namespace 135*cdf0e10cSrcweir { 136*cdf0e10cSrcweir void lcl_initProperty( FmFormObj* _pObject, const ::rtl::OUString& _rPropName, const Any& _rValue ) 137*cdf0e10cSrcweir { 138*cdf0e10cSrcweir try 139*cdf0e10cSrcweir { 140*cdf0e10cSrcweir Reference< XPropertySet > xModelSet( _pObject->GetUnoControlModel(), UNO_QUERY ); 141*cdf0e10cSrcweir if ( xModelSet.is() ) 142*cdf0e10cSrcweir xModelSet->setPropertyValue( _rPropName, _rValue ); 143*cdf0e10cSrcweir } 144*cdf0e10cSrcweir catch( const Exception& ) 145*cdf0e10cSrcweir { 146*cdf0e10cSrcweir DBG_ERROR( "lcl_initProperty: caught an exception!" ); 147*cdf0e10cSrcweir } 148*cdf0e10cSrcweir } 149*cdf0e10cSrcweir } 150*cdf0e10cSrcweir 151*cdf0e10cSrcweir IMPL_LINK(FmFormObjFactory, MakeObject, SdrObjFactory*, pObjFactory) 152*cdf0e10cSrcweir { 153*cdf0e10cSrcweir if (pObjFactory->nInventor == FmFormInventor) 154*cdf0e10cSrcweir { 155*cdf0e10cSrcweir ::rtl::OUString sServiceSpecifier; 156*cdf0e10cSrcweir 157*cdf0e10cSrcweir typedef ::std::vector< ::std::pair< ::rtl::OUString, Any > > PropertyValueArray; 158*cdf0e10cSrcweir PropertyValueArray aInitialProperties; 159*cdf0e10cSrcweir 160*cdf0e10cSrcweir switch ( pObjFactory->nIdentifier ) 161*cdf0e10cSrcweir { 162*cdf0e10cSrcweir case OBJ_FM_EDIT: 163*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_EDIT; 164*cdf0e10cSrcweir break; 165*cdf0e10cSrcweir 166*cdf0e10cSrcweir case OBJ_FM_BUTTON: 167*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_COMMANDBUTTON; 168*cdf0e10cSrcweir break; 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir case OBJ_FM_FIXEDTEXT: 171*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_FIXEDTEXT; 172*cdf0e10cSrcweir break; 173*cdf0e10cSrcweir 174*cdf0e10cSrcweir case OBJ_FM_LISTBOX: 175*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_LISTBOX; 176*cdf0e10cSrcweir break; 177*cdf0e10cSrcweir 178*cdf0e10cSrcweir case OBJ_FM_CHECKBOX: 179*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_CHECKBOX; 180*cdf0e10cSrcweir break; 181*cdf0e10cSrcweir 182*cdf0e10cSrcweir case OBJ_FM_RADIOBUTTON: 183*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_RADIOBUTTON; 184*cdf0e10cSrcweir break; 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir case OBJ_FM_GROUPBOX: 187*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_GROUPBOX; 188*cdf0e10cSrcweir break; 189*cdf0e10cSrcweir 190*cdf0e10cSrcweir case OBJ_FM_COMBOBOX: 191*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_COMBOBOX; 192*cdf0e10cSrcweir break; 193*cdf0e10cSrcweir 194*cdf0e10cSrcweir case OBJ_FM_GRID: 195*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_GRID; 196*cdf0e10cSrcweir break; 197*cdf0e10cSrcweir 198*cdf0e10cSrcweir case OBJ_FM_IMAGEBUTTON: 199*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_IMAGEBUTTON; 200*cdf0e10cSrcweir break; 201*cdf0e10cSrcweir 202*cdf0e10cSrcweir case OBJ_FM_FILECONTROL: 203*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_FILECONTROL; 204*cdf0e10cSrcweir break; 205*cdf0e10cSrcweir 206*cdf0e10cSrcweir case OBJ_FM_DATEFIELD: 207*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_DATEFIELD; 208*cdf0e10cSrcweir break; 209*cdf0e10cSrcweir 210*cdf0e10cSrcweir case OBJ_FM_TIMEFIELD: 211*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_TIMEFIELD; 212*cdf0e10cSrcweir aInitialProperties.push_back( PropertyValueArray::value_type( FM_PROP_TIMEMAX, makeAny( (sal_Int32)( Time( 23, 59, 59, 99 ).GetTime() ) ) ) ); 213*cdf0e10cSrcweir break; 214*cdf0e10cSrcweir 215*cdf0e10cSrcweir case OBJ_FM_NUMERICFIELD: 216*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_NUMERICFIELD; 217*cdf0e10cSrcweir break; 218*cdf0e10cSrcweir 219*cdf0e10cSrcweir case OBJ_FM_CURRENCYFIELD: 220*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_CURRENCYFIELD; 221*cdf0e10cSrcweir break; 222*cdf0e10cSrcweir 223*cdf0e10cSrcweir case OBJ_FM_PATTERNFIELD: 224*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_PATTERNFIELD; 225*cdf0e10cSrcweir break; 226*cdf0e10cSrcweir 227*cdf0e10cSrcweir case OBJ_FM_HIDDEN: 228*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_HIDDEN; 229*cdf0e10cSrcweir break; 230*cdf0e10cSrcweir 231*cdf0e10cSrcweir case OBJ_FM_IMAGECONTROL: 232*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_IMAGECONTROL; 233*cdf0e10cSrcweir break; 234*cdf0e10cSrcweir 235*cdf0e10cSrcweir case OBJ_FM_FORMATTEDFIELD: 236*cdf0e10cSrcweir sServiceSpecifier = FM_COMPONENT_FORMATTEDFIELD; 237*cdf0e10cSrcweir break; 238*cdf0e10cSrcweir 239*cdf0e10cSrcweir case OBJ_FM_NAVIGATIONBAR: 240*cdf0e10cSrcweir sServiceSpecifier = FM_SUN_COMPONENT_NAVIGATIONBAR; 241*cdf0e10cSrcweir break; 242*cdf0e10cSrcweir 243*cdf0e10cSrcweir case OBJ_FM_SCROLLBAR: 244*cdf0e10cSrcweir sServiceSpecifier = FM_SUN_COMPONENT_SCROLLBAR; 245*cdf0e10cSrcweir aInitialProperties.push_back( PropertyValueArray::value_type( FM_PROP_BORDER, makeAny( (sal_Int16)0 ) ) ); 246*cdf0e10cSrcweir break; 247*cdf0e10cSrcweir 248*cdf0e10cSrcweir case OBJ_FM_SPINBUTTON: 249*cdf0e10cSrcweir sServiceSpecifier = FM_SUN_COMPONENT_SPINBUTTON; 250*cdf0e10cSrcweir aInitialProperties.push_back( PropertyValueArray::value_type( FM_PROP_BORDER, makeAny( (sal_Int16)0 ) ) ); 251*cdf0e10cSrcweir break; 252*cdf0e10cSrcweir } 253*cdf0e10cSrcweir 254*cdf0e10cSrcweir // create the actual object 255*cdf0e10cSrcweir if ( sServiceSpecifier.getLength() ) 256*cdf0e10cSrcweir pObjFactory->pNewObj = new FmFormObj( sServiceSpecifier, pObjFactory->nIdentifier ); 257*cdf0e10cSrcweir else 258*cdf0e10cSrcweir pObjFactory->pNewObj = new FmFormObj( pObjFactory->nIdentifier ); 259*cdf0e10cSrcweir 260*cdf0e10cSrcweir // initialize some properties which we want to differ from the defaults 261*cdf0e10cSrcweir for ( PropertyValueArray::const_iterator aInitProp = aInitialProperties.begin(); 262*cdf0e10cSrcweir aInitProp != aInitialProperties.end(); 263*cdf0e10cSrcweir ++aInitProp 264*cdf0e10cSrcweir ) 265*cdf0e10cSrcweir { 266*cdf0e10cSrcweir lcl_initProperty( 267*cdf0e10cSrcweir static_cast< FmFormObj* >( pObjFactory->pNewObj ), 268*cdf0e10cSrcweir aInitProp->first, 269*cdf0e10cSrcweir aInitProp->second 270*cdf0e10cSrcweir ); 271*cdf0e10cSrcweir } 272*cdf0e10cSrcweir } 273*cdf0e10cSrcweir 274*cdf0e10cSrcweir return 0; 275*cdf0e10cSrcweir } 276*cdf0e10cSrcweir 277*cdf0e10cSrcweir 278*cdf0e10cSrcweir 279