xref: /aoo41x/main/cui/source/tabpages/tabstpge.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 
29cdf0e10cSrcweir #include <sfx2/app.hxx>
30cdf0e10cSrcweir #include <tools/shl.hxx>
31cdf0e10cSrcweir #include <svtools/ruler.hxx>
32cdf0e10cSrcweir #include <svx/dialogs.hrc>
33cdf0e10cSrcweir #include <svx/dialogs.hrc>
34cdf0e10cSrcweir 
35cdf0e10cSrcweir #define _SVX_TABSTPGE_CXX
36cdf0e10cSrcweir 
37cdf0e10cSrcweir #include <cuires.hrc>
38cdf0e10cSrcweir #include "tabstpge.hrc"
39cdf0e10cSrcweir #include <editeng/lrspitem.hxx>
40cdf0e10cSrcweir #include "tabstpge.hxx"
41cdf0e10cSrcweir #include <dialmgr.hxx>
42cdf0e10cSrcweir #include "svx/dlgutil.hxx"
43cdf0e10cSrcweir #include <sfx2/module.hxx>
44cdf0e10cSrcweir #include <svl/cjkoptions.hxx>
45cdf0e10cSrcweir #include <unotools/localedatawrapper.hxx>
46cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
47cdf0e10cSrcweir #include <sfx2/request.hxx> //CHINA001
48cdf0e10cSrcweir #include <svl/intitem.hxx> //add CHINA001
49cdf0e10cSrcweir 
50cdf0e10cSrcweir // class TabWin_Impl -----------------------------------------------------
51cdf0e10cSrcweir 
52cdf0e10cSrcweir class TabWin_Impl : public Window
53cdf0e10cSrcweir {
54cdf0e10cSrcweir private:
55cdf0e10cSrcweir 	sal_uInt16  nTabStyle;
56cdf0e10cSrcweir 
57cdf0e10cSrcweir public:
TabWin_Impl(Window * pParent,const ResId & rId,sal_uInt16 nStyle)58cdf0e10cSrcweir 	TabWin_Impl( Window* pParent, const ResId& rId, sal_uInt16 nStyle ) :
59cdf0e10cSrcweir 		Window( pParent, rId ),
60cdf0e10cSrcweir 		nTabStyle( nStyle ) {}
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 	virtual void    Paint( const Rectangle& rRect );
63cdf0e10cSrcweir };
64cdf0e10cSrcweir 
65cdf0e10cSrcweir // static ----------------------------------------------------------------
66cdf0e10cSrcweir 
67cdf0e10cSrcweir static sal_uInt16 pRanges[] =
68cdf0e10cSrcweir {
69cdf0e10cSrcweir 	SID_ATTR_TABSTOP,
70cdf0e10cSrcweir 	SID_ATTR_TABSTOP_OFFSET,
71cdf0e10cSrcweir 	0
72cdf0e10cSrcweir };
73cdf0e10cSrcweir 
74cdf0e10cSrcweir // C-Funktion ------------------------------------------------------------
75cdf0e10cSrcweir 
FillUpWithDefTabs_Impl(long nDefDist,SvxTabStopItem & rTabs)76cdf0e10cSrcweir void FillUpWithDefTabs_Impl( long nDefDist, SvxTabStopItem& rTabs )
77cdf0e10cSrcweir {
78cdf0e10cSrcweir 	if( rTabs.Count() )
79cdf0e10cSrcweir 		return;
80cdf0e10cSrcweir 	{
81cdf0e10cSrcweir 		SvxTabStop aSwTabStop( nDefDist, SVX_TAB_ADJUST_DEFAULT );
82cdf0e10cSrcweir 		rTabs.Insert( aSwTabStop );
83cdf0e10cSrcweir 	}
84cdf0e10cSrcweir }
85cdf0e10cSrcweir 
86cdf0e10cSrcweir // class TabWin_Impl -----------------------------------------------------
87cdf0e10cSrcweir 
Paint(const Rectangle &)88cdf0e10cSrcweir void TabWin_Impl::Paint( const Rectangle& )
89cdf0e10cSrcweir {
90cdf0e10cSrcweir 	// Tabulatoren malen
91cdf0e10cSrcweir 	Point aPnt;
92cdf0e10cSrcweir 	Size aSize = GetOutputSizePixel();
93cdf0e10cSrcweir 	aPnt.X() = aSize.Width() / 2;
94cdf0e10cSrcweir 	aPnt.Y() = aSize.Height() / 2;
95cdf0e10cSrcweir 	Ruler::DrawTab( this, aPnt, nTabStyle );
96cdf0e10cSrcweir }
97cdf0e10cSrcweir 
98cdf0e10cSrcweir // class SvxTabulatorTabPage ---------------------------------------------
99cdf0e10cSrcweir 
SvxTabulatorTabPage(Window * pParent,const SfxItemSet & rAttr)100cdf0e10cSrcweir SvxTabulatorTabPage::SvxTabulatorTabPage( Window* pParent,
101cdf0e10cSrcweir 										  const SfxItemSet& rAttr ):
102cdf0e10cSrcweir 
103cdf0e10cSrcweir 	SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_TABULATOR ), rAttr ),
104cdf0e10cSrcweir 
105cdf0e10cSrcweir     aTabLabel       ( this, CUI_RES( FL_TABPOS ) ),
106cdf0e10cSrcweir 	aTabBox         ( this, CUI_RES( ED_TABPOS ) ),
107cdf0e10cSrcweir     aTabLabelVert   ( this, CUI_RES( FL_TABPOS_VERT ) ),
108cdf0e10cSrcweir     aTabTypeLabel   ( this, CUI_RES( FL_TABTYPE ) ),
109cdf0e10cSrcweir 	aLeftTab        ( this, CUI_RES( BTN_TABTYPE_LEFT ) ),
110cdf0e10cSrcweir 	aRightTab       ( this, CUI_RES( BTN_TABTYPE_RIGHT ) ),
111cdf0e10cSrcweir 	aCenterTab      ( this, CUI_RES( BTN_TABTYPE_CENTER ) ),
112cdf0e10cSrcweir 	aDezTab         ( this, CUI_RES( BTN_TABTYPE_DECIMAL ) ),
113cdf0e10cSrcweir     pLeftWin        ( new TabWin_Impl( this, CUI_RES( WIN_TABLEFT ), (sal_uInt16)(RULER_TAB_LEFT|WB_HORZ) ) ),
114cdf0e10cSrcweir     pRightWin       ( new TabWin_Impl( this, CUI_RES( WIN_TABRIGHT ), (sal_uInt16)(RULER_TAB_RIGHT|WB_HORZ) ) ),
115cdf0e10cSrcweir     pCenterWin      ( new TabWin_Impl( this, CUI_RES( WIN_TABCENTER ), (sal_uInt16)(RULER_TAB_CENTER|WB_HORZ) ) ),
116cdf0e10cSrcweir     pDezWin         ( new TabWin_Impl( this, CUI_RES( WIN_TABDECIMAL ), (sal_uInt16)(RULER_TAB_DECIMAL|WB_HORZ) ) ),
117cdf0e10cSrcweir     aDezCharLabel   ( this, CUI_RES( FT_TABTYPE_DECCHAR ) ),
118cdf0e10cSrcweir     aDezChar        ( this, CUI_RES( ED_TABTYPE_DECCHAR ) ),
119cdf0e10cSrcweir     aFillLabel      ( this, CUI_RES( FL_FILLCHAR ) ),
120cdf0e10cSrcweir 	aNoFillChar     ( this, CUI_RES( BTN_FILLCHAR_NO ) ),
121cdf0e10cSrcweir 	aFillPoints     ( this, CUI_RES( BTN_FILLCHAR_POINTS ) ),
122cdf0e10cSrcweir 	aFillDashLine   ( this, CUI_RES( BTN_FILLCHAR_DASHLINE ) ),
123cdf0e10cSrcweir 	aFillSolidLine  ( this, CUI_RES( BTN_FILLCHAR_UNDERSCORE ) ),
124cdf0e10cSrcweir 	aFillSpecial    ( this, CUI_RES( BTN_FILLCHAR_OTHER ) ),
125cdf0e10cSrcweir 	aFillChar       ( this, CUI_RES( ED_FILLCHAR_OTHER ) ),
126cdf0e10cSrcweir 	aNewBtn         ( this, CUI_RES( BTN_NEW ) ),
127cdf0e10cSrcweir 	aDelAllBtn      ( this, CUI_RES( BTN_DELALL ) ),
128cdf0e10cSrcweir 	aDelBtn         ( this, CUI_RES( BTN_DEL ) ),
129cdf0e10cSrcweir 
130cdf0e10cSrcweir     aAktTab     ( 0 ),
131cdf0e10cSrcweir     aNewTabs    ( 0, 0, SVX_TAB_ADJUST_LEFT, GetWhich( SID_ATTR_TABSTOP ) ),
132cdf0e10cSrcweir     nDefDist    ( 0 ),
133cdf0e10cSrcweir     eDefUnit( FUNIT_100TH_MM ),
134cdf0e10cSrcweir     bCheck      ( sal_False )
135cdf0e10cSrcweir 
136cdf0e10cSrcweir {
137cdf0e10cSrcweir     SvtCJKOptions aCJKOptions;
138cdf0e10cSrcweir     if(aCJKOptions.IsAsianTypographyEnabled())
139cdf0e10cSrcweir     {
140cdf0e10cSrcweir         aLeftTab  .SetText(String(CUI_RES(   ST_LEFTTAB_ASIAN )));
141cdf0e10cSrcweir         aRightTab .SetText(String(CUI_RES(   ST_RIGHTTAB_ASIAN )));
142cdf0e10cSrcweir     }
143cdf0e10cSrcweir 
144cdf0e10cSrcweir 	aFillChar.SetAccessibleName(String(CUI_RES(   ST_FILLCHAR_OTHER )));
145cdf0e10cSrcweir     // diese Page braucht ExchangeSupport
146cdf0e10cSrcweir 	SetExchangeSupport();
147cdf0e10cSrcweir 
148cdf0e10cSrcweir 
149cdf0e10cSrcweir 	// Metrik einstellen
150cdf0e10cSrcweir 	FieldUnit eFUnit = GetModuleFieldUnit( rAttr );
151cdf0e10cSrcweir 	SetFieldUnit( aTabBox, eFUnit );
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 	// Buttons initialisieren
154cdf0e10cSrcweir 	aNewBtn.SetClickHdl( LINK( this,SvxTabulatorTabPage, NewHdl_Impl ) );
155cdf0e10cSrcweir 	aDelBtn.SetClickHdl( LINK( this,SvxTabulatorTabPage, DelHdl_Impl ) );
156cdf0e10cSrcweir 	aDelAllBtn.SetClickHdl( LINK( this,SvxTabulatorTabPage, DelAllHdl_Impl ) );
157cdf0e10cSrcweir 
158cdf0e10cSrcweir 	Link aLink = LINK( this, SvxTabulatorTabPage, TabTypeCheckHdl_Impl );
159cdf0e10cSrcweir 	aLeftTab.SetClickHdl( aLink );
160cdf0e10cSrcweir 	aRightTab.SetClickHdl( aLink );
161cdf0e10cSrcweir 	aDezTab.SetClickHdl( aLink );
162cdf0e10cSrcweir 	aCenterTab.SetClickHdl( aLink );
163cdf0e10cSrcweir 
164cdf0e10cSrcweir 	aDezChar.SetLoseFocusHdl( LINK( this,  SvxTabulatorTabPage, GetDezCharHdl_Impl ) );
165cdf0e10cSrcweir 	aDezChar.SetMaxTextLen(1);
166cdf0e10cSrcweir 	aDezChar.Disable();
167cdf0e10cSrcweir 	aDezCharLabel.Disable();
168cdf0e10cSrcweir 
169cdf0e10cSrcweir 	aLink = LINK( this, SvxTabulatorTabPage, FillTypeCheckHdl_Impl );
170cdf0e10cSrcweir 	aNoFillChar.SetClickHdl( aLink );
171cdf0e10cSrcweir 	aFillPoints.SetClickHdl( aLink );
172cdf0e10cSrcweir 	aFillDashLine.SetClickHdl( aLink );
173cdf0e10cSrcweir 	aFillSolidLine.SetClickHdl( aLink );
174cdf0e10cSrcweir 	aFillSpecial.SetClickHdl( aLink );
175cdf0e10cSrcweir 	aFillChar.SetLoseFocusHdl( LINK( this,  SvxTabulatorTabPage, GetFillCharHdl_Impl ) );
176cdf0e10cSrcweir 	aFillChar.SetMaxTextLen(1);
177cdf0e10cSrcweir 	aFillChar.Disable();
178cdf0e10cSrcweir 
179cdf0e10cSrcweir 	aTabBox.SetDoubleClickHdl( LINK( this, SvxTabulatorTabPage, SelectHdl_Impl ) );
180cdf0e10cSrcweir 	aTabBox.SetModifyHdl( LINK( this, SvxTabulatorTabPage, ModifyHdl_Impl ) );
181cdf0e10cSrcweir 
182cdf0e10cSrcweir 	aLeftTab.SetAccessibleRelationMemberOf( &aTabTypeLabel );
183cdf0e10cSrcweir 	aRightTab.SetAccessibleRelationMemberOf( &aTabTypeLabel );
184cdf0e10cSrcweir 	aCenterTab.SetAccessibleRelationMemberOf( &aTabTypeLabel );
185cdf0e10cSrcweir 	aDezTab.SetAccessibleRelationMemberOf( &aTabTypeLabel );
186cdf0e10cSrcweir 	aDezCharLabel.SetAccessibleRelationMemberOf( &aTabTypeLabel );
187cdf0e10cSrcweir 	aDezChar.SetAccessibleRelationMemberOf( &aTabTypeLabel );
188cdf0e10cSrcweir 
189cdf0e10cSrcweir 	aNoFillChar.SetAccessibleRelationMemberOf( &aFillLabel );
190cdf0e10cSrcweir 	aFillPoints.SetAccessibleRelationMemberOf( &aFillLabel );
191cdf0e10cSrcweir 	aFillDashLine.SetAccessibleRelationMemberOf( &aFillLabel );
192cdf0e10cSrcweir 	aFillSolidLine.SetAccessibleRelationMemberOf( &aFillLabel );
193cdf0e10cSrcweir 	aFillSpecial.SetAccessibleRelationMemberOf( &aFillLabel );
194cdf0e10cSrcweir 	aFillChar.SetAccessibleRelationMemberOf( &aFillLabel );
195cdf0e10cSrcweir 
196cdf0e10cSrcweir 	aFillChar.SetAccessibleRelationLabeledBy(&aFillSpecial);
197cdf0e10cSrcweir 
198cdf0e10cSrcweir     // das Default-Dezimalzeichen vom System holen
199cdf0e10cSrcweir 	LocaleDataWrapper aLocaleWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() );
200cdf0e10cSrcweir 	aAktTab.GetDecimal() = aLocaleWrapper.getNumDecimalSep().GetChar(0);
201cdf0e10cSrcweir 	FreeResource();
202cdf0e10cSrcweir }
203cdf0e10cSrcweir 
204cdf0e10cSrcweir // -----------------------------------------------------------------------
205cdf0e10cSrcweir 
~SvxTabulatorTabPage()206cdf0e10cSrcweir SvxTabulatorTabPage::~SvxTabulatorTabPage()
207cdf0e10cSrcweir {
208cdf0e10cSrcweir 	delete pLeftWin;
209cdf0e10cSrcweir 	delete pRightWin;
210cdf0e10cSrcweir 	delete pCenterWin;
211cdf0e10cSrcweir 	delete pDezWin;
212cdf0e10cSrcweir }
213cdf0e10cSrcweir 
214cdf0e10cSrcweir // -----------------------------------------------------------------------
215cdf0e10cSrcweir 
GetRanges()216cdf0e10cSrcweir sal_uInt16* SvxTabulatorTabPage::GetRanges()
217cdf0e10cSrcweir {
218cdf0e10cSrcweir 	return pRanges;
219cdf0e10cSrcweir }
220cdf0e10cSrcweir 
221cdf0e10cSrcweir // -----------------------------------------------------------------------
222cdf0e10cSrcweir 
FillItemSet(SfxItemSet & rSet)223cdf0e10cSrcweir sal_Bool SvxTabulatorTabPage::FillItemSet( SfxItemSet& rSet )
224cdf0e10cSrcweir {
225cdf0e10cSrcweir 	sal_Bool bModified = sal_False;
226cdf0e10cSrcweir 
227cdf0e10cSrcweir 	// Hier die Werte aus den Controls eintueten
228cdf0e10cSrcweir 	if ( aNewBtn.IsEnabled() )
229cdf0e10cSrcweir 		NewHdl_Impl( 0 );
230cdf0e10cSrcweir 
231cdf0e10cSrcweir 	// call at first the LoseFocus-Handler
232cdf0e10cSrcweir 	GetDezCharHdl_Impl( &aDezChar );
233cdf0e10cSrcweir 	GetFillCharHdl_Impl( &aFillChar );
234cdf0e10cSrcweir 
235cdf0e10cSrcweir 	FillUpWithDefTabs_Impl( nDefDist, aNewTabs );
236cdf0e10cSrcweir 	SfxItemPool* pPool = rSet.GetPool();
237cdf0e10cSrcweir 	MapUnit eUnit = (MapUnit)pPool->GetMetric( GetWhich( SID_ATTR_TABSTOP ) );
238cdf0e10cSrcweir 	const SfxPoolItem* pOld = GetOldItem( rSet, SID_ATTR_TABSTOP );
239cdf0e10cSrcweir 
240cdf0e10cSrcweir     if ( MAP_100TH_MM != eUnit )
241cdf0e10cSrcweir 	{
242cdf0e10cSrcweir 		// Wenn sich im ItemSet ein LRSpaceItem mit negativen Erstzeileneinzug
243cdf0e10cSrcweir 		// befindet, muss im TabStopItem auf der Position 0 ein DefTab sein.
244cdf0e10cSrcweir 		const SfxPoolItem* pLRSpace;
245cdf0e10cSrcweir 		// wenn nicht im neuen Set, dann vielleicht im alten
246cdf0e10cSrcweir 		if ( SFX_ITEM_SET !=
247cdf0e10cSrcweir 			 rSet.GetItemState( GetWhich( SID_ATTR_LRSPACE ), sal_True, &pLRSpace ) )
248cdf0e10cSrcweir 			pLRSpace = GetOldItem( rSet, SID_ATTR_LRSPACE );
249cdf0e10cSrcweir 
250cdf0e10cSrcweir 		if ( pLRSpace && ( (SvxLRSpaceItem*)pLRSpace )->GetTxtFirstLineOfst() < 0 )
251cdf0e10cSrcweir 		{
252cdf0e10cSrcweir 			SvxTabStop aNull( 0, SVX_TAB_ADJUST_DEFAULT );
253cdf0e10cSrcweir 			aNewTabs.Insert( aNull );
254cdf0e10cSrcweir 		}
255cdf0e10cSrcweir 
256cdf0e10cSrcweir 		SvxTabStopItem aTmp( aNewTabs );
257cdf0e10cSrcweir 		aTmp.Remove( 0, aTmp.Count() );
258cdf0e10cSrcweir 
259cdf0e10cSrcweir 		for ( sal_uInt16 i = 0; i < aNewTabs.Count(); ++i )
260cdf0e10cSrcweir 		{
261cdf0e10cSrcweir 			SvxTabStop aTmpStop = aNewTabs[i];
262cdf0e10cSrcweir 			aTmpStop.GetTabPos() =
263cdf0e10cSrcweir                 LogicToLogic( aTmpStop.GetTabPos(), MAP_100TH_MM, eUnit );
264cdf0e10cSrcweir 			aTmp.Insert( aTmpStop );
265cdf0e10cSrcweir 		}
266cdf0e10cSrcweir 
267cdf0e10cSrcweir 		if ( !pOld || !( *( (SvxTabStopItem*)pOld ) == aTmp ) )
268cdf0e10cSrcweir 		{
269cdf0e10cSrcweir 			rSet.Put( aTmp );
270cdf0e10cSrcweir 			bModified = sal_True;
271cdf0e10cSrcweir 		}
272cdf0e10cSrcweir 	}
273cdf0e10cSrcweir 	else if ( !pOld || !( *( (SvxTabStopItem*)pOld ) == aNewTabs ) )
274cdf0e10cSrcweir 	{
275cdf0e10cSrcweir 		rSet.Put( aNewTabs );
276cdf0e10cSrcweir 		bModified = sal_True;
277cdf0e10cSrcweir 	}
278cdf0e10cSrcweir 	return bModified;
279cdf0e10cSrcweir }
280cdf0e10cSrcweir 
281cdf0e10cSrcweir // -----------------------------------------------------------------------
282cdf0e10cSrcweir 
Create(Window * pParent,const SfxItemSet & rSet)283cdf0e10cSrcweir SfxTabPage* SvxTabulatorTabPage::Create( Window* pParent,
284cdf0e10cSrcweir 										 const SfxItemSet& rSet)
285cdf0e10cSrcweir {
286cdf0e10cSrcweir 	return ( new SvxTabulatorTabPage( pParent, rSet ) );
287cdf0e10cSrcweir }
288cdf0e10cSrcweir 
289cdf0e10cSrcweir // -----------------------------------------------------------------------
290cdf0e10cSrcweir 
Reset(const SfxItemSet & rSet)291cdf0e10cSrcweir void SvxTabulatorTabPage::Reset( const SfxItemSet& rSet )
292cdf0e10cSrcweir {
293cdf0e10cSrcweir 	SfxItemPool* pPool = rSet.GetPool();
294cdf0e10cSrcweir 	MapUnit eUnit = (MapUnit)pPool->GetMetric( GetWhich( SID_ATTR_TABSTOP ) );
295cdf0e10cSrcweir 
296cdf0e10cSrcweir 	// Aktuelle Tabs
297cdf0e10cSrcweir 	const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_TABSTOP );
298cdf0e10cSrcweir 
299cdf0e10cSrcweir 	if ( pItem )
300cdf0e10cSrcweir 	{
301cdf0e10cSrcweir         if ( MAP_100TH_MM != eUnit )
302cdf0e10cSrcweir 		{
303cdf0e10cSrcweir 			SvxTabStopItem aTmp( *( (const SvxTabStopItem*)pItem ) );
304cdf0e10cSrcweir 			aNewTabs.Remove( 0, aNewTabs.Count() );
305cdf0e10cSrcweir 
306cdf0e10cSrcweir 			for ( sal_uInt16 i = 0; i < aTmp.Count(); ++i )
307cdf0e10cSrcweir 			{
308cdf0e10cSrcweir 				SvxTabStop aTmpStop = aTmp[i];
309cdf0e10cSrcweir 				aTmpStop.GetTabPos() =
310cdf0e10cSrcweir                     LogicToLogic( aTmpStop.GetTabPos(), eUnit, MAP_100TH_MM );
311cdf0e10cSrcweir 				aNewTabs.Insert( aTmpStop );
312cdf0e10cSrcweir 			}
313cdf0e10cSrcweir 		}
314cdf0e10cSrcweir 		else
315cdf0e10cSrcweir 			aNewTabs = *( (const SvxTabStopItem*)pItem );
316cdf0e10cSrcweir 	}
317cdf0e10cSrcweir 	else
318cdf0e10cSrcweir 		aNewTabs.Remove( 0, aNewTabs.Count() );
319cdf0e10cSrcweir 
320cdf0e10cSrcweir 	// Default-Tab - Abstand
321cdf0e10cSrcweir 	nDefDist = SVX_TAB_DEFDIST;
322cdf0e10cSrcweir 	pItem = GetItem( rSet, SID_ATTR_TABSTOP_DEFAULTS );
323cdf0e10cSrcweir 
324cdf0e10cSrcweir 	if ( pItem )
325cdf0e10cSrcweir 		nDefDist = LogicToLogic(
326cdf0e10cSrcweir             (long)((const SfxUInt16Item*)pItem)->GetValue(), eUnit, MAP_100TH_MM );
327cdf0e10cSrcweir 
328cdf0e10cSrcweir 	// Aktuell selektierte Tab-Pos
329cdf0e10cSrcweir 	sal_uInt16 nTabPos = 0;
330cdf0e10cSrcweir 	pItem = GetItem( rSet, SID_ATTR_TABSTOP_POS );
331cdf0e10cSrcweir 
332cdf0e10cSrcweir 	if ( pItem )
333cdf0e10cSrcweir 		nTabPos = ( (const SfxUInt16Item*)pItem )->GetValue();
334cdf0e10cSrcweir 
335cdf0e10cSrcweir 	InitTabPos_Impl( nTabPos );
336cdf0e10cSrcweir }
337cdf0e10cSrcweir 
338cdf0e10cSrcweir // -----------------------------------------------------------------------
339cdf0e10cSrcweir 
DisableControls(const sal_uInt16 nFlag)340cdf0e10cSrcweir void SvxTabulatorTabPage::DisableControls( const sal_uInt16 nFlag )
341cdf0e10cSrcweir {
342cdf0e10cSrcweir 	if ( ( TABTYPE_LEFT & nFlag ) == TABTYPE_LEFT )
343cdf0e10cSrcweir 	{
344cdf0e10cSrcweir 		aLeftTab.Disable();
345cdf0e10cSrcweir 		pLeftWin->Disable();
346cdf0e10cSrcweir 	}
347cdf0e10cSrcweir 	if ( ( TABTYPE_RIGHT & nFlag ) == TABTYPE_RIGHT )
348cdf0e10cSrcweir 	{
349cdf0e10cSrcweir 		aRightTab.Disable();
350cdf0e10cSrcweir 		pRightWin->Disable();
351cdf0e10cSrcweir 	}
352cdf0e10cSrcweir 	if ( ( TABTYPE_CENTER & nFlag ) == TABTYPE_CENTER )
353cdf0e10cSrcweir 	{
354cdf0e10cSrcweir 		aCenterTab.Disable();
355cdf0e10cSrcweir 		pCenterWin->Disable();
356cdf0e10cSrcweir 	}
357cdf0e10cSrcweir 	if ( ( TABTYPE_DEZIMAL & nFlag ) == TABTYPE_DEZIMAL )
358cdf0e10cSrcweir 	{
359cdf0e10cSrcweir 		aDezTab.Disable();
360cdf0e10cSrcweir 		pDezWin->Disable();
361cdf0e10cSrcweir 		aDezCharLabel.Disable();
362cdf0e10cSrcweir 		aDezChar.Disable();
363cdf0e10cSrcweir 	}
364cdf0e10cSrcweir 	if ( ( TABTYPE_ALL & nFlag ) == TABTYPE_ALL )
365cdf0e10cSrcweir 		aTabTypeLabel.Disable();
366cdf0e10cSrcweir 	if ( ( TABFILL_NONE & nFlag ) == TABFILL_NONE )
367cdf0e10cSrcweir 		aNoFillChar.Disable();
368cdf0e10cSrcweir 	if ( ( TABFILL_POINT & nFlag ) == TABFILL_POINT )
369cdf0e10cSrcweir 		aFillPoints.Disable();
370cdf0e10cSrcweir 	if ( ( TABFILL_DASHLINE & nFlag ) == TABFILL_DASHLINE )
371cdf0e10cSrcweir 		aFillDashLine.Disable();
372cdf0e10cSrcweir 	if ( ( TABFILL_SOLIDLINE & nFlag ) == TABFILL_SOLIDLINE )
373cdf0e10cSrcweir 		aFillSolidLine.Disable();
374cdf0e10cSrcweir 	if ( ( TABFILL_SPECIAL & nFlag ) == TABFILL_SPECIAL )
375cdf0e10cSrcweir 	{
376cdf0e10cSrcweir 		aFillSpecial.Disable();
377cdf0e10cSrcweir 		aFillChar.Disable();
378cdf0e10cSrcweir 	}
379cdf0e10cSrcweir 	if ( ( TABFILL_ALL & nFlag ) == TABFILL_ALL )
380cdf0e10cSrcweir 		aFillLabel.Disable();
381cdf0e10cSrcweir }
382cdf0e10cSrcweir 
383cdf0e10cSrcweir // -----------------------------------------------------------------------
384cdf0e10cSrcweir 
DeactivatePage(SfxItemSet * _pSet)385cdf0e10cSrcweir int SvxTabulatorTabPage::DeactivatePage( SfxItemSet* _pSet )
386cdf0e10cSrcweir {
387cdf0e10cSrcweir     if ( _pSet )
388cdf0e10cSrcweir         FillItemSet( *_pSet );
389cdf0e10cSrcweir 	return LEAVE_PAGE;
390cdf0e10cSrcweir }
391cdf0e10cSrcweir 
392cdf0e10cSrcweir // -----------------------------------------------------------------------
393cdf0e10cSrcweir 
InitTabPos_Impl(sal_uInt16 nTabPos)394cdf0e10cSrcweir void SvxTabulatorTabPage::InitTabPos_Impl( sal_uInt16 nTabPos )
395cdf0e10cSrcweir {
396cdf0e10cSrcweir 	aTabBox.Clear();
397cdf0e10cSrcweir 
398cdf0e10cSrcweir     long nOffset = 0;
399cdf0e10cSrcweir     const SfxPoolItem* pItem = 0;
400cdf0e10cSrcweir     if ( GetItemSet().GetItemState( SID_ATTR_TABSTOP_OFFSET, sal_True, &pItem )
401cdf0e10cSrcweir             == SFX_ITEM_SET )
402cdf0e10cSrcweir     {
403cdf0e10cSrcweir         nOffset = ( (const SfxInt32Item*)pItem )->GetValue();
404cdf0e10cSrcweir         MapUnit eUnit = (MapUnit)GetItemSet().GetPool()->GetMetric( GetWhich( SID_ATTR_TABSTOP ) );
405cdf0e10cSrcweir         nOffset = OutputDevice::LogicToLogic( nOffset, eUnit, MAP_100TH_MM  );
406cdf0e10cSrcweir     }
407cdf0e10cSrcweir 
408cdf0e10cSrcweir     // Aktuelle TabPos korrigieren und Defaults-Tabs
409cdf0e10cSrcweir 	for ( sal_uInt16 i = 0; i < aNewTabs.Count(); i++ )
410cdf0e10cSrcweir 	{
411cdf0e10cSrcweir 		if ( aNewTabs[i].GetAdjustment() != SVX_TAB_ADJUST_DEFAULT )
412cdf0e10cSrcweir 		{
413cdf0e10cSrcweir             aTabBox.InsertValue( aTabBox.Normalize(
414cdf0e10cSrcweir 				aNewTabs[i].GetTabPos() + nOffset ), eDefUnit );
415cdf0e10cSrcweir 		}
416cdf0e10cSrcweir 		else
417cdf0e10cSrcweir 			aNewTabs.Remove( i-- );
418cdf0e10cSrcweir 	}
419cdf0e10cSrcweir 
420cdf0e10cSrcweir 	// aktuellen Tabulator auswaehlen
421cdf0e10cSrcweir 	const sal_uInt16 nSize = aNewTabs.Count();
422cdf0e10cSrcweir 
423cdf0e10cSrcweir 	if ( nTabPos >= nSize )
424cdf0e10cSrcweir 		nTabPos = 0;
425cdf0e10cSrcweir 
426cdf0e10cSrcweir 	// alle RadioButtons erstmal ausschalten
427cdf0e10cSrcweir 	aLeftTab.Check( sal_True );
428cdf0e10cSrcweir 	aNoFillChar.Check( sal_True );
429cdf0e10cSrcweir 
430cdf0e10cSrcweir 	if( aTabBox.GetEntryCount() > 0 )
431cdf0e10cSrcweir 	{
432cdf0e10cSrcweir 		aTabBox.SetText( aTabBox.GetEntry( nTabPos ) );
433cdf0e10cSrcweir 		aAktTab = aNewTabs[nTabPos];
434cdf0e10cSrcweir 
435cdf0e10cSrcweir 		SetFillAndTabType_Impl();
436cdf0e10cSrcweir 		aNewBtn.Disable();
437cdf0e10cSrcweir 		aDelBtn.Enable();
438cdf0e10cSrcweir 	}
439cdf0e10cSrcweir 	else
440cdf0e10cSrcweir 	{   // kein Eintrag dann ist 0 der Default-Wert
441cdf0e10cSrcweir 		aTabBox.SetValue( 0, eDefUnit );
442cdf0e10cSrcweir 
443cdf0e10cSrcweir 		aNewBtn.Enable();
444cdf0e10cSrcweir 		aDelBtn.Disable();
445cdf0e10cSrcweir 	}
446cdf0e10cSrcweir }
447cdf0e10cSrcweir 
448cdf0e10cSrcweir // -----------------------------------------------------------------------
449cdf0e10cSrcweir 
SetFillAndTabType_Impl()450cdf0e10cSrcweir void SvxTabulatorTabPage::SetFillAndTabType_Impl()
451cdf0e10cSrcweir {
452cdf0e10cSrcweir 	RadioButton* pTypeBtn = 0;
453cdf0e10cSrcweir 	RadioButton* pFillBtn = 0;
454cdf0e10cSrcweir 
455cdf0e10cSrcweir 	aDezChar.Disable();
456cdf0e10cSrcweir 	aDezCharLabel.Disable();
457cdf0e10cSrcweir 
458cdf0e10cSrcweir 	if ( aAktTab.GetAdjustment() == SVX_TAB_ADJUST_LEFT )
459cdf0e10cSrcweir 		pTypeBtn = &aLeftTab;
460cdf0e10cSrcweir 	else if ( aAktTab.GetAdjustment() == SVX_TAB_ADJUST_RIGHT )
461cdf0e10cSrcweir 		pTypeBtn = &aRightTab;
462cdf0e10cSrcweir 	else if ( aAktTab.GetAdjustment() == SVX_TAB_ADJUST_DECIMAL )
463cdf0e10cSrcweir 	{
464cdf0e10cSrcweir 		pTypeBtn = &aDezTab;
465cdf0e10cSrcweir 		aDezChar.Enable();
466cdf0e10cSrcweir 		aDezCharLabel.Enable();
467cdf0e10cSrcweir 		aDezChar.SetText( String( (sal_Unicode)aAktTab.GetDecimal() ) );
468cdf0e10cSrcweir 	}
469cdf0e10cSrcweir 	else if ( aAktTab.GetAdjustment() == SVX_TAB_ADJUST_CENTER )
470cdf0e10cSrcweir 		pTypeBtn = &aCenterTab;
471cdf0e10cSrcweir 
472cdf0e10cSrcweir 	if ( pTypeBtn )
473cdf0e10cSrcweir 		pTypeBtn->Check();
474cdf0e10cSrcweir 
475cdf0e10cSrcweir 	aFillChar.Disable();
476cdf0e10cSrcweir 	aFillChar.SetText( String() );
477cdf0e10cSrcweir 
478cdf0e10cSrcweir 	if ( aAktTab.GetFill() == ' ' )
479cdf0e10cSrcweir 		pFillBtn = &aNoFillChar;
480cdf0e10cSrcweir 	else if ( aAktTab.GetFill() == '-' )
481cdf0e10cSrcweir 		pFillBtn = &aFillDashLine;
482cdf0e10cSrcweir 	else if ( aAktTab.GetFill() == '_' )
483cdf0e10cSrcweir 		pFillBtn = &aFillSolidLine;
484cdf0e10cSrcweir 	else if ( aAktTab.GetFill() == '.' )
485cdf0e10cSrcweir 		pFillBtn = &aFillPoints;
486cdf0e10cSrcweir 	else
487cdf0e10cSrcweir 	{
488cdf0e10cSrcweir 		pFillBtn = &aFillSpecial;
489cdf0e10cSrcweir 		aFillChar.Enable();
490cdf0e10cSrcweir 		aFillChar.SetText( String( (sal_Unicode)aAktTab.GetFill() ) );
491cdf0e10cSrcweir 	}
492cdf0e10cSrcweir 	pFillBtn->Check();
493cdf0e10cSrcweir }
494cdf0e10cSrcweir 
495cdf0e10cSrcweir // -----------------------------------------------------------------------
496cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,NewHdl_Impl,Button *,pBtn)497cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, NewHdl_Impl, Button *, pBtn )
498cdf0e10cSrcweir {
499cdf0e10cSrcweir 	// Einen neuen Hinzufuegen und Selectieren
500cdf0e10cSrcweir 	// Wert aus der Anzeige holen
501cdf0e10cSrcweir 	long nVal = static_cast<long>(aTabBox.Denormalize( aTabBox.GetValue( eDefUnit ) ));
502cdf0e10cSrcweir 
503cdf0e10cSrcweir 	// Wenn der pBtn == 0 && der Value == 0 dann keinen Tab Erzeugen
504cdf0e10cSrcweir 	// weil ueber OK erzeugt
505cdf0e10cSrcweir 	if ( nVal == 0 && pBtn == 0 )
506cdf0e10cSrcweir 		return 0;
507cdf0e10cSrcweir 
508cdf0e10cSrcweir 	long nOffset = 0;
509cdf0e10cSrcweir 	const SfxPoolItem* pItem = 0;
510cdf0e10cSrcweir 
511cdf0e10cSrcweir 	if ( GetItemSet().GetItemState( SID_ATTR_TABSTOP_OFFSET, sal_True, &pItem ) ==
512cdf0e10cSrcweir 		 SFX_ITEM_SET )
513cdf0e10cSrcweir 	{
514cdf0e10cSrcweir 		nOffset = ( (const SfxInt32Item*)pItem )->GetValue();
515cdf0e10cSrcweir         MapUnit eUnit = (MapUnit)GetItemSet().GetPool()->GetMetric( GetWhich( SID_ATTR_TABSTOP ) );
516cdf0e10cSrcweir         nOffset = OutputDevice::LogicToLogic( nOffset, eUnit, MAP_100TH_MM  );
517cdf0e10cSrcweir 	}
518cdf0e10cSrcweir 	const long nReal = nVal - nOffset;
519cdf0e10cSrcweir 	sal_uInt16 nSize = aTabBox.GetEntryCount();
520cdf0e10cSrcweir 
521cdf0e10cSrcweir 	sal_uInt16 i;
522cdf0e10cSrcweir 	for( i = 0; i < nSize; i++ )
523cdf0e10cSrcweir 	{
524cdf0e10cSrcweir 		if ( nReal < aNewTabs[i].GetTabPos() )
525cdf0e10cSrcweir 			break;
526cdf0e10cSrcweir 	}
527cdf0e10cSrcweir 
528cdf0e10cSrcweir 	// ListBox-Eintrag vornehmen
529cdf0e10cSrcweir 	aTabBox.InsertValue( aTabBox.Normalize( nVal ), eDefUnit, i );
530cdf0e10cSrcweir 	aAktTab.GetTabPos() = nReal;
531cdf0e10cSrcweir 	SvxTabAdjust eAdj = SVX_TAB_ADJUST_LEFT;
532cdf0e10cSrcweir 
533cdf0e10cSrcweir 	if ( aRightTab.IsChecked() )
534cdf0e10cSrcweir 		eAdj = SVX_TAB_ADJUST_RIGHT;
535cdf0e10cSrcweir 	else if ( aCenterTab.IsChecked() )
536cdf0e10cSrcweir 		eAdj = SVX_TAB_ADJUST_CENTER;
537cdf0e10cSrcweir 	else if ( aDezTab.IsChecked() )
538cdf0e10cSrcweir 		eAdj = SVX_TAB_ADJUST_DECIMAL;
539cdf0e10cSrcweir 
540cdf0e10cSrcweir 	aAktTab.GetAdjustment() = eAdj;
541cdf0e10cSrcweir 	aNewTabs.Insert( aAktTab );
542cdf0e10cSrcweir 
543cdf0e10cSrcweir 	aNewBtn.Disable();
544cdf0e10cSrcweir 	aDelBtn.Enable();
545cdf0e10cSrcweir 	aTabBox.GrabFocus();
546cdf0e10cSrcweir 
547cdf0e10cSrcweir 	// falls kein RadioButton geclickt wurde,
548cdf0e10cSrcweir 	// muss trotzdem geputtet werden
549cdf0e10cSrcweir 	bCheck |= sal_True;
550cdf0e10cSrcweir     // set the selection into the position Edit
551cdf0e10cSrcweir     aTabBox.SetSelection(Selection(0, aTabBox.GetText().Len()));
552cdf0e10cSrcweir 	return 0;
553cdf0e10cSrcweir }
554cdf0e10cSrcweir 
555cdf0e10cSrcweir // -----------------------------------------------------------------------
556cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,DelHdl_Impl,Button *,EMPTYARG)557cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, DelHdl_Impl, Button *, EMPTYARG )
558cdf0e10cSrcweir {
559cdf0e10cSrcweir 	sal_uInt16 nPos = aTabBox.GetValuePos( aTabBox.GetValue() );
560cdf0e10cSrcweir 
561cdf0e10cSrcweir 	if ( nPos == COMBOBOX_ENTRY_NOTFOUND )
562cdf0e10cSrcweir 		return 0;
563cdf0e10cSrcweir 
564cdf0e10cSrcweir 	if ( aTabBox.GetEntryCount() == 1 )
565cdf0e10cSrcweir 	{
566cdf0e10cSrcweir 		DelAllHdl_Impl( 0 );
567cdf0e10cSrcweir 		return 0;
568cdf0e10cSrcweir 	}
569cdf0e10cSrcweir 
570cdf0e10cSrcweir 	// Tab loeschen
571cdf0e10cSrcweir 	aTabBox.RemoveEntry( nPos );
572cdf0e10cSrcweir 	aNewTabs.Remove( nPos );
573cdf0e10cSrcweir 
574cdf0e10cSrcweir 	// aAktTab neu setzen
575cdf0e10cSrcweir 	const sal_uInt16 nSize = aNewTabs.Count();
576cdf0e10cSrcweir 
577cdf0e10cSrcweir 	if ( nSize > 0 )
578cdf0e10cSrcweir 	{
579cdf0e10cSrcweir 		// Pos korrigieren
580cdf0e10cSrcweir 		nPos = ( ( nSize - 1 ) >= nPos) ? nPos : nPos - 1;
581cdf0e10cSrcweir 		aTabBox.SetValue( aTabBox.GetValue( nPos ) );
582cdf0e10cSrcweir 		aAktTab = aNewTabs[nPos];
583cdf0e10cSrcweir 	}
584cdf0e10cSrcweir 
585cdf0e10cSrcweir 	// Falls keine Tabs Enable Disable Controls
586cdf0e10cSrcweir 	if ( aTabBox.GetEntryCount() == 0 )
587cdf0e10cSrcweir 	{
588cdf0e10cSrcweir 		aDelBtn.Disable();
589cdf0e10cSrcweir 		aNewBtn.Enable();
590cdf0e10cSrcweir 		aTabBox.GrabFocus();
591cdf0e10cSrcweir 	}
592cdf0e10cSrcweir 
593cdf0e10cSrcweir 	// falls kein RadioButton geclickt wurde,
594cdf0e10cSrcweir 	// muss trotzdem geputtet werden
595cdf0e10cSrcweir 	bCheck |= sal_True;
596cdf0e10cSrcweir 	return 0;
597cdf0e10cSrcweir }
598cdf0e10cSrcweir 
599cdf0e10cSrcweir // -----------------------------------------------------------------------
600cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,DelAllHdl_Impl,Button *,EMPTYARG)601cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, DelAllHdl_Impl, Button *, EMPTYARG )
602cdf0e10cSrcweir {
603cdf0e10cSrcweir 	if ( aNewTabs.Count() )
604cdf0e10cSrcweir 	{
605cdf0e10cSrcweir 		aNewTabs = SvxTabStopItem( 0 );
606cdf0e10cSrcweir 		InitTabPos_Impl();
607cdf0e10cSrcweir 
608cdf0e10cSrcweir 		// damit in FillItemSet() geputtet wird
609cdf0e10cSrcweir 		bCheck |= sal_True;
610cdf0e10cSrcweir 	}
611cdf0e10cSrcweir 	return 0;
612cdf0e10cSrcweir }
613cdf0e10cSrcweir 
614cdf0e10cSrcweir // -----------------------------------------------------------------------
615cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,TabTypeCheckHdl_Impl,RadioButton *,pBox)616cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, TabTypeCheckHdl_Impl, RadioButton *, pBox )
617cdf0e10cSrcweir {
618cdf0e10cSrcweir 	bCheck |= sal_True;
619cdf0e10cSrcweir 	SvxTabAdjust eAdj;
620cdf0e10cSrcweir 	aDezChar.Disable();
621cdf0e10cSrcweir 	aDezCharLabel.Disable();
622cdf0e10cSrcweir 	aDezChar.SetText( String() );
623cdf0e10cSrcweir 
624cdf0e10cSrcweir 	if ( pBox == &aLeftTab )
625cdf0e10cSrcweir 		eAdj = SVX_TAB_ADJUST_LEFT;
626cdf0e10cSrcweir 	else if ( pBox == &aRightTab )
627cdf0e10cSrcweir 		eAdj = SVX_TAB_ADJUST_RIGHT;
628cdf0e10cSrcweir 	else if ( pBox == &aCenterTab )
629cdf0e10cSrcweir 		eAdj = SVX_TAB_ADJUST_CENTER;
630cdf0e10cSrcweir 	else
631cdf0e10cSrcweir 	{
632cdf0e10cSrcweir 		eAdj = SVX_TAB_ADJUST_DECIMAL;
633cdf0e10cSrcweir 		aDezChar.Enable();
634cdf0e10cSrcweir 		aDezCharLabel.Enable();
635cdf0e10cSrcweir 		aDezChar.SetText( String( (sal_Unicode)aAktTab.GetDecimal() ) );
636cdf0e10cSrcweir 	}
637cdf0e10cSrcweir 
638cdf0e10cSrcweir 	aAktTab.GetAdjustment() = eAdj;
639cdf0e10cSrcweir 	sal_uInt16 nPos = aTabBox.GetValuePos( aTabBox.GetValue( eDefUnit ), eDefUnit );
640cdf0e10cSrcweir 
641cdf0e10cSrcweir 	if ( nPos != COMBOBOX_ENTRY_NOTFOUND )
642cdf0e10cSrcweir 	{
643cdf0e10cSrcweir 		aNewTabs.Remove( nPos );
644cdf0e10cSrcweir 		aNewTabs.Insert( aAktTab );
645cdf0e10cSrcweir 	}
646cdf0e10cSrcweir 	return 0;
647cdf0e10cSrcweir }
648cdf0e10cSrcweir 
649cdf0e10cSrcweir // -----------------------------------------------------------------------
650cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,FillTypeCheckHdl_Impl,RadioButton *,pBox)651cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, FillTypeCheckHdl_Impl, RadioButton *, pBox )
652cdf0e10cSrcweir {
653cdf0e10cSrcweir 	bCheck |= sal_True;
654cdf0e10cSrcweir 	sal_uInt8 cFill = ' ';
655cdf0e10cSrcweir 	aFillChar.SetText( String() );
656cdf0e10cSrcweir 	aFillChar.Disable();
657cdf0e10cSrcweir 
658cdf0e10cSrcweir 	if( pBox == &aFillSpecial )
659cdf0e10cSrcweir 		aFillChar.Enable();
660cdf0e10cSrcweir 	else if ( pBox == &aNoFillChar )
661cdf0e10cSrcweir 		cFill = ' ';
662cdf0e10cSrcweir 	else if ( pBox == &aFillSolidLine )
663cdf0e10cSrcweir 		cFill = '_';
664cdf0e10cSrcweir 	else if ( pBox == &aFillPoints )
665cdf0e10cSrcweir 		cFill = '.';
666cdf0e10cSrcweir 	else if ( pBox == &aFillDashLine )
667cdf0e10cSrcweir 		cFill = '-';
668cdf0e10cSrcweir 
669cdf0e10cSrcweir 	aAktTab.GetFill() = cFill;
670cdf0e10cSrcweir 	sal_uInt16 nPos = aTabBox.GetValuePos( aTabBox.GetValue( eDefUnit ), eDefUnit );
671cdf0e10cSrcweir 
672cdf0e10cSrcweir 	if ( nPos != COMBOBOX_ENTRY_NOTFOUND )
673cdf0e10cSrcweir 	{
674cdf0e10cSrcweir 		aNewTabs.Remove( nPos );
675cdf0e10cSrcweir 		aNewTabs.Insert( aAktTab );
676cdf0e10cSrcweir 	}
677cdf0e10cSrcweir 	return 0;
678cdf0e10cSrcweir }
679cdf0e10cSrcweir 
680cdf0e10cSrcweir // -----------------------------------------------------------------------
681cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,GetFillCharHdl_Impl,Edit *,pEdit)682cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, GetFillCharHdl_Impl, Edit *, pEdit )
683cdf0e10cSrcweir {
684cdf0e10cSrcweir 	String aChar( pEdit->GetText() );
685cdf0e10cSrcweir 
686cdf0e10cSrcweir 	if ( aChar.Len() > 0 )
687cdf0e10cSrcweir 		aAktTab.GetFill() = aChar.GetChar( 0 );
688cdf0e10cSrcweir 
689cdf0e10cSrcweir 	const sal_uInt16 nPos = aTabBox.GetValuePos( aTabBox.GetValue( eDefUnit ), eDefUnit);
690cdf0e10cSrcweir 	if ( nPos != COMBOBOX_ENTRY_NOTFOUND )
691cdf0e10cSrcweir 	{
692cdf0e10cSrcweir 		aNewTabs.Remove( nPos );
693cdf0e10cSrcweir 		aNewTabs.Insert( aAktTab );
694cdf0e10cSrcweir 	}
695cdf0e10cSrcweir 	return 0;
696cdf0e10cSrcweir }
697cdf0e10cSrcweir 
698cdf0e10cSrcweir // -----------------------------------------------------------------------
699cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,GetDezCharHdl_Impl,Edit *,pEdit)700cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, GetDezCharHdl_Impl, Edit *, pEdit )
701cdf0e10cSrcweir {
702cdf0e10cSrcweir 	String aChar( pEdit->GetText() );
703cdf0e10cSrcweir     if ( aChar.Len() > 0 && ( aChar.GetChar( 0 ) >= ' '))
704cdf0e10cSrcweir 		aAktTab.GetDecimal() = aChar.GetChar( 0 );
705cdf0e10cSrcweir 
706cdf0e10cSrcweir 	sal_uInt16 nPos = aTabBox.GetValuePos( aTabBox.GetValue( eDefUnit ), eDefUnit );
707cdf0e10cSrcweir 	if ( nPos != COMBOBOX_ENTRY_NOTFOUND )
708cdf0e10cSrcweir 	{
709cdf0e10cSrcweir 		aNewTabs.Remove( nPos );
710cdf0e10cSrcweir 		aNewTabs.Insert( aAktTab );
711cdf0e10cSrcweir 	}
712cdf0e10cSrcweir 	return 0;
713cdf0e10cSrcweir }
714cdf0e10cSrcweir 
715cdf0e10cSrcweir // -----------------------------------------------------------------------
716cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,SelectHdl_Impl,MetricBox *,EMPTYARG)717cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, SelectHdl_Impl, MetricBox *, EMPTYARG )
718cdf0e10cSrcweir {
719cdf0e10cSrcweir 	sal_uInt16 nPos = aTabBox.GetValuePos( aTabBox.GetValue( eDefUnit ), eDefUnit );
720cdf0e10cSrcweir 	if ( nPos != COMBOBOX_ENTRY_NOTFOUND )
721cdf0e10cSrcweir 	{
722cdf0e10cSrcweir 		aAktTab = aNewTabs[nPos];
723cdf0e10cSrcweir 		aNewBtn.Disable();
724cdf0e10cSrcweir 		SetFillAndTabType_Impl();
725cdf0e10cSrcweir 	}
726cdf0e10cSrcweir 	return 0;
727cdf0e10cSrcweir }
728cdf0e10cSrcweir 
729cdf0e10cSrcweir // -----------------------------------------------------------------------
730cdf0e10cSrcweir 
IMPL_LINK(SvxTabulatorTabPage,ModifyHdl_Impl,MetricBox *,EMPTYARG)731cdf0e10cSrcweir IMPL_LINK( SvxTabulatorTabPage, ModifyHdl_Impl, MetricBox *, EMPTYARG )
732cdf0e10cSrcweir {
733cdf0e10cSrcweir 	sal_uInt16 nPos = aTabBox.GetValuePos( aTabBox.GetValue( eDefUnit ), eDefUnit );
734cdf0e10cSrcweir 	if ( nPos != COMBOBOX_ENTRY_NOTFOUND )
735cdf0e10cSrcweir 	{
736cdf0e10cSrcweir 		aAktTab = aNewTabs[nPos];
737cdf0e10cSrcweir 		SetFillAndTabType_Impl();
738cdf0e10cSrcweir 
739cdf0e10cSrcweir 		aAktTab.GetTabPos() =
740cdf0e10cSrcweir 			static_cast<long>(aTabBox.Denormalize( aTabBox.GetValue( eDefUnit ) ));
741cdf0e10cSrcweir 
742cdf0e10cSrcweir 		aNewBtn.Disable();
743cdf0e10cSrcweir 		aDelBtn.Enable();
744cdf0e10cSrcweir 		return 0;
745cdf0e10cSrcweir 	}
746cdf0e10cSrcweir 	aNewBtn.Enable();
747cdf0e10cSrcweir 	aDelBtn.Disable();
748cdf0e10cSrcweir 	return 0;
749cdf0e10cSrcweir }
750cdf0e10cSrcweir //add CHINA001 Begin
PageCreated(SfxAllItemSet aSet)751cdf0e10cSrcweir void		SvxTabulatorTabPage::PageCreated(SfxAllItemSet aSet)
752cdf0e10cSrcweir {
753cdf0e10cSrcweir 	SFX_ITEMSET_ARG	(&aSet,pControlItem,SfxUInt16Item,SID_SVXTABULATORTABPAGE_CONTROLFLAGS,sal_False);
754cdf0e10cSrcweir 	if (pControlItem)
755cdf0e10cSrcweir 		DisableControls(pControlItem->GetValue());
756cdf0e10cSrcweir }
757cdf0e10cSrcweir //end of CHINA001
758