xref: /aoo42x/main/cui/source/tabpages/labdlg.cxx (revision 2ee96f1c)
1*2ee96f1cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*2ee96f1cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*2ee96f1cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*2ee96f1cSAndrew Rist  * distributed with this work for additional information
6*2ee96f1cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*2ee96f1cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*2ee96f1cSAndrew Rist  * "License"); you may not use this file except in compliance
9*2ee96f1cSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*2ee96f1cSAndrew Rist  *
11*2ee96f1cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*2ee96f1cSAndrew Rist  *
13*2ee96f1cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*2ee96f1cSAndrew Rist  * software distributed under the License is distributed on an
15*2ee96f1cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2ee96f1cSAndrew Rist  * KIND, either express or implied.  See the License for the
17*2ee96f1cSAndrew Rist  * specific language governing permissions and limitations
18*2ee96f1cSAndrew Rist  * under the License.
19*2ee96f1cSAndrew Rist  *
20*2ee96f1cSAndrew Rist  *************************************************************/
21*2ee96f1cSAndrew Rist 
22*2ee96f1cSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_cui.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir // include ---------------------------------------------------------------
28cdf0e10cSrcweir #include <tools/shl.hxx>
29cdf0e10cSrcweir #include <sfx2/app.hxx>
30cdf0e10cSrcweir #include <sfx2/module.hxx>
31cdf0e10cSrcweir #include <swpossizetabpage.hxx>
32cdf0e10cSrcweir #include <svx/dialogs.hrc>
33cdf0e10cSrcweir #define _SVX_LABDLG_CXX
34cdf0e10cSrcweir 
35cdf0e10cSrcweir #include <svx/svdattrx.hxx>
36cdf0e10cSrcweir #include <cuires.hrc>
37cdf0e10cSrcweir #include <dialmgr.hxx>
38cdf0e10cSrcweir #include "svx/dlgutil.hxx"
39cdf0e10cSrcweir #include "transfrm.hxx"
40cdf0e10cSrcweir 
41cdf0e10cSrcweir #include "labdlg.hrc"
42cdf0e10cSrcweir #include "labdlg.hxx"
43cdf0e10cSrcweir 
44cdf0e10cSrcweir // define ----------------------------------------------------------------
45cdf0e10cSrcweir 
46cdf0e10cSrcweir #define AZ_OPTIMAL		0
47cdf0e10cSrcweir #define AZ_VON_OBEN		1
48cdf0e10cSrcweir #define AZ_VON_LINKS	2
49cdf0e10cSrcweir #define AZ_HORIZONTAL	3
50cdf0e10cSrcweir #define AZ_VERTIKAL		4
51cdf0e10cSrcweir 
52cdf0e10cSrcweir #define AT_OBEN			0
53cdf0e10cSrcweir #define AT_MITTE		1
54cdf0e10cSrcweir #define AT_UNTEN		2
55cdf0e10cSrcweir 
56cdf0e10cSrcweir #define WK_OPTIMAL		0
57cdf0e10cSrcweir #define WK_30			1
58cdf0e10cSrcweir #define WK_45			2
59cdf0e10cSrcweir #define WK_60			3
60cdf0e10cSrcweir #define WK_90			4
61cdf0e10cSrcweir 
62cdf0e10cSrcweir // static ----------------------------------------------------------------
63cdf0e10cSrcweir 
64cdf0e10cSrcweir static sal_uInt16 pCaptionRanges[] =
65cdf0e10cSrcweir {
66cdf0e10cSrcweir 	SDRATTR_CAPTIONTYPE,
67cdf0e10cSrcweir 	SDRATTR_CAPTIONFIXEDANGLE,
68cdf0e10cSrcweir 	SDRATTR_CAPTIONANGLE,
69cdf0e10cSrcweir 	SDRATTR_CAPTIONGAP,
70cdf0e10cSrcweir 	SDRATTR_CAPTIONESCDIR,
71cdf0e10cSrcweir 	SDRATTR_CAPTIONESCISREL,
72cdf0e10cSrcweir 	SDRATTR_CAPTIONESCREL,
73cdf0e10cSrcweir 	SDRATTR_CAPTIONESCABS,
74cdf0e10cSrcweir 	SDRATTR_CAPTIONLINELEN,
75cdf0e10cSrcweir 	SDRATTR_CAPTIONFITLINELEN,
76cdf0e10cSrcweir 	0
77cdf0e10cSrcweir };
78cdf0e10cSrcweir 
79cdf0e10cSrcweir // -----------------------------------------------------------------------
80cdf0e10cSrcweir 
SvxCaptionTabPage(Window * pParent,const SfxItemSet & rInAttrs)81cdf0e10cSrcweir SvxCaptionTabPage::SvxCaptionTabPage(Window* pParent, const SfxItemSet& rInAttrs)
82cdf0e10cSrcweir  :	SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_CAPTION ), rInAttrs ),
83cdf0e10cSrcweir 
84cdf0e10cSrcweir 	aCT_CAPTTYPE(		this, CUI_RES( CT_CAPTTYPE ) ),
85cdf0e10cSrcweir 	aFT_ABSTAND(		this, CUI_RES( FT_ABSTAND ) ),
86cdf0e10cSrcweir 	aMF_ABSTAND(		this, CUI_RES( MF_ABSTAND ) ),
87cdf0e10cSrcweir 	aFT_WINKEL(			this, CUI_RES( FT_WINKEL ) ),
88cdf0e10cSrcweir 	aLB_WINKEL(			this, CUI_RES( LB_WINKEL ) ),
89cdf0e10cSrcweir 	aFT_ANSATZ(			this, CUI_RES( FT_ANSATZ ) ),
90cdf0e10cSrcweir 	aLB_ANSATZ(			this, CUI_RES( LB_ANSATZ ) ),
91cdf0e10cSrcweir 	aFT_UM(				this, CUI_RES( FT_UM ) ),
92cdf0e10cSrcweir 	aMF_ANSATZ(			this, CUI_RES( MF_ANSATZ ) ),
93cdf0e10cSrcweir 	aFT_ANSATZ_REL(		this, CUI_RES( FT_ANSATZ_REL ) ),
94cdf0e10cSrcweir 	aLB_ANSATZ_REL(		this, CUI_RES( LB_ANSATZ_REL ) ),
95cdf0e10cSrcweir 	aFT_LAENGE(			this, CUI_RES( FT_LAENGE ) ),
96cdf0e10cSrcweir 	aMF_LAENGE(			this, CUI_RES( MF_LAENGE ) ),
97cdf0e10cSrcweir 	aCB_LAENGE(			this, CUI_RES( CB_LAENGE ) ),
98cdf0e10cSrcweir 
99cdf0e10cSrcweir 	aStrHorzList( CUI_RES(STR_HORZ_LIST) ),
100cdf0e10cSrcweir 	aStrVertList( CUI_RES(STR_VERT_LIST) ),
101cdf0e10cSrcweir 
102cdf0e10cSrcweir 	rOutAttrs		( rInAttrs )
103cdf0e10cSrcweir {
104cdf0e10cSrcweir 	//------------NYI-------------------------------------------
105cdf0e10cSrcweir 	aFT_WINKEL.Hide();
106cdf0e10cSrcweir 	aLB_WINKEL.Hide();
107cdf0e10cSrcweir 
108cdf0e10cSrcweir 	//------------Positionen korrigieren-------------------------
109cdf0e10cSrcweir 	aFT_ANSATZ_REL.SetPosPixel( aFT_UM.GetPosPixel() );
110cdf0e10cSrcweir 	aLB_ANSATZ_REL.SetPosPixel(
111cdf0e10cSrcweir 		Point(
112cdf0e10cSrcweir 			aFT_ANSATZ_REL.GetPosPixel().X()+aFT_ANSATZ_REL.GetSizePixel().Width()+6,
113cdf0e10cSrcweir 			aLB_ANSATZ.GetPosPixel().Y() )
114cdf0e10cSrcweir 		);
115cdf0e10cSrcweir 
116cdf0e10cSrcweir 	aMF_ANSATZ.SetPosPixel(
117cdf0e10cSrcweir 		Point(
118cdf0e10cSrcweir 			aFT_UM.GetPosPixel().X()+aFT_UM.GetSizePixel().Width()+6,
119cdf0e10cSrcweir 			aLB_ANSATZ.GetPosPixel().Y() )
120cdf0e10cSrcweir 		);
121cdf0e10cSrcweir 
122cdf0e10cSrcweir 	sal_uInt16 nBitmap;
123cdf0e10cSrcweir 	for( nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; nBitmap++ )
124cdf0e10cSrcweir 	{
125cdf0e10cSrcweir 		mpBmpCapTypes[nBitmap]  = new Image(Bitmap(CUI_RES(BMP_CAPTTYPE_1   + nBitmap)), COL_LIGHTMAGENTA );
126cdf0e10cSrcweir 		mpBmpCapTypesH[nBitmap] = new Image(Bitmap(CUI_RES(BMP_CAPTTYPE_1_H + nBitmap)), COL_LIGHTMAGENTA );
127cdf0e10cSrcweir 	}
128cdf0e10cSrcweir 
129cdf0e10cSrcweir 	//------------ValueSet installieren--------------------------
130cdf0e10cSrcweir 	aCT_CAPTTYPE.SetStyle( aCT_CAPTTYPE.GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD );
131cdf0e10cSrcweir 	aCT_CAPTTYPE.SetColCount(5);//XXX
132cdf0e10cSrcweir 	aCT_CAPTTYPE.SetLineCount(1);
133cdf0e10cSrcweir 	aCT_CAPTTYPE.SetSelectHdl(LINK( this, SvxCaptionTabPage, SelectCaptTypeHdl_Impl));
134cdf0e10cSrcweir 
135cdf0e10cSrcweir 	Image aImage;
136cdf0e10cSrcweir 	aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_1, aImage,	String(CUI_RES(STR_CAPTTYPE_1)));
137cdf0e10cSrcweir 	aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_2,	aImage,	String(CUI_RES(STR_CAPTTYPE_2)));
138cdf0e10cSrcweir 	aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_3,	aImage,	String(CUI_RES(STR_CAPTTYPE_3)));
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 	FillValueSet();
141cdf0e10cSrcweir 
142cdf0e10cSrcweir 	aLB_ANSATZ.SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzSelectHdl_Impl));
143cdf0e10cSrcweir 	aLB_ANSATZ_REL.SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzRelSelectHdl_Impl));
144cdf0e10cSrcweir 	aCB_LAENGE.SetClickHdl(LINK(this,SvxCaptionTabPage,LineOptHdl_Impl));
145cdf0e10cSrcweir 
146cdf0e10cSrcweir 	FreeResource();
147cdf0e10cSrcweir }
148cdf0e10cSrcweir 
149cdf0e10cSrcweir // -----------------------------------------------------------------------
150cdf0e10cSrcweir 
~SvxCaptionTabPage()151cdf0e10cSrcweir SvxCaptionTabPage::~SvxCaptionTabPage()
152cdf0e10cSrcweir {
153cdf0e10cSrcweir 	sal_uInt16 nBitmap;
154cdf0e10cSrcweir 	for( nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; nBitmap++ )
155cdf0e10cSrcweir 	{
156cdf0e10cSrcweir 		delete mpBmpCapTypes[nBitmap];
157cdf0e10cSrcweir 		delete mpBmpCapTypesH[nBitmap];
158cdf0e10cSrcweir 	}
159cdf0e10cSrcweir }
160cdf0e10cSrcweir 
161cdf0e10cSrcweir // -----------------------------------------------------------------------
162cdf0e10cSrcweir 
Construct()163cdf0e10cSrcweir void SvxCaptionTabPage::Construct()
164cdf0e10cSrcweir {
165cdf0e10cSrcweir 	// Setzen des Rechtecks und der Workingarea
166cdf0e10cSrcweir 	DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
167cdf0e10cSrcweir }
168cdf0e10cSrcweir 
169cdf0e10cSrcweir // -----------------------------------------------------------------------
170cdf0e10cSrcweir 
FillItemSet(SfxItemSet & _rOutAttrs)171cdf0e10cSrcweir sal_Bool SvxCaptionTabPage::FillItemSet( SfxItemSet&  _rOutAttrs)
172cdf0e10cSrcweir {
173cdf0e10cSrcweir     SfxItemPool*    pPool = _rOutAttrs.GetPool();
174cdf0e10cSrcweir 	DBG_ASSERT( pPool, "Wo ist der Pool" );
175cdf0e10cSrcweir 
176cdf0e10cSrcweir 	SfxMapUnit		eUnit;
177cdf0e10cSrcweir 
178cdf0e10cSrcweir 	nCaptionType = aCT_CAPTTYPE.GetSelectItemId()-1;
179cdf0e10cSrcweir 
180cdf0e10cSrcweir     _rOutAttrs.Put( SdrCaptionTypeItem( (SdrCaptionType) nCaptionType ) );
181cdf0e10cSrcweir 
182cdf0e10cSrcweir 	if( aMF_ABSTAND.IsValueModified() )
183cdf0e10cSrcweir 	{
184cdf0e10cSrcweir 		eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONGAP ) );
185cdf0e10cSrcweir         _rOutAttrs.Put( SdrCaptionGapItem( GetCoreValue(aMF_ABSTAND, eUnit ) ) );
186cdf0e10cSrcweir 	}
187cdf0e10cSrcweir 
188cdf0e10cSrcweir 	// Sonderbehandlung!!! XXX
189cdf0e10cSrcweir 	if( nCaptionType==SDRCAPT_TYPE1 )
190cdf0e10cSrcweir 	{
191cdf0e10cSrcweir 		switch( nEscDir )
192cdf0e10cSrcweir 		{
193cdf0e10cSrcweir 			case SDRCAPT_ESCHORIZONTAL:		nEscDir=SDRCAPT_ESCVERTICAL;break;
194cdf0e10cSrcweir 			case SDRCAPT_ESCVERTICAL:		nEscDir=SDRCAPT_ESCHORIZONTAL;break;
195cdf0e10cSrcweir 		}
196cdf0e10cSrcweir 	}
197cdf0e10cSrcweir 
198cdf0e10cSrcweir     _rOutAttrs.Put( SdrCaptionEscDirItem( (SdrCaptionEscDir)nEscDir ) );
199cdf0e10cSrcweir 
200cdf0e10cSrcweir 	bEscRel = aLB_ANSATZ_REL.IsVisible();
201cdf0e10cSrcweir     _rOutAttrs.Put( SdrCaptionEscIsRelItem( bEscRel ) );
202cdf0e10cSrcweir 
203cdf0e10cSrcweir 	if( bEscRel )
204cdf0e10cSrcweir 	{
205cdf0e10cSrcweir 		long	nVal = 0;
206cdf0e10cSrcweir 
207cdf0e10cSrcweir 		switch( aLB_ANSATZ_REL.GetSelectEntryPos() )
208cdf0e10cSrcweir 		{
209cdf0e10cSrcweir 			case AT_OBEN:	nVal=0;break;
210cdf0e10cSrcweir 			case AT_MITTE:	nVal=5000;break;
211cdf0e10cSrcweir 			case AT_UNTEN:	nVal=10000;break;
212cdf0e10cSrcweir 		}
213cdf0e10cSrcweir         _rOutAttrs.Put( SdrCaptionEscRelItem( nVal ) );
214cdf0e10cSrcweir 	}
215cdf0e10cSrcweir 	else
216cdf0e10cSrcweir 	{
217cdf0e10cSrcweir 		if( aMF_ANSATZ.IsValueModified() )
218cdf0e10cSrcweir 		{
219cdf0e10cSrcweir 			eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONESCABS ) );
220cdf0e10cSrcweir             _rOutAttrs.Put( SdrCaptionEscAbsItem( GetCoreValue(aMF_ANSATZ, eUnit ) ) );
221cdf0e10cSrcweir 		}
222cdf0e10cSrcweir 	}
223cdf0e10cSrcweir 
224cdf0e10cSrcweir 	bFitLineLen = aCB_LAENGE.IsChecked();
225cdf0e10cSrcweir     _rOutAttrs.Put( SdrCaptionFitLineLenItem( bFitLineLen ) );
226cdf0e10cSrcweir 
227cdf0e10cSrcweir 	if( ! bFitLineLen )
228cdf0e10cSrcweir 	{
229cdf0e10cSrcweir 		if( aMF_LAENGE.IsValueModified() )
230cdf0e10cSrcweir 		{
231cdf0e10cSrcweir 			eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONLINELEN ) );
232cdf0e10cSrcweir             _rOutAttrs.Put( SdrCaptionLineLenItem( GetCoreValue(aMF_LAENGE, eUnit ) ) );
233cdf0e10cSrcweir 		}
234cdf0e10cSrcweir 	}
235cdf0e10cSrcweir 
236cdf0e10cSrcweir //NYI-------------die Winkel muessen noch hier rein!!! XXX----------------------
237cdf0e10cSrcweir 
238cdf0e10cSrcweir 	return( sal_True );
239cdf0e10cSrcweir }
240cdf0e10cSrcweir 
241cdf0e10cSrcweir // -----------------------------------------------------------------------
242cdf0e10cSrcweir 
Reset(const SfxItemSet &)243cdf0e10cSrcweir void SvxCaptionTabPage::Reset( const SfxItemSet&  )
244cdf0e10cSrcweir {
245cdf0e10cSrcweir 
246cdf0e10cSrcweir 	//------------Metrik einstellen-----------------------------
247cdf0e10cSrcweir 
248cdf0e10cSrcweir 	FieldUnit eFUnit = GetModuleFieldUnit( rOutAttrs );
249cdf0e10cSrcweir 
250cdf0e10cSrcweir 	switch ( eFUnit )
251cdf0e10cSrcweir 	{
252cdf0e10cSrcweir 		case FUNIT_CM:
253cdf0e10cSrcweir 		case FUNIT_M:
254cdf0e10cSrcweir 		case FUNIT_KM:
255cdf0e10cSrcweir 			eFUnit = FUNIT_MM;
256cdf0e10cSrcweir 			break;
257cdf0e10cSrcweir         default: ;//prevent warning
258cdf0e10cSrcweir 	}
259cdf0e10cSrcweir 	SetFieldUnit( aMF_ABSTAND, eFUnit );
260cdf0e10cSrcweir 	SetFieldUnit( aMF_ANSATZ, eFUnit );
261cdf0e10cSrcweir 	SetFieldUnit( aMF_LAENGE, eFUnit );
262cdf0e10cSrcweir 
263cdf0e10cSrcweir 	SfxItemPool* 	pPool = rOutAttrs.GetPool();
264cdf0e10cSrcweir 	DBG_ASSERT( pPool, "Wo ist der Pool" );
265cdf0e10cSrcweir 
266cdf0e10cSrcweir 	sal_uInt16			nWhich;
267cdf0e10cSrcweir 	SfxMapUnit		eUnit;
268cdf0e10cSrcweir 
269cdf0e10cSrcweir 	//------- Winkel ----------
270cdf0e10cSrcweir 	nWhich = GetWhich( SDRATTR_CAPTIONANGLE );
271cdf0e10cSrcweir 	nFixedAngle = ( ( const SdrCaptionAngleItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
272cdf0e10cSrcweir 
273cdf0e10cSrcweir 	//------- absolute Ansatzentfernung ----------
274cdf0e10cSrcweir 	nWhich = GetWhich( SDRATTR_CAPTIONESCABS );
275cdf0e10cSrcweir 	eUnit = pPool->GetMetric( nWhich );
276cdf0e10cSrcweir 	nEscAbs = ( ( const SdrCaptionEscAbsItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
277cdf0e10cSrcweir 	SetMetricValue( aMF_ANSATZ, nEscAbs, eUnit );
278cdf0e10cSrcweir 	nEscAbs = static_cast<long>(aMF_ANSATZ.GetValue());
279cdf0e10cSrcweir 
280cdf0e10cSrcweir 	//------- relative Ansatzentfernung ----------
281cdf0e10cSrcweir 	nWhich = GetWhich( SDRATTR_CAPTIONESCREL );
282cdf0e10cSrcweir 	nEscRel = (long)( ( const SdrCaptionEscRelItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
283cdf0e10cSrcweir 
284cdf0e10cSrcweir 	//------- Linienlaenge ----------
285cdf0e10cSrcweir 	nWhich = GetWhich( SDRATTR_CAPTIONLINELEN );
286cdf0e10cSrcweir 	eUnit = pPool->GetMetric( nWhich );
287cdf0e10cSrcweir 	nLineLen = ( ( const SdrCaptionLineLenItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
288cdf0e10cSrcweir 	SetMetricValue( aMF_LAENGE, nLineLen, eUnit );
289cdf0e10cSrcweir 	nLineLen = static_cast<long>(aMF_LAENGE.GetValue());
290cdf0e10cSrcweir 
291cdf0e10cSrcweir 	//------- Abstand zur Box ----------
292cdf0e10cSrcweir 	nWhich = GetWhich( SDRATTR_CAPTIONGAP );
293cdf0e10cSrcweir 	eUnit = pPool->GetMetric( nWhich );
294cdf0e10cSrcweir 	nGap = ( ( const SdrCaptionGapItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
295cdf0e10cSrcweir 	SetMetricValue( aMF_ABSTAND, nGap, eUnit );
296cdf0e10cSrcweir 	nGap = static_cast<long>(aMF_ABSTAND.GetValue());
297cdf0e10cSrcweir 
298cdf0e10cSrcweir 	nCaptionType = (short)( ( const SdrCaptionTypeItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONTYPE ) ) ).GetValue();
299cdf0e10cSrcweir 	bFixedAngle = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFIXEDANGLE ) ) ).GetValue();
300cdf0e10cSrcweir 	bFitLineLen = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFITLINELEN ) ) ).GetValue();
301cdf0e10cSrcweir 	nEscDir = (short)( ( const SdrCaptionEscDirItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCDIR ) ) ).GetValue();
302cdf0e10cSrcweir 	bEscRel = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCISREL ) ) ).GetValue();
303cdf0e10cSrcweir 
304cdf0e10cSrcweir 	// Sonderbehandlung!!! XXX
305cdf0e10cSrcweir 	if( nCaptionType==SDRCAPT_TYPE1 )
306cdf0e10cSrcweir 	{
307cdf0e10cSrcweir 		switch( nEscDir )
308cdf0e10cSrcweir 		{
309cdf0e10cSrcweir 			case SDRCAPT_ESCHORIZONTAL:		nEscDir=SDRCAPT_ESCVERTICAL;break;
310cdf0e10cSrcweir 			case SDRCAPT_ESCVERTICAL:		nEscDir=SDRCAPT_ESCHORIZONTAL;break;
311cdf0e10cSrcweir 		}
312cdf0e10cSrcweir 	}
313cdf0e10cSrcweir 
314cdf0e10cSrcweir 	nAnsatzRelPos=AT_MITTE;
315cdf0e10cSrcweir 	nAnsatzTypePos=AZ_OPTIMAL;
316cdf0e10cSrcweir 	nWinkelTypePos=WK_OPTIMAL;
317cdf0e10cSrcweir 
318cdf0e10cSrcweir 	aMF_ABSTAND.SetValue( nGap );
319cdf0e10cSrcweir 
320cdf0e10cSrcweir 	if( nEscDir == SDRCAPT_ESCHORIZONTAL )
321cdf0e10cSrcweir 	{
322cdf0e10cSrcweir 		if( bEscRel )
323cdf0e10cSrcweir 		{
324cdf0e10cSrcweir 			if( nEscRel < 3333 )
325cdf0e10cSrcweir 				nAnsatzRelPos = AT_OBEN;
326cdf0e10cSrcweir 			if( nEscRel > 6666 )
327cdf0e10cSrcweir 				nAnsatzRelPos = AT_UNTEN;
328cdf0e10cSrcweir 			nAnsatzTypePos = AZ_HORIZONTAL;
329cdf0e10cSrcweir 		}
330cdf0e10cSrcweir 		else
331cdf0e10cSrcweir 		{
332cdf0e10cSrcweir 			nAnsatzTypePos = AZ_VON_OBEN;
333cdf0e10cSrcweir 			aMF_ANSATZ.SetValue( nEscAbs );
334cdf0e10cSrcweir 		}
335cdf0e10cSrcweir 	}
336cdf0e10cSrcweir 	else if( nEscDir == SDRCAPT_ESCVERTICAL )
337cdf0e10cSrcweir 	{
338cdf0e10cSrcweir 		if( bEscRel )
339cdf0e10cSrcweir 		{
340cdf0e10cSrcweir 			if( nEscRel < 3333 )
341cdf0e10cSrcweir 				nAnsatzRelPos = AT_OBEN;
342cdf0e10cSrcweir 			if( nEscRel > 6666 )
343cdf0e10cSrcweir 				nAnsatzRelPos = AT_UNTEN;
344cdf0e10cSrcweir 			nAnsatzTypePos = AZ_VERTIKAL;
345cdf0e10cSrcweir 		}
346cdf0e10cSrcweir 		else
347cdf0e10cSrcweir 		{
348cdf0e10cSrcweir 			nAnsatzTypePos = AZ_VON_LINKS;
349cdf0e10cSrcweir 			aMF_ANSATZ.SetValue( nEscAbs );
350cdf0e10cSrcweir 		}
351cdf0e10cSrcweir 	}
352cdf0e10cSrcweir 	else if( nEscDir == SDRCAPT_ESCBESTFIT )
353cdf0e10cSrcweir 	{
354cdf0e10cSrcweir 		nAnsatzTypePos = AZ_OPTIMAL;
355cdf0e10cSrcweir 	}
356cdf0e10cSrcweir 
357cdf0e10cSrcweir 	if( bFixedAngle )
358cdf0e10cSrcweir 	{
359cdf0e10cSrcweir 		if( nFixedAngle <= 3000 )
360cdf0e10cSrcweir 			nWinkelTypePos=WK_30;
361cdf0e10cSrcweir 		else if( nFixedAngle <= 4500 )
362cdf0e10cSrcweir 			nWinkelTypePos=WK_45;
363cdf0e10cSrcweir 		else if( nFixedAngle <= 6000 )
364cdf0e10cSrcweir 			nWinkelTypePos=WK_60;
365cdf0e10cSrcweir 		else
366cdf0e10cSrcweir 			nWinkelTypePos=WK_90;
367cdf0e10cSrcweir 	}
368cdf0e10cSrcweir 
369cdf0e10cSrcweir 	aCB_LAENGE.Check( bFitLineLen );
370cdf0e10cSrcweir 	aMF_LAENGE.SetValue( nLineLen );
371cdf0e10cSrcweir 
372cdf0e10cSrcweir 	aLB_ANSATZ.SelectEntryPos( nAnsatzTypePos );
373cdf0e10cSrcweir 	aLB_WINKEL.SelectEntryPos( nWinkelTypePos );
374cdf0e10cSrcweir 
375cdf0e10cSrcweir 	SetupAnsatz_Impl( nAnsatzTypePos );
376cdf0e10cSrcweir 	aCT_CAPTTYPE.SelectItem( nCaptionType+1 );// Enum beginnt bei 0!
377cdf0e10cSrcweir 	SetupType_Impl( nCaptionType+1 );
378cdf0e10cSrcweir }
379cdf0e10cSrcweir 
380cdf0e10cSrcweir // -----------------------------------------------------------------------
381cdf0e10cSrcweir 
Create(Window * pWindow,const SfxItemSet & rOutAttrs)382cdf0e10cSrcweir SfxTabPage* SvxCaptionTabPage::Create( Window* pWindow,
383cdf0e10cSrcweir 				const SfxItemSet& rOutAttrs )
384cdf0e10cSrcweir {
385cdf0e10cSrcweir 	return( new SvxCaptionTabPage( pWindow, rOutAttrs ) );
386cdf0e10cSrcweir }
387cdf0e10cSrcweir 
388cdf0e10cSrcweir //------------------------------------------------------------------------
389cdf0e10cSrcweir 
GetRanges()390cdf0e10cSrcweir sal_uInt16*	SvxCaptionTabPage::GetRanges()
391cdf0e10cSrcweir {
392cdf0e10cSrcweir 	return( pCaptionRanges );
393cdf0e10cSrcweir }
394cdf0e10cSrcweir 
395cdf0e10cSrcweir //------------------------------------------------------------------------
396cdf0e10cSrcweir 
SetupAnsatz_Impl(sal_uInt16 nType)397cdf0e10cSrcweir void SvxCaptionTabPage::SetupAnsatz_Impl( sal_uInt16 nType )
398cdf0e10cSrcweir {
399cdf0e10cSrcweir 	xub_StrLen	nCnt=0, nIdx=0;
400cdf0e10cSrcweir 
401cdf0e10cSrcweir 	switch( nType )
402cdf0e10cSrcweir 	{
403cdf0e10cSrcweir 		case AZ_OPTIMAL:
404cdf0e10cSrcweir //		aMF_ANSATZ.Hide(); //XXX auch bei OPTIMAL werden Abswerte genommen
405cdf0e10cSrcweir //		aFT_UM.Hide();
406cdf0e10cSrcweir 		aMF_ANSATZ.Show();
407cdf0e10cSrcweir 		aFT_UM.Show();
408cdf0e10cSrcweir 		aFT_ANSATZ_REL.Hide();
409cdf0e10cSrcweir 		aLB_ANSATZ_REL.Hide();
410cdf0e10cSrcweir 		nEscDir = SDRCAPT_ESCBESTFIT;
411cdf0e10cSrcweir 		break;
412cdf0e10cSrcweir 
413cdf0e10cSrcweir 		case AZ_VON_OBEN:
414cdf0e10cSrcweir 		aMF_ANSATZ.Show();
415cdf0e10cSrcweir 		aFT_UM.Show();
416cdf0e10cSrcweir 		aFT_ANSATZ_REL.Hide();
417cdf0e10cSrcweir 		aLB_ANSATZ_REL.Hide();
418cdf0e10cSrcweir 		nEscDir = SDRCAPT_ESCHORIZONTAL;
419cdf0e10cSrcweir 		break;
420cdf0e10cSrcweir 
421cdf0e10cSrcweir 		case AZ_VON_LINKS:
422cdf0e10cSrcweir 		aMF_ANSATZ.Show();
423cdf0e10cSrcweir 		aFT_UM.Show();
424cdf0e10cSrcweir 		aFT_ANSATZ_REL.Hide();
425cdf0e10cSrcweir 		aLB_ANSATZ_REL.Hide();
426cdf0e10cSrcweir 		nEscDir = SDRCAPT_ESCVERTICAL;
427cdf0e10cSrcweir 		break;
428cdf0e10cSrcweir 
429cdf0e10cSrcweir 		case AZ_HORIZONTAL:
430cdf0e10cSrcweir 		aLB_ANSATZ_REL.Clear();
431cdf0e10cSrcweir 		nCnt = aStrHorzList.GetTokenCount();
432cdf0e10cSrcweir 		for( nIdx=0 ; nIdx<nCnt ; nIdx++ )
433cdf0e10cSrcweir 			aLB_ANSATZ_REL.InsertEntry( aStrHorzList.GetToken(nIdx) );
434cdf0e10cSrcweir 		aLB_ANSATZ_REL.SelectEntryPos( nAnsatzRelPos );
435cdf0e10cSrcweir 
436cdf0e10cSrcweir 		aMF_ANSATZ.Hide();
437cdf0e10cSrcweir 		aFT_UM.Hide();
438cdf0e10cSrcweir 		aFT_ANSATZ_REL.Show();
439cdf0e10cSrcweir 		aLB_ANSATZ_REL.Show();
440cdf0e10cSrcweir 		nEscDir = SDRCAPT_ESCHORIZONTAL;
441cdf0e10cSrcweir 		break;
442cdf0e10cSrcweir 
443cdf0e10cSrcweir 		case AZ_VERTIKAL:
444cdf0e10cSrcweir 		aLB_ANSATZ_REL.Clear();
445cdf0e10cSrcweir 		nCnt = aStrVertList.GetTokenCount();
446cdf0e10cSrcweir 		for( nIdx=0 ; nIdx<nCnt ; nIdx++ )
447cdf0e10cSrcweir 			aLB_ANSATZ_REL.InsertEntry( aStrVertList.GetToken(nIdx) );
448cdf0e10cSrcweir 		aLB_ANSATZ_REL.SelectEntryPos( nAnsatzRelPos );
449cdf0e10cSrcweir 
450cdf0e10cSrcweir 		aMF_ANSATZ.Hide();
451cdf0e10cSrcweir 		aFT_UM.Hide();
452cdf0e10cSrcweir 		aFT_ANSATZ_REL.Show();
453cdf0e10cSrcweir 		aLB_ANSATZ_REL.Show();
454cdf0e10cSrcweir 		nEscDir = SDRCAPT_ESCVERTICAL;
455cdf0e10cSrcweir 		break;
456cdf0e10cSrcweir 	}
457cdf0e10cSrcweir }
458cdf0e10cSrcweir 
459cdf0e10cSrcweir //------------------------------------------------------------------------
460cdf0e10cSrcweir 
IMPL_LINK_INLINE_START(SvxCaptionTabPage,AnsatzSelectHdl_Impl,ListBox *,pListBox)461cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
462cdf0e10cSrcweir {
463cdf0e10cSrcweir 	if( pListBox == &aLB_ANSATZ )
464cdf0e10cSrcweir 	{
465cdf0e10cSrcweir 		SetupAnsatz_Impl( aLB_ANSATZ.GetSelectEntryPos() );
466cdf0e10cSrcweir 	}
467cdf0e10cSrcweir 	return 0;
468cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(SvxCaptionTabPage,AnsatzSelectHdl_Impl,ListBox *,pListBox)469cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
470cdf0e10cSrcweir 
471cdf0e10cSrcweir //------------------------------------------------------------------------
472cdf0e10cSrcweir 
473cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
474cdf0e10cSrcweir {
475cdf0e10cSrcweir 	if( pListBox == &aLB_ANSATZ_REL )
476cdf0e10cSrcweir 	{
477cdf0e10cSrcweir 		nAnsatzRelPos = aLB_ANSATZ_REL.GetSelectEntryPos();
478cdf0e10cSrcweir 	}
479cdf0e10cSrcweir 	return 0;
480cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(SvxCaptionTabPage,AnsatzRelSelectHdl_Impl,ListBox *,pListBox)481cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
482cdf0e10cSrcweir 
483cdf0e10cSrcweir //------------------------------------------------------------------------
484cdf0e10cSrcweir 
485cdf0e10cSrcweir IMPL_LINK( SvxCaptionTabPage, LineOptHdl_Impl, Button *, pButton )
486cdf0e10cSrcweir {
487cdf0e10cSrcweir 	if( pButton == &aCB_LAENGE )
488cdf0e10cSrcweir 	{
489cdf0e10cSrcweir 		if( aCB_LAENGE.IsChecked() || ! aCB_LAENGE.IsEnabled() )
490cdf0e10cSrcweir 		{
491cdf0e10cSrcweir             aFT_LAENGE.Disable();
492cdf0e10cSrcweir 			aMF_LAENGE.Disable();
493cdf0e10cSrcweir 		}
494cdf0e10cSrcweir 		else
495cdf0e10cSrcweir 		{
496cdf0e10cSrcweir             aFT_LAENGE.Enable();
497cdf0e10cSrcweir 			aMF_LAENGE.Enable();
498cdf0e10cSrcweir 		}
499cdf0e10cSrcweir 	}
500cdf0e10cSrcweir 	return 0;
501cdf0e10cSrcweir }
502cdf0e10cSrcweir 
503cdf0e10cSrcweir //------------------------------------------------------------------------
504cdf0e10cSrcweir 
IMPL_LINK_INLINE_START(SvxCaptionTabPage,SelectCaptTypeHdl_Impl,void *,EMPTYARG)505cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxCaptionTabPage, SelectCaptTypeHdl_Impl, void *, EMPTYARG )
506cdf0e10cSrcweir {
507cdf0e10cSrcweir 	SetupType_Impl( aCT_CAPTTYPE.GetSelectItemId() );
508cdf0e10cSrcweir 	return 0;
509cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(SvxCaptionTabPage,SelectCaptTypeHdl_Impl,void *,EMPTYARG)510cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvxCaptionTabPage, SelectCaptTypeHdl_Impl, void *, EMPTYARG )
511cdf0e10cSrcweir 
512cdf0e10cSrcweir //------------------------------------------------------------------------
513cdf0e10cSrcweir 
514cdf0e10cSrcweir void SvxCaptionTabPage::SetupType_Impl( sal_uInt16 nType )
515cdf0e10cSrcweir {
516cdf0e10cSrcweir 	switch( nType-1 )
517cdf0e10cSrcweir 	{
518cdf0e10cSrcweir 		case SDRCAPT_TYPE1:
519cdf0e10cSrcweir         aFT_WINKEL.Disable();
520cdf0e10cSrcweir 		aLB_WINKEL.Disable();
521cdf0e10cSrcweir         aFT_LAENGE.Disable();
522cdf0e10cSrcweir 		aCB_LAENGE.Disable();
523cdf0e10cSrcweir 		LineOptHdl_Impl( &aCB_LAENGE );
524cdf0e10cSrcweir 		break;
525cdf0e10cSrcweir 
526cdf0e10cSrcweir 		case SDRCAPT_TYPE2:
527cdf0e10cSrcweir         aFT_WINKEL.Enable();
528cdf0e10cSrcweir 		aLB_WINKEL.Enable();
529cdf0e10cSrcweir         aFT_LAENGE.Disable();
530cdf0e10cSrcweir 		aCB_LAENGE.Disable();
531cdf0e10cSrcweir 		LineOptHdl_Impl( &aCB_LAENGE );
532cdf0e10cSrcweir 		break;
533cdf0e10cSrcweir 
534cdf0e10cSrcweir 		case SDRCAPT_TYPE3:
535cdf0e10cSrcweir         aFT_WINKEL.Enable();
536cdf0e10cSrcweir 		aLB_WINKEL.Enable();
537cdf0e10cSrcweir         aFT_LAENGE.Enable();
538cdf0e10cSrcweir 		aCB_LAENGE.Enable();
539cdf0e10cSrcweir 		LineOptHdl_Impl( &aCB_LAENGE );
540cdf0e10cSrcweir 		break;
541cdf0e10cSrcweir 
542cdf0e10cSrcweir 		case SDRCAPT_TYPE4:
543cdf0e10cSrcweir         aFT_WINKEL.Enable();
544cdf0e10cSrcweir 		aLB_WINKEL.Enable();
545cdf0e10cSrcweir         aFT_LAENGE.Enable();
546cdf0e10cSrcweir 		aCB_LAENGE.Enable();
547cdf0e10cSrcweir 		LineOptHdl_Impl( &aCB_LAENGE );
548cdf0e10cSrcweir 		break;
549cdf0e10cSrcweir 	}
550cdf0e10cSrcweir }
551cdf0e10cSrcweir 
552cdf0e10cSrcweir // -----------------------------------------------------------------------
553cdf0e10cSrcweir 
DataChanged(const DataChangedEvent & rDCEvt)554cdf0e10cSrcweir void SvxCaptionTabPage::DataChanged( const DataChangedEvent& rDCEvt )
555cdf0e10cSrcweir {
556cdf0e10cSrcweir     SfxTabPage::DataChanged( rDCEvt );
557cdf0e10cSrcweir 
558cdf0e10cSrcweir 	if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
559cdf0e10cSrcweir             FillValueSet();
560cdf0e10cSrcweir }
561cdf0e10cSrcweir 
562cdf0e10cSrcweir // -----------------------------------------------------------------------
563cdf0e10cSrcweir 
FillValueSet()564cdf0e10cSrcweir void SvxCaptionTabPage::FillValueSet()
565cdf0e10cSrcweir {
566cdf0e10cSrcweir 	bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
567cdf0e10cSrcweir 
568cdf0e10cSrcweir 	Image** ppBitmaps = bHighContrast ? mpBmpCapTypesH : mpBmpCapTypes;
569cdf0e10cSrcweir 	aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_1, *(ppBitmaps[0]) );
570cdf0e10cSrcweir 	aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_2, *(ppBitmaps[1]) );
571cdf0e10cSrcweir 	aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_3, *(ppBitmaps[2]) );
572cdf0e10cSrcweir }
573cdf0e10cSrcweir 
574cdf0e10cSrcweir //========================================================================
575cdf0e10cSrcweir 
576cdf0e10cSrcweir 
SvxCaptionTabDialog(Window * pParent,const SdrView * pSdrView,sal_uInt16 nAnchorTypes)577cdf0e10cSrcweir SvxCaptionTabDialog::SvxCaptionTabDialog(Window* pParent, const SdrView* pSdrView, sal_uInt16 nAnchorTypes)
578cdf0e10cSrcweir  :	SfxTabDialog( pParent, CUI_RES( RID_SVXDLG_CAPTION ) ),
579cdf0e10cSrcweir     pView       ( pSdrView ),
580cdf0e10cSrcweir     nAnchorCtrls(nAnchorTypes)
581cdf0e10cSrcweir {
582cdf0e10cSrcweir 	FreeResource();
583cdf0e10cSrcweir 
584cdf0e10cSrcweir 	DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
585cdf0e10cSrcweir 
586cdf0e10cSrcweir     //different positioning page in Writer
587cdf0e10cSrcweir     if(nAnchorCtrls & 0x00ff )
588cdf0e10cSrcweir     {
589cdf0e10cSrcweir         AddTabPage( RID_SVXPAGE_SWPOSSIZE, SvxSwPosSizeTabPage::Create,
590cdf0e10cSrcweir                                 SvxSwPosSizeTabPage::GetRanges );
591cdf0e10cSrcweir         RemoveTabPage( RID_SVXPAGE_POSITION_SIZE);
592cdf0e10cSrcweir     }
593cdf0e10cSrcweir     else
594cdf0e10cSrcweir     {
595cdf0e10cSrcweir         AddTabPage( RID_SVXPAGE_POSITION_SIZE, SvxPositionSizeTabPage::Create,
596cdf0e10cSrcweir                                 SvxPositionSizeTabPage::GetRanges );
597cdf0e10cSrcweir         RemoveTabPage( RID_SVXPAGE_SWPOSSIZE );
598cdf0e10cSrcweir     }
599cdf0e10cSrcweir     AddTabPage( RID_SVXPAGE_CAPTION, SvxCaptionTabPage::Create,
600cdf0e10cSrcweir 							SvxCaptionTabPage::GetRanges );
601cdf0e10cSrcweir }
602cdf0e10cSrcweir 
603cdf0e10cSrcweir // -----------------------------------------------------------------------
604cdf0e10cSrcweir 
~SvxCaptionTabDialog()605cdf0e10cSrcweir SvxCaptionTabDialog::~SvxCaptionTabDialog()
606cdf0e10cSrcweir {
607cdf0e10cSrcweir }
608cdf0e10cSrcweir 
609cdf0e10cSrcweir // -----------------------------------------------------------------------
610cdf0e10cSrcweir 
PageCreated(sal_uInt16 nId,SfxTabPage & rPage)611cdf0e10cSrcweir void SvxCaptionTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
612cdf0e10cSrcweir {
613cdf0e10cSrcweir 	switch( nId )
614cdf0e10cSrcweir 	{
615cdf0e10cSrcweir 		case RID_SVXPAGE_POSITION_SIZE:
616cdf0e10cSrcweir 			( (SvxPositionSizeTabPage&) rPage ).SetView( pView );
617cdf0e10cSrcweir 			( (SvxPositionSizeTabPage&) rPage ).Construct();
618cdf0e10cSrcweir 			if( nAnchorCtrls & SVX_OBJ_NORESIZE )
619cdf0e10cSrcweir 				( (SvxPositionSizeTabPage&) rPage ).DisableResize();
620cdf0e10cSrcweir 
621cdf0e10cSrcweir 			if( nAnchorCtrls & SVX_OBJ_NOPROTECT )
622cdf0e10cSrcweir 				( (SvxPositionSizeTabPage&) rPage ).DisableProtect();
623cdf0e10cSrcweir 		break;
624cdf0e10cSrcweir         case RID_SVXPAGE_SWPOSSIZE :
625cdf0e10cSrcweir         {
626cdf0e10cSrcweir             SvxSwPosSizeTabPage& rSwPage = static_cast<SvxSwPosSizeTabPage&>(rPage);
627cdf0e10cSrcweir             rSwPage.EnableAnchorTypes(nAnchorCtrls);
628cdf0e10cSrcweir             rSwPage.SetValidateFramePosLink( aValidateLink );
629cdf0e10cSrcweir         }
630cdf0e10cSrcweir         break;
631cdf0e10cSrcweir 
632cdf0e10cSrcweir 		case RID_SVXPAGE_CAPTION:
633cdf0e10cSrcweir 			( (SvxCaptionTabPage&) rPage ).SetView( pView );
634cdf0e10cSrcweir 			( (SvxCaptionTabPage&) rPage ).Construct();
635cdf0e10cSrcweir 		break;
636cdf0e10cSrcweir 	}
637cdf0e10cSrcweir }
638cdf0e10cSrcweir /*-- 05.03.2004 13:54:26---------------------------------------------------
639cdf0e10cSrcweir 
640cdf0e10cSrcweir   -----------------------------------------------------------------------*/
SetValidateFramePosLink(const Link & rLink)641cdf0e10cSrcweir void SvxCaptionTabDialog::SetValidateFramePosLink( const Link& rLink )
642cdf0e10cSrcweir {
643cdf0e10cSrcweir     aValidateLink = rLink;
644cdf0e10cSrcweir }
645cdf0e10cSrcweir 
646cdf0e10cSrcweir 
647