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