1*f6e50924SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*f6e50924SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*f6e50924SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*f6e50924SAndrew Rist * distributed with this work for additional information 6*f6e50924SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*f6e50924SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*f6e50924SAndrew Rist * "License"); you may not use this file except in compliance 9*f6e50924SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*f6e50924SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*f6e50924SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*f6e50924SAndrew Rist * software distributed under the License is distributed on an 15*f6e50924SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*f6e50924SAndrew Rist * KIND, either express or implied. See the License for the 17*f6e50924SAndrew Rist * specific language governing permissions and limitations 18*f6e50924SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*f6e50924SAndrew Rist *************************************************************/ 21*f6e50924SAndrew Rist 22*f6e50924SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_svx.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #ifndef _SVX_FMRESIDS_HRC 28cdf0e10cSrcweir #include "svx/fmresids.hrc" 29cdf0e10cSrcweir #endif 30cdf0e10cSrcweir #ifndef _SVX_FMEXPL_HRC 31cdf0e10cSrcweir #include "fmexpl.hrc" 32cdf0e10cSrcweir #endif 33cdf0e10cSrcweir #include "fmexpl.hxx" 34cdf0e10cSrcweir 35cdf0e10cSrcweir #ifndef _SVX_FMHELP_HRC 36cdf0e10cSrcweir #include "fmhelp.hrc" 37cdf0e10cSrcweir #endif 38cdf0e10cSrcweir #include <svx/fmglob.hxx> 39cdf0e10cSrcweir #include "fmservs.hxx" 40cdf0e10cSrcweir #include <svx/fmmodel.hxx> 41cdf0e10cSrcweir #include "fmexch.hxx" 42cdf0e10cSrcweir #include "fmundo.hxx" 43cdf0e10cSrcweir #include "fmpgeimp.hxx" 44cdf0e10cSrcweir 45cdf0e10cSrcweir #ifndef _SVX_SVXIDS_HRC 46cdf0e10cSrcweir #include <svx/svxids.hrc> 47cdf0e10cSrcweir #endif 48cdf0e10cSrcweir 49cdf0e10cSrcweir #ifndef _SVX_FMPROP_HRC 50cdf0e10cSrcweir #include "fmprop.hrc" 51cdf0e10cSrcweir #endif 52cdf0e10cSrcweir #include <svx/dialmgr.hxx> 53cdf0e10cSrcweir #include "svx/svditer.hxx" 54cdf0e10cSrcweir #include <svx/svdouno.hxx> 55cdf0e10cSrcweir #include <fmundo.hxx> 56cdf0e10cSrcweir #include <svx/svdobj.hxx> 57cdf0e10cSrcweir #include <vcl/msgbox.hxx> 58cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 59cdf0e10cSrcweir #include <sfx2/objsh.hxx> 60cdf0e10cSrcweir #include <sfx2/viewsh.hxx> 61cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 62cdf0e10cSrcweir #include <com/sun/star/lang/XServiceInfo.hpp> 63cdf0e10cSrcweir #include <com/sun/star/form/FormComponentType.hpp> 64cdf0e10cSrcweir #include <com/sun/star/awt/XTabControllerModel.hpp> 65cdf0e10cSrcweir #include <vcl/menu.hxx> 66cdf0e10cSrcweir #include <sfx2/objitem.hxx> 67cdf0e10cSrcweir #include <sfx2/request.hxx> 68cdf0e10cSrcweir #include <tools/shl.hxx> 69cdf0e10cSrcweir 70cdf0e10cSrcweir #ifndef _WRKWIN_HXX //autogen 71cdf0e10cSrcweir #include <vcl/wrkwin.hxx> 72cdf0e10cSrcweir #endif 73cdf0e10cSrcweir #include <vcl/sound.hxx> 74cdf0e10cSrcweir #include <svx/fmshell.hxx> 75cdf0e10cSrcweir #include "fmshimp.hxx" 76cdf0e10cSrcweir #include <svx/fmpage.hxx> 77cdf0e10cSrcweir #include <com/sun/star/io/XPersistObject.hpp> 78cdf0e10cSrcweir #include <com/sun/star/script/XEventAttacherManager.hpp> 79cdf0e10cSrcweir #include <com/sun/star/sdb/CommandType.hpp> 80cdf0e10cSrcweir #include <com/sun/star/beans/PropertyAttribute.hpp> 81cdf0e10cSrcweir #include <comphelper/property.hxx> 82cdf0e10cSrcweir #include <comphelper/processfactory.hxx> 83cdf0e10cSrcweir #include <osl/diagnose.h> 84cdf0e10cSrcweir #include <rtl/logfile.hxx> 85cdf0e10cSrcweir 86cdf0e10cSrcweir using namespace ::svxform; 87cdf0e10cSrcweir using namespace ::com::sun::star::uno; 88cdf0e10cSrcweir using namespace ::com::sun::star::sdbc; 89cdf0e10cSrcweir using namespace ::com::sun::star::sdb; 90cdf0e10cSrcweir using namespace ::com::sun::star::form; 91cdf0e10cSrcweir using namespace ::com::sun::star::beans; 92cdf0e10cSrcweir using namespace ::com::sun::star::lang; 93cdf0e10cSrcweir using namespace ::com::sun::star::container; 94cdf0e10cSrcweir 95cdf0e10cSrcweir //======================================================================== 96cdf0e10cSrcweir 97cdf0e10cSrcweir SV_IMPL_PTRARR_SORT( FmEntryDataArray, FmEntryDataPtr ) 98cdf0e10cSrcweir SV_IMPL_PTRARR_SORT( SvLBoxEntrySortedArray, SvLBoxEntryPtr ) 99cdf0e10cSrcweir 100cdf0e10cSrcweir //======================================================================== 101cdf0e10cSrcweir // class FmNavInsertedHint 102cdf0e10cSrcweir //======================================================================== 103cdf0e10cSrcweir TYPEINIT1( FmNavInsertedHint, SfxHint ); 104cdf0e10cSrcweir DBG_NAME(FmNavInsertedHint); 105cdf0e10cSrcweir //------------------------------------------------------------------------ 106cdf0e10cSrcweir FmNavInsertedHint::FmNavInsertedHint( FmEntryData* pInsertedEntryData, sal_uInt32 nRelPos ) 107cdf0e10cSrcweir :pEntryData( pInsertedEntryData ) 108cdf0e10cSrcweir ,nPos( nRelPos ) 109cdf0e10cSrcweir 110cdf0e10cSrcweir { 111cdf0e10cSrcweir DBG_CTOR(FmNavInsertedHint,NULL); 112cdf0e10cSrcweir } 113cdf0e10cSrcweir 114cdf0e10cSrcweir //------------------------------------------------------------------------ 115cdf0e10cSrcweir FmNavInsertedHint::~FmNavInsertedHint() 116cdf0e10cSrcweir { 117cdf0e10cSrcweir DBG_DTOR(FmNavInsertedHint,NULL); 118cdf0e10cSrcweir } 119cdf0e10cSrcweir 120cdf0e10cSrcweir 121cdf0e10cSrcweir //======================================================================== 122cdf0e10cSrcweir // class FmNavInsertedHint 123cdf0e10cSrcweir //======================================================================== 124cdf0e10cSrcweir TYPEINIT1( FmNavModelReplacedHint, SfxHint ); 125cdf0e10cSrcweir DBG_NAME(FmNavModelReplacedHint); 126cdf0e10cSrcweir //------------------------------------------------------------------------ 127cdf0e10cSrcweir FmNavModelReplacedHint::FmNavModelReplacedHint( FmEntryData* pAffectedEntryData ) 128cdf0e10cSrcweir :pEntryData( pAffectedEntryData ) 129cdf0e10cSrcweir { 130cdf0e10cSrcweir DBG_CTOR(FmNavModelReplacedHint,NULL); 131cdf0e10cSrcweir } 132cdf0e10cSrcweir 133cdf0e10cSrcweir //------------------------------------------------------------------------ 134cdf0e10cSrcweir FmNavModelReplacedHint::~FmNavModelReplacedHint() 135cdf0e10cSrcweir { 136cdf0e10cSrcweir DBG_DTOR(FmNavModelReplacedHint,NULL); 137cdf0e10cSrcweir } 138cdf0e10cSrcweir 139cdf0e10cSrcweir //======================================================================== 140cdf0e10cSrcweir // class FmNavRemovedHint 141cdf0e10cSrcweir //======================================================================== 142cdf0e10cSrcweir TYPEINIT1( FmNavRemovedHint, SfxHint ); 143cdf0e10cSrcweir DBG_NAME(FmNavRemovedHint); 144cdf0e10cSrcweir //------------------------------------------------------------------------ 145cdf0e10cSrcweir FmNavRemovedHint::FmNavRemovedHint( FmEntryData* pRemovedEntryData ) 146cdf0e10cSrcweir :pEntryData( pRemovedEntryData ) 147cdf0e10cSrcweir { 148cdf0e10cSrcweir DBG_CTOR(FmNavRemovedHint,NULL); 149cdf0e10cSrcweir } 150cdf0e10cSrcweir 151cdf0e10cSrcweir //------------------------------------------------------------------------ 152cdf0e10cSrcweir FmNavRemovedHint::~FmNavRemovedHint() 153cdf0e10cSrcweir { 154cdf0e10cSrcweir DBG_DTOR(FmNavRemovedHint,NULL); 155cdf0e10cSrcweir } 156cdf0e10cSrcweir 157cdf0e10cSrcweir 158cdf0e10cSrcweir //======================================================================== 159cdf0e10cSrcweir // class FmNavNameChangedHint 160cdf0e10cSrcweir //======================================================================== 161cdf0e10cSrcweir TYPEINIT1( FmNavNameChangedHint, SfxHint ); 162cdf0e10cSrcweir DBG_NAME(FmNavNameChangedHint); 163cdf0e10cSrcweir //------------------------------------------------------------------------ 164cdf0e10cSrcweir FmNavNameChangedHint::FmNavNameChangedHint( FmEntryData* pData, const ::rtl::OUString& rNewName ) 165cdf0e10cSrcweir :pEntryData( pData ) 166cdf0e10cSrcweir ,aNewName( rNewName ) 167cdf0e10cSrcweir { 168cdf0e10cSrcweir DBG_CTOR(FmNavNameChangedHint,NULL); 169cdf0e10cSrcweir } 170cdf0e10cSrcweir 171cdf0e10cSrcweir //------------------------------------------------------------------------ 172cdf0e10cSrcweir FmNavNameChangedHint::~FmNavNameChangedHint() 173cdf0e10cSrcweir { 174cdf0e10cSrcweir DBG_DTOR(FmNavNameChangedHint,NULL); 175cdf0e10cSrcweir } 176cdf0e10cSrcweir 177cdf0e10cSrcweir //======================================================================== 178cdf0e10cSrcweir // class FmNavClearedHint 179cdf0e10cSrcweir //======================================================================== 180cdf0e10cSrcweir TYPEINIT1( FmNavClearedHint, SfxHint ); 181cdf0e10cSrcweir DBG_NAME(FmNavClearedHint); 182cdf0e10cSrcweir //------------------------------------------------------------------------ 183cdf0e10cSrcweir FmNavClearedHint::FmNavClearedHint() 184cdf0e10cSrcweir { 185cdf0e10cSrcweir DBG_CTOR(FmNavClearedHint,NULL); 186cdf0e10cSrcweir } 187cdf0e10cSrcweir 188cdf0e10cSrcweir //------------------------------------------------------------------------ 189cdf0e10cSrcweir FmNavClearedHint::~FmNavClearedHint() 190cdf0e10cSrcweir { 191cdf0e10cSrcweir DBG_DTOR(FmNavClearedHint,NULL); 192cdf0e10cSrcweir } 193cdf0e10cSrcweir 194cdf0e10cSrcweir //======================================================================== 195cdf0e10cSrcweir // class FmNavRequestSelectHint 196cdf0e10cSrcweir //======================================================================== 197cdf0e10cSrcweir TYPEINIT1(FmNavRequestSelectHint, SfxHint); 198cdf0e10cSrcweir 199cdf0e10cSrcweir //======================================================================== 200cdf0e10cSrcweir // class FmNavViewMarksChanged 201cdf0e10cSrcweir //======================================================================== 202cdf0e10cSrcweir TYPEINIT1(FmNavViewMarksChanged, SfxHint); 203cdf0e10cSrcweir 204cdf0e10cSrcweir //======================================================================== 205cdf0e10cSrcweir // class FmEntryDataList 206cdf0e10cSrcweir //======================================================================== 207cdf0e10cSrcweir DBG_NAME(FmEntryDataList); 208cdf0e10cSrcweir //------------------------------------------------------------------------ 209cdf0e10cSrcweir FmEntryDataList::FmEntryDataList() 210cdf0e10cSrcweir { 211cdf0e10cSrcweir DBG_CTOR(FmEntryDataList,NULL); 212cdf0e10cSrcweir } 213cdf0e10cSrcweir 214cdf0e10cSrcweir //------------------------------------------------------------------------ 215cdf0e10cSrcweir FmEntryDataList::~FmEntryDataList() 216cdf0e10cSrcweir { 217cdf0e10cSrcweir DBG_DTOR(FmEntryDataList,NULL); 218cdf0e10cSrcweir } 219cdf0e10cSrcweir 220cdf0e10cSrcweir 221cdf0e10cSrcweir //======================================================================== 222cdf0e10cSrcweir // class FmEntryData 223cdf0e10cSrcweir //======================================================================== 224cdf0e10cSrcweir TYPEINIT0( FmEntryData ); 225cdf0e10cSrcweir DBG_NAME(FmEntryData); 226cdf0e10cSrcweir //------------------------------------------------------------------------ 227cdf0e10cSrcweir FmEntryData::FmEntryData( FmEntryData* pParentData, const Reference< XInterface >& _rxIFace ) 228cdf0e10cSrcweir :pParent( pParentData ) 229cdf0e10cSrcweir { 230cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::FmEntryData" ); 231cdf0e10cSrcweir DBG_CTOR(FmEntryData,NULL); 232cdf0e10cSrcweir pChildList = new FmEntryDataList(); 233cdf0e10cSrcweir 234cdf0e10cSrcweir newObject( _rxIFace ); 235cdf0e10cSrcweir } 236cdf0e10cSrcweir 237cdf0e10cSrcweir //------------------------------------------------------------------------ 238cdf0e10cSrcweir FmEntryData::~FmEntryData() 239cdf0e10cSrcweir { 240cdf0e10cSrcweir Clear(); 241cdf0e10cSrcweir delete pChildList; 242cdf0e10cSrcweir DBG_DTOR(FmEntryData,NULL); 243cdf0e10cSrcweir } 244cdf0e10cSrcweir 245cdf0e10cSrcweir //------------------------------------------------------------------------ 246cdf0e10cSrcweir void FmEntryData::newObject( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxIFace ) 247cdf0e10cSrcweir { 248cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::newObject" ); 249cdf0e10cSrcweir // do not just copy, normalize it 250cdf0e10cSrcweir m_xNormalizedIFace = Reference< XInterface >( _rxIFace, UNO_QUERY ); 251cdf0e10cSrcweir m_xProperties = m_xProperties.query( m_xNormalizedIFace ); 252cdf0e10cSrcweir m_xChild = m_xChild.query( m_xNormalizedIFace ); 253cdf0e10cSrcweir } 254cdf0e10cSrcweir 255cdf0e10cSrcweir //------------------------------------------------------------------------ 256cdf0e10cSrcweir FmEntryData::FmEntryData( const FmEntryData& rEntryData ) 257cdf0e10cSrcweir { 258cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::FmEntryData" ); 259cdf0e10cSrcweir pChildList = new FmEntryDataList(); 260cdf0e10cSrcweir aText = rEntryData.GetText(); 261cdf0e10cSrcweir m_aNormalImage = rEntryData.GetNormalImage(); 262cdf0e10cSrcweir m_aHCImage = rEntryData.GetHCImage(); 263cdf0e10cSrcweir pParent = rEntryData.GetParent(); 264cdf0e10cSrcweir 265cdf0e10cSrcweir FmEntryData* pChildData; 266cdf0e10cSrcweir sal_uInt32 nEntryCount = rEntryData.GetChildList()->Count(); 267cdf0e10cSrcweir for( sal_uInt32 i=0; i<nEntryCount; i++ ) 268cdf0e10cSrcweir { 269cdf0e10cSrcweir pChildData = rEntryData.GetChildList()->GetObject(i); 270cdf0e10cSrcweir FmEntryData* pNewChildData = pChildData->Clone(); 271cdf0e10cSrcweir pChildList->Insert( pNewChildData, LIST_APPEND ); 272cdf0e10cSrcweir } 273cdf0e10cSrcweir 274cdf0e10cSrcweir m_xNormalizedIFace = rEntryData.m_xNormalizedIFace; 275cdf0e10cSrcweir m_xProperties = rEntryData.m_xProperties; 276cdf0e10cSrcweir m_xChild = rEntryData.m_xChild; 277cdf0e10cSrcweir } 278cdf0e10cSrcweir 279cdf0e10cSrcweir //------------------------------------------------------------------------ 280cdf0e10cSrcweir void FmEntryData::Clear() 281cdf0e10cSrcweir { 282cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::Clear" ); 283cdf0e10cSrcweir for (;;) 284cdf0e10cSrcweir { 285cdf0e10cSrcweir FmEntryData* pEntryData = GetChildList()->Remove(sal_uLong(0)); 286cdf0e10cSrcweir if (pEntryData == NULL) 287cdf0e10cSrcweir break; 288cdf0e10cSrcweir delete pEntryData; 289cdf0e10cSrcweir } 290cdf0e10cSrcweir } 291cdf0e10cSrcweir 292cdf0e10cSrcweir //------------------------------------------------------------------------ 293cdf0e10cSrcweir sal_Bool FmEntryData::IsEqualWithoutChilds( FmEntryData* pEntryData ) 294cdf0e10cSrcweir { 295cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::IsEqualWithoutChilds" ); 296cdf0e10cSrcweir if(this == pEntryData) 297cdf0e10cSrcweir return sal_True; 298cdf0e10cSrcweir 299cdf0e10cSrcweir if( !pEntryData ) 300cdf0e10cSrcweir return sal_False; 301cdf0e10cSrcweir 302cdf0e10cSrcweir if( !aText.equals(pEntryData->GetText())) 303cdf0e10cSrcweir return sal_False; 304cdf0e10cSrcweir 305cdf0e10cSrcweir if( !pEntryData->GetParent() && pParent ) 306cdf0e10cSrcweir return sal_False; 307cdf0e10cSrcweir 308cdf0e10cSrcweir if( pEntryData->GetParent() && !pParent ) 309cdf0e10cSrcweir return sal_False; 310cdf0e10cSrcweir 311cdf0e10cSrcweir if( !pEntryData->GetParent() && !pParent ) 312cdf0e10cSrcweir return sal_True; 313cdf0e10cSrcweir 314cdf0e10cSrcweir if( !pParent->IsEqualWithoutChilds(pEntryData->GetParent()) ) 315cdf0e10cSrcweir return sal_False; 316cdf0e10cSrcweir 317cdf0e10cSrcweir return sal_True; 318cdf0e10cSrcweir } 319cdf0e10cSrcweir 320cdf0e10cSrcweir 321cdf0e10cSrcweir //======================================================================== 322cdf0e10cSrcweir // class FmFormData 323cdf0e10cSrcweir //======================================================================== 324cdf0e10cSrcweir TYPEINIT1( FmFormData, FmEntryData ); 325cdf0e10cSrcweir DBG_NAME(FmFormData); 326cdf0e10cSrcweir //------------------------------------------------------------------------ 327cdf0e10cSrcweir FmFormData::FmFormData( const Reference< XForm >& _rxForm, const ImageList& _rNormalImages, const ImageList& _rHCImages, FmFormData* _pParent ) 328cdf0e10cSrcweir :FmEntryData( _pParent, _rxForm ) 329cdf0e10cSrcweir ,m_xForm( _rxForm ) 330cdf0e10cSrcweir { 331cdf0e10cSrcweir DBG_CTOR(FmEntryData,NULL); 332cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////// 333cdf0e10cSrcweir // Images setzen 334cdf0e10cSrcweir 335cdf0e10cSrcweir m_aNormalImage = _rNormalImages.GetImage( RID_SVXIMG_FORM ); 336cdf0e10cSrcweir m_aHCImage = _rHCImages.GetImage( RID_SVXIMG_FORM ); 337cdf0e10cSrcweir 338cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////// 339cdf0e10cSrcweir // Titel setzen 340cdf0e10cSrcweir if (m_xForm.is()) 341cdf0e10cSrcweir { 342cdf0e10cSrcweir Reference< XPropertySet > xSet(m_xForm, UNO_QUERY); 343cdf0e10cSrcweir if (xSet.is()) 344cdf0e10cSrcweir { 345cdf0e10cSrcweir ::rtl::OUString aEntryName(::comphelper::getString(xSet->getPropertyValue( FM_PROP_NAME ))); 346cdf0e10cSrcweir SetText(aEntryName); 347cdf0e10cSrcweir } 348cdf0e10cSrcweir } 349cdf0e10cSrcweir else 350cdf0e10cSrcweir SetText( ::rtl::OUString() ); 351cdf0e10cSrcweir } 352cdf0e10cSrcweir 353cdf0e10cSrcweir //------------------------------------------------------------------------ 354cdf0e10cSrcweir FmFormData::~FmFormData() 355cdf0e10cSrcweir { 356cdf0e10cSrcweir DBG_DTOR(FmEntryData,NULL); 357cdf0e10cSrcweir } 358cdf0e10cSrcweir 359cdf0e10cSrcweir //------------------------------------------------------------------------ 360cdf0e10cSrcweir FmFormData::FmFormData( const FmFormData& rFormData ) 361cdf0e10cSrcweir :FmEntryData( rFormData ) 362cdf0e10cSrcweir { 363cdf0e10cSrcweir DBG_CTOR(FmEntryData,NULL); 364cdf0e10cSrcweir m_xForm = rFormData.GetFormIface(); 365cdf0e10cSrcweir } 366cdf0e10cSrcweir 367cdf0e10cSrcweir //------------------------------------------------------------------------ 368cdf0e10cSrcweir FmEntryData* FmFormData::Clone() 369cdf0e10cSrcweir { 370cdf0e10cSrcweir return new FmFormData( *this ); 371cdf0e10cSrcweir } 372cdf0e10cSrcweir 373cdf0e10cSrcweir //------------------------------------------------------------------------ 374cdf0e10cSrcweir sal_Bool FmFormData::IsEqualWithoutChilds( FmEntryData* pEntryData ) 375cdf0e10cSrcweir { 376cdf0e10cSrcweir if(this == pEntryData) 377cdf0e10cSrcweir return sal_True; 378cdf0e10cSrcweir if( !pEntryData->ISA(FmFormData) ) 379cdf0e10cSrcweir return sal_False; 380cdf0e10cSrcweir FmFormData* pFormData = (FmFormData*)pEntryData; 381cdf0e10cSrcweir if( (XForm*)m_xForm.get() != (XForm*)pFormData->GetFormIface().get() ) 382cdf0e10cSrcweir return sal_False; 383cdf0e10cSrcweir 384cdf0e10cSrcweir return FmEntryData::IsEqualWithoutChilds( pFormData ); 385cdf0e10cSrcweir } 386cdf0e10cSrcweir 387cdf0e10cSrcweir 388cdf0e10cSrcweir //======================================================================== 389cdf0e10cSrcweir // class FmControlData 390cdf0e10cSrcweir //======================================================================== 391cdf0e10cSrcweir TYPEINIT1( FmControlData, FmEntryData ); 392cdf0e10cSrcweir DBG_NAME(FmControlData); 393cdf0e10cSrcweir //------------------------------------------------------------------------ 394cdf0e10cSrcweir FmControlData::FmControlData( const Reference< XFormComponent >& _rxComponent, const ImageList& _rNormalImages, const ImageList& _rHCImages, FmFormData* _pParent ) 395cdf0e10cSrcweir :FmEntryData( _pParent, _rxComponent ) 396cdf0e10cSrcweir ,m_xFormComponent( _rxComponent ) 397cdf0e10cSrcweir { 398cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmControlData::FmControlData" ); 399cdf0e10cSrcweir DBG_CTOR(FmControlData,NULL); 400cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////// 401cdf0e10cSrcweir // Images setzen 402cdf0e10cSrcweir m_aNormalImage = GetImage( _rNormalImages ); 403cdf0e10cSrcweir m_aHCImage = GetImage( _rHCImages ); 404cdf0e10cSrcweir 405cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////// 406cdf0e10cSrcweir // Titel setzen 407cdf0e10cSrcweir Reference< XPropertySet > xSet(m_xFormComponent, UNO_QUERY); 408cdf0e10cSrcweir if( xSet.is() ) 409cdf0e10cSrcweir { 410cdf0e10cSrcweir #ifdef DBG_UTIL 411cdf0e10cSrcweir ::rtl::OUString aEntryName = ::comphelper::getString(xSet->getPropertyValue( FM_PROP_NAME )); 412cdf0e10cSrcweir #endif 413cdf0e10cSrcweir SetText( ::comphelper::getString(xSet->getPropertyValue( FM_PROP_NAME ))); 414cdf0e10cSrcweir } 415cdf0e10cSrcweir } 416cdf0e10cSrcweir 417cdf0e10cSrcweir //------------------------------------------------------------------------ 418cdf0e10cSrcweir FmControlData::~FmControlData() 419cdf0e10cSrcweir { 420cdf0e10cSrcweir DBG_DTOR(FmControlData,NULL); 421cdf0e10cSrcweir } 422cdf0e10cSrcweir 423cdf0e10cSrcweir //------------------------------------------------------------------------ 424cdf0e10cSrcweir FmControlData::FmControlData( const FmControlData& rControlData ) 425cdf0e10cSrcweir :FmEntryData( rControlData ) 426cdf0e10cSrcweir { 427cdf0e10cSrcweir DBG_CTOR(FmControlData,NULL); 428cdf0e10cSrcweir m_xFormComponent = rControlData.GetFormComponent(); 429cdf0e10cSrcweir } 430cdf0e10cSrcweir 431cdf0e10cSrcweir //------------------------------------------------------------------------ 432cdf0e10cSrcweir FmEntryData* FmControlData::Clone() 433cdf0e10cSrcweir { 434cdf0e10cSrcweir return new FmControlData( *this ); 435cdf0e10cSrcweir } 436cdf0e10cSrcweir 437cdf0e10cSrcweir //------------------------------------------------------------------------ 438cdf0e10cSrcweir Image FmControlData::GetImage(const ImageList& ilNavigatorImages) const 439cdf0e10cSrcweir { 440cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmControlData::FmControlData" ); 441cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////// 442cdf0e10cSrcweir // Default-Image 443cdf0e10cSrcweir Image aImage = ilNavigatorImages.GetImage( RID_SVXIMG_CONTROL ); 444cdf0e10cSrcweir 445cdf0e10cSrcweir Reference< XServiceInfo > xInfo( m_xFormComponent, UNO_QUERY ); 446cdf0e10cSrcweir if (!m_xFormComponent.is()) 447cdf0e10cSrcweir return aImage; 448cdf0e10cSrcweir 449cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////// 450cdf0e10cSrcweir // Spezielle Control-Images 451cdf0e10cSrcweir sal_Int16 nObjectType = getControlTypeByObject(xInfo); 452cdf0e10cSrcweir switch (nObjectType) 453cdf0e10cSrcweir { 454cdf0e10cSrcweir case OBJ_FM_BUTTON: 455cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_BUTTON ); 456cdf0e10cSrcweir break; 457cdf0e10cSrcweir 458cdf0e10cSrcweir case OBJ_FM_FIXEDTEXT: 459cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_FIXEDTEXT ); 460cdf0e10cSrcweir break; 461cdf0e10cSrcweir 462cdf0e10cSrcweir case OBJ_FM_EDIT: 463cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_EDIT ); 464cdf0e10cSrcweir break; 465cdf0e10cSrcweir 466cdf0e10cSrcweir case OBJ_FM_RADIOBUTTON: 467cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_RADIOBUTTON ); 468cdf0e10cSrcweir break; 469cdf0e10cSrcweir 470cdf0e10cSrcweir case OBJ_FM_CHECKBOX: 471cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_CHECKBOX ); 472cdf0e10cSrcweir break; 473cdf0e10cSrcweir 474cdf0e10cSrcweir case OBJ_FM_LISTBOX: 475cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_LISTBOX ); 476cdf0e10cSrcweir break; 477cdf0e10cSrcweir 478cdf0e10cSrcweir case OBJ_FM_COMBOBOX: 479cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_COMBOBOX ); 480cdf0e10cSrcweir break; 481cdf0e10cSrcweir 482cdf0e10cSrcweir case OBJ_FM_NAVIGATIONBAR: 483cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_NAVIGATIONBAR ); 484cdf0e10cSrcweir break; 485cdf0e10cSrcweir 486cdf0e10cSrcweir case OBJ_FM_GROUPBOX: 487cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_GROUPBOX ); 488cdf0e10cSrcweir break; 489cdf0e10cSrcweir 490cdf0e10cSrcweir case OBJ_FM_IMAGEBUTTON: 491cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_IMAGEBUTTON ); 492cdf0e10cSrcweir break; 493cdf0e10cSrcweir 494cdf0e10cSrcweir case OBJ_FM_FILECONTROL: 495cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_FILECONTROL ); 496cdf0e10cSrcweir break; 497cdf0e10cSrcweir 498cdf0e10cSrcweir case OBJ_FM_HIDDEN: 499cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_HIDDEN ); 500cdf0e10cSrcweir break; 501cdf0e10cSrcweir 502cdf0e10cSrcweir case OBJ_FM_DATEFIELD: 503cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_DATEFIELD ); 504cdf0e10cSrcweir break; 505cdf0e10cSrcweir 506cdf0e10cSrcweir case OBJ_FM_TIMEFIELD: 507cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_TIMEFIELD ); 508cdf0e10cSrcweir break; 509cdf0e10cSrcweir 510cdf0e10cSrcweir case OBJ_FM_NUMERICFIELD: 511cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_NUMERICFIELD ); 512cdf0e10cSrcweir break; 513cdf0e10cSrcweir 514cdf0e10cSrcweir case OBJ_FM_CURRENCYFIELD: 515cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_CURRENCYFIELD ); 516cdf0e10cSrcweir break; 517cdf0e10cSrcweir 518cdf0e10cSrcweir case OBJ_FM_PATTERNFIELD: 519cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_PATTERNFIELD ); 520cdf0e10cSrcweir break; 521cdf0e10cSrcweir 522cdf0e10cSrcweir case OBJ_FM_IMAGECONTROL: 523cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_IMAGECONTROL ); 524cdf0e10cSrcweir break; 525cdf0e10cSrcweir 526cdf0e10cSrcweir case OBJ_FM_FORMATTEDFIELD: 527cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_FORMATTEDFIELD ); 528cdf0e10cSrcweir break; 529cdf0e10cSrcweir 530cdf0e10cSrcweir case OBJ_FM_GRID: 531cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_GRID ); 532cdf0e10cSrcweir break; 533cdf0e10cSrcweir 534cdf0e10cSrcweir case OBJ_FM_SCROLLBAR: 535cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_SCROLLBAR ); 536cdf0e10cSrcweir break; 537cdf0e10cSrcweir 538cdf0e10cSrcweir case OBJ_FM_SPINBUTTON: 539cdf0e10cSrcweir aImage = ilNavigatorImages.GetImage( RID_SVXIMG_SPINBUTTON); 540cdf0e10cSrcweir break; 541cdf0e10cSrcweir } 542cdf0e10cSrcweir 543cdf0e10cSrcweir return aImage; 544cdf0e10cSrcweir } 545cdf0e10cSrcweir 546cdf0e10cSrcweir //------------------------------------------------------------------------ 547cdf0e10cSrcweir sal_Bool FmControlData::IsEqualWithoutChilds( FmEntryData* pEntryData ) 548cdf0e10cSrcweir { 549cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmControlData::IsEqualWithoutChilds" ); 550cdf0e10cSrcweir if(this == pEntryData) 551cdf0e10cSrcweir return sal_True; 552cdf0e10cSrcweir 553cdf0e10cSrcweir if( !pEntryData->ISA(FmControlData) ) 554cdf0e10cSrcweir return sal_False; 555cdf0e10cSrcweir FmControlData* pControlData = (FmControlData*)pEntryData; 556cdf0e10cSrcweir 557cdf0e10cSrcweir if( (XFormComponent*)m_xFormComponent.get() != (XFormComponent*)pControlData->GetFormComponent().get() ) 558cdf0e10cSrcweir return sal_False; 559cdf0e10cSrcweir 560cdf0e10cSrcweir return FmEntryData::IsEqualWithoutChilds( pControlData ); 561cdf0e10cSrcweir } 562cdf0e10cSrcweir 563cdf0e10cSrcweir //------------------------------------------------------------------------ 564cdf0e10cSrcweir void FmControlData::ModelReplaced( const Reference< XFormComponent >& _rxNew, const ImageList& _rNormalImages, const ImageList& _rHCImages ) 565cdf0e10cSrcweir { 566cdf0e10cSrcweir RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmControlData::ModelReplaced" ); 567cdf0e10cSrcweir m_xFormComponent = _rxNew; 568cdf0e10cSrcweir newObject( m_xFormComponent ); 569cdf0e10cSrcweir 570cdf0e10cSrcweir // Images neu setzen 571cdf0e10cSrcweir m_aNormalImage = GetImage( _rNormalImages ); 572cdf0e10cSrcweir m_aHCImage = GetImage( _rHCImages ); 573cdf0e10cSrcweir } 574cdf0e10cSrcweir 575cdf0e10cSrcweir //............................................................................ 576cdf0e10cSrcweir namespace svxform 577cdf0e10cSrcweir { 578cdf0e10cSrcweir //............................................................................ 579cdf0e10cSrcweir 580cdf0e10cSrcweir //======================================================================== 581cdf0e10cSrcweir // class NavigatorFrame 582cdf0e10cSrcweir //======================================================================== 583cdf0e10cSrcweir DBG_NAME(NavigatorFrame) 584cdf0e10cSrcweir //------------------------------------------------------------------------ 585cdf0e10cSrcweir NavigatorFrame::NavigatorFrame( SfxBindings* _pBindings, SfxChildWindow* _pMgr, 586cdf0e10cSrcweir Window* _pParent ) 587cdf0e10cSrcweir :SfxDockingWindow( _pBindings, _pMgr, _pParent, WinBits(WB_STDMODELESS|WB_SIZEABLE|WB_ROLLABLE|WB_3DLOOK|WB_DOCKABLE) ) 588cdf0e10cSrcweir ,SfxControllerItem( SID_FM_FMEXPLORER_CONTROL, *_pBindings ) 589cdf0e10cSrcweir { 590cdf0e10cSrcweir DBG_CTOR(NavigatorFrame,NULL); 591cdf0e10cSrcweir SetHelpId( HID_FORM_NAVIGATOR_WIN ); 592cdf0e10cSrcweir 593cdf0e10cSrcweir m_pNavigatorTree = new NavigatorTree(comphelper::getProcessServiceFactory(), this ); 594cdf0e10cSrcweir m_pNavigatorTree->Show(); 595cdf0e10cSrcweir SetText( SVX_RES(RID_STR_FMEXPLORER) ); 596cdf0e10cSrcweir SfxDockingWindow::SetFloatingSize( Size(200,200) ); 597cdf0e10cSrcweir } 598cdf0e10cSrcweir 599cdf0e10cSrcweir //------------------------------------------------------------------------ 600cdf0e10cSrcweir NavigatorFrame::~NavigatorFrame() 601cdf0e10cSrcweir { 602cdf0e10cSrcweir delete m_pNavigatorTree; 603cdf0e10cSrcweir DBG_DTOR(NavigatorFrame,NULL); 604cdf0e10cSrcweir } 605cdf0e10cSrcweir 606cdf0e10cSrcweir //----------------------------------------------------------------------- 607cdf0e10cSrcweir void NavigatorFrame::UpdateContent( FmFormShell* pFormShell ) 608cdf0e10cSrcweir { 609cdf0e10cSrcweir m_pNavigatorTree->UpdateContent( pFormShell ); 610cdf0e10cSrcweir } 611cdf0e10cSrcweir 612cdf0e10cSrcweir //----------------------------------------------------------------------- 613cdf0e10cSrcweir void NavigatorFrame::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 614cdf0e10cSrcweir { 615cdf0e10cSrcweir if( !pState || SID_FM_FMEXPLORER_CONTROL != nSID ) 616cdf0e10cSrcweir return; 617cdf0e10cSrcweir 618cdf0e10cSrcweir if( eState >= SFX_ITEM_AVAILABLE ) 619cdf0e10cSrcweir { 620cdf0e10cSrcweir FmFormShell* pShell = PTR_CAST( FmFormShell,((SfxObjectItem*)pState)->GetShell() ); 621cdf0e10cSrcweir UpdateContent( pShell ); 622cdf0e10cSrcweir } 623cdf0e10cSrcweir else 624cdf0e10cSrcweir UpdateContent( NULL ); 625cdf0e10cSrcweir } 626cdf0e10cSrcweir 627cdf0e10cSrcweir //----------------------------------------------------------------------- 628cdf0e10cSrcweir void NavigatorFrame::GetFocus() 629cdf0e10cSrcweir { 630cdf0e10cSrcweir if ( m_pNavigatorTree ) 631cdf0e10cSrcweir m_pNavigatorTree->GrabFocus(); 632cdf0e10cSrcweir else 633cdf0e10cSrcweir SfxDockingWindow::GetFocus(); 634cdf0e10cSrcweir } 635cdf0e10cSrcweir 636cdf0e10cSrcweir //----------------------------------------------------------------------- 637cdf0e10cSrcweir sal_Bool NavigatorFrame::Close() 638cdf0e10cSrcweir { 639cdf0e10cSrcweir UpdateContent( NULL ); 640cdf0e10cSrcweir return SfxDockingWindow::Close(); 641cdf0e10cSrcweir } 642cdf0e10cSrcweir 643cdf0e10cSrcweir //----------------------------------------------------------------------- 644cdf0e10cSrcweir void NavigatorFrame::FillInfo( SfxChildWinInfo& rInfo ) const 645cdf0e10cSrcweir { 646cdf0e10cSrcweir SfxDockingWindow::FillInfo( rInfo ); 647cdf0e10cSrcweir rInfo.bVisible = sal_False; 648cdf0e10cSrcweir } 649cdf0e10cSrcweir 650cdf0e10cSrcweir //----------------------------------------------------------------------- 651cdf0e10cSrcweir Size NavigatorFrame::CalcDockingSize( SfxChildAlignment eAlign ) 652cdf0e10cSrcweir { 653cdf0e10cSrcweir if ( ( eAlign == SFX_ALIGN_TOP ) || ( eAlign == SFX_ALIGN_BOTTOM ) ) 654cdf0e10cSrcweir return Size(); 655cdf0e10cSrcweir 656cdf0e10cSrcweir return SfxDockingWindow::CalcDockingSize( eAlign ); 657cdf0e10cSrcweir } 658cdf0e10cSrcweir 659cdf0e10cSrcweir //----------------------------------------------------------------------- 660cdf0e10cSrcweir SfxChildAlignment NavigatorFrame::CheckAlignment( SfxChildAlignment _eActAlign, SfxChildAlignment _eAlign ) 661cdf0e10cSrcweir { 662cdf0e10cSrcweir if ( ( _eAlign == SFX_ALIGN_LEFT ) || ( _eAlign == SFX_ALIGN_RIGHT ) || ( _eAlign == SFX_ALIGN_NOALIGNMENT ) ) 663cdf0e10cSrcweir return _eAlign; 664cdf0e10cSrcweir return _eActAlign; 665cdf0e10cSrcweir } 666cdf0e10cSrcweir 667cdf0e10cSrcweir //------------------------------------------------------------------------ 668cdf0e10cSrcweir void NavigatorFrame::Resize() 669cdf0e10cSrcweir { 670cdf0e10cSrcweir SfxDockingWindow::Resize(); 671cdf0e10cSrcweir 672cdf0e10cSrcweir Size aLogOutputSize = PixelToLogic( GetOutputSizePixel(), MAP_APPFONT ); 673cdf0e10cSrcweir Size aLogExplSize = aLogOutputSize; 674cdf0e10cSrcweir aLogExplSize.Width() -= 6; 675cdf0e10cSrcweir aLogExplSize.Height() -= 6; 676cdf0e10cSrcweir 677cdf0e10cSrcweir Point aExplPos = LogicToPixel( Point(3,3), MAP_APPFONT ); 678cdf0e10cSrcweir Size aExplSize = LogicToPixel( aLogExplSize, MAP_APPFONT ); 679cdf0e10cSrcweir 680cdf0e10cSrcweir m_pNavigatorTree->SetPosSizePixel( aExplPos, aExplSize ); 681cdf0e10cSrcweir } 682cdf0e10cSrcweir 683cdf0e10cSrcweir 684cdf0e10cSrcweir //======================================================================== 685cdf0e10cSrcweir // class NavigatorFrameManager 686cdf0e10cSrcweir //======================================================================== 687cdf0e10cSrcweir 688cdf0e10cSrcweir //----------------------------------------------------------------------- 689cdf0e10cSrcweir SFX_IMPL_DOCKINGWINDOW( NavigatorFrameManager, SID_FM_SHOW_FMEXPLORER ) 690cdf0e10cSrcweir 691cdf0e10cSrcweir //----------------------------------------------------------------------- 692cdf0e10cSrcweir NavigatorFrameManager::NavigatorFrameManager( Window* _pParent, sal_uInt16 _nId, 693cdf0e10cSrcweir SfxBindings* _pBindings, SfxChildWinInfo* _pInfo ) 694cdf0e10cSrcweir :SfxChildWindow( _pParent, _nId ) 695cdf0e10cSrcweir { 696cdf0e10cSrcweir pWindow = new NavigatorFrame( _pBindings, this, _pParent ); 697cdf0e10cSrcweir eChildAlignment = SFX_ALIGN_NOALIGNMENT; 698cdf0e10cSrcweir ((SfxDockingWindow*)pWindow)->Initialize( _pInfo ); 699cdf0e10cSrcweir } 700cdf0e10cSrcweir 701cdf0e10cSrcweir //............................................................................ 702cdf0e10cSrcweir } // namespace svxform 703cdf0e10cSrcweir //............................................................................ 704