xref: /AOO41X/main/sc/source/ui/miscdlgs/crnrdlg.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_sc.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir // System - Includes ---------------------------------------------------------
32*cdf0e10cSrcweir 
33*cdf0e10cSrcweir 
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir // INCLUDE -------------------------------------------------------------------
36*cdf0e10cSrcweir 
37*cdf0e10cSrcweir #include "reffact.hxx"
38*cdf0e10cSrcweir #include "document.hxx"
39*cdf0e10cSrcweir #include "scresid.hxx"
40*cdf0e10cSrcweir #include "globstr.hrc"
41*cdf0e10cSrcweir #include "crnrdlg.hrc"
42*cdf0e10cSrcweir #include "docsh.hxx"
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir #define _CRNRDLG_CXX
45*cdf0e10cSrcweir #include "crnrdlg.hxx"
46*cdf0e10cSrcweir #undef _CRNRDLG_CXX
47*cdf0e10cSrcweir #include <vcl/msgbox.hxx>
48*cdf0e10cSrcweir 
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir //============================================================================
51*cdf0e10cSrcweir 
52*cdf0e10cSrcweir #define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute()
53*cdf0e10cSrcweir #define QUERYBOX(m) QueryBox(this,WinBits(WB_YES_NO|WB_DEF_YES),m).Execute()
54*cdf0e10cSrcweir 
55*cdf0e10cSrcweir const sal_uLong nEntryDataCol = 0;
56*cdf0e10cSrcweir const sal_uLong nEntryDataRow = 1;
57*cdf0e10cSrcweir const sal_uLong nEntryDataDelim = 2;
58*cdf0e10cSrcweir 
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir //============================================================================
61*cdf0e10cSrcweir //	class ScColRowNameRangesDlg
62*cdf0e10cSrcweir 
63*cdf0e10cSrcweir 
64*cdf0e10cSrcweir /*************************************************************************
65*cdf0e10cSrcweir #*	Member:		ScColRowNameRangesDlg						Datum:04.09.97
66*cdf0e10cSrcweir #*------------------------------------------------------------------------
67*cdf0e10cSrcweir #*
68*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
69*cdf0e10cSrcweir #*
70*cdf0e10cSrcweir #*  Funktion:	Konstruktor der Klasse ScColRowNameRangesDlg.
71*cdf0e10cSrcweir #*				Initialisieren der Klassen- Mitglieder,
72*cdf0e10cSrcweir #*				Uebernahme der Range- Angaben und Aufruf
73*cdf0e10cSrcweir #*				der eigentlichen Initialisierungsroutine
74*cdf0e10cSrcweir #*
75*cdf0e10cSrcweir #*  Input:		Sfx- Verknuepfungen
76*cdf0e10cSrcweir #*				Parent- Window
77*cdf0e10cSrcweir #*				SCViewData
78*cdf0e10cSrcweir #*
79*cdf0e10cSrcweir #*	Output:		---
80*cdf0e10cSrcweir #*
81*cdf0e10cSrcweir #************************************************************************/
82*cdf0e10cSrcweir 
83*cdf0e10cSrcweir ScColRowNameRangesDlg::ScColRowNameRangesDlg( SfxBindings* pB,
84*cdf0e10cSrcweir 								SfxChildWindow* pCW,
85*cdf0e10cSrcweir 								Window* pParent,
86*cdf0e10cSrcweir 								ScViewData*	ptrViewData )
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir 	:	ScAnyRefDlg	( pB, pCW, pParent, RID_SCDLG_COLROWNAMERANGES ),
89*cdf0e10cSrcweir 		//
90*cdf0e10cSrcweir         aFlAssign       ( this, ScResId( FL_ASSIGN ) ),
91*cdf0e10cSrcweir 		aLbRange		( this, ScResId( LB_RANGE ) ),
92*cdf0e10cSrcweir 
93*cdf0e10cSrcweir         aEdAssign       ( this, this, ScResId( ED_AREA ) ),
94*cdf0e10cSrcweir 		aRbAssign		( this, ScResId( RB_AREA ), &aEdAssign, this ),
95*cdf0e10cSrcweir 		aBtnColHead		( this, ScResId( BTN_COLHEAD ) ),
96*cdf0e10cSrcweir 		aBtnRowHead		( this, ScResId( BTN_ROWHEAD ) ),
97*cdf0e10cSrcweir 		aFtAssign2		( this, ScResId( FT_DATA_LABEL ) ),
98*cdf0e10cSrcweir         aEdAssign2      ( this, this, ScResId( ED_DATA ) ),
99*cdf0e10cSrcweir 		aRbAssign2		( this, ScResId( RB_DATA ), &aEdAssign2, this ),
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir 		aBtnOk			( this, ScResId( BTN_OK ) ),
102*cdf0e10cSrcweir 		aBtnCancel		( this, ScResId( BTN_CANCEL ) ),
103*cdf0e10cSrcweir 		aBtnHelp		( this, ScResId( BTN_HELP ) ),
104*cdf0e10cSrcweir 		aBtnAdd			( this, ScResId( BTN_ADD ) ),
105*cdf0e10cSrcweir 		aBtnRemove		( this, ScResId( BTN_REMOVE ) ),
106*cdf0e10cSrcweir 
107*cdf0e10cSrcweir 		pViewData		( ptrViewData ),
108*cdf0e10cSrcweir 		pDoc			( ptrViewData->GetDocument() ),
109*cdf0e10cSrcweir 
110*cdf0e10cSrcweir 		pEdActive		( NULL ),
111*cdf0e10cSrcweir 		bDlgLostFocus	( sal_False )
112*cdf0e10cSrcweir {
113*cdf0e10cSrcweir 	xColNameRanges = pDoc->GetColNameRanges()->Clone();
114*cdf0e10cSrcweir 	xRowNameRanges = pDoc->GetRowNameRanges()->Clone();
115*cdf0e10cSrcweir 	Init();
116*cdf0e10cSrcweir 	FreeResource();
117*cdf0e10cSrcweir 
118*cdf0e10cSrcweir 	aRbAssign.SetAccessibleRelationMemberOf(&aEdAssign);
119*cdf0e10cSrcweir 	aRbAssign2.SetAccessibleRelationMemberOf(&aEdAssign);
120*cdf0e10cSrcweir }
121*cdf0e10cSrcweir 
122*cdf0e10cSrcweir 
123*cdf0e10cSrcweir /*************************************************************************
124*cdf0e10cSrcweir #*	Member:		~ScColRowNameRangesDlg						Datum:04.09.97
125*cdf0e10cSrcweir #*------------------------------------------------------------------------
126*cdf0e10cSrcweir #*
127*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
128*cdf0e10cSrcweir #*
129*cdf0e10cSrcweir #*  Funktion:	Destruktor der Klasse
130*cdf0e10cSrcweir #*
131*cdf0e10cSrcweir #*  Input:		---
132*cdf0e10cSrcweir #*
133*cdf0e10cSrcweir #*	Output:		---
134*cdf0e10cSrcweir #*
135*cdf0e10cSrcweir #************************************************************************/
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir __EXPORT ScColRowNameRangesDlg::~ScColRowNameRangesDlg()
138*cdf0e10cSrcweir {
139*cdf0e10cSrcweir }
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir 
142*cdf0e10cSrcweir /*************************************************************************
143*cdf0e10cSrcweir #*	Member:		Init										Datum:04.09.97
144*cdf0e10cSrcweir #*------------------------------------------------------------------------
145*cdf0e10cSrcweir #*
146*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
147*cdf0e10cSrcweir #*
148*cdf0e10cSrcweir #*  Funktion:	Initialisierungs- Routine:
149*cdf0e10cSrcweir #*				Umlenken der Event- Handler und einstellen der
150*cdf0e10cSrcweir #*				Startparameter.
151*cdf0e10cSrcweir #*
152*cdf0e10cSrcweir #*  Input:		---
153*cdf0e10cSrcweir #*
154*cdf0e10cSrcweir #*	Output:		---
155*cdf0e10cSrcweir #*
156*cdf0e10cSrcweir #************************************************************************/
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir void ScColRowNameRangesDlg::Init()
159*cdf0e10cSrcweir {
160*cdf0e10cSrcweir 	SCCOL	nStartCol 	= 0;
161*cdf0e10cSrcweir 	SCROW	nStartRow 	= 0;
162*cdf0e10cSrcweir 	SCTAB	nStartTab 	= 0;
163*cdf0e10cSrcweir 	SCCOL	nEndCol 	= 0;
164*cdf0e10cSrcweir 	SCROW	nEndRow		= 0;
165*cdf0e10cSrcweir 	SCTAB	nEndTab 	= 0;
166*cdf0e10cSrcweir 
167*cdf0e10cSrcweir 	aBtnOk.SetClickHdl		( LINK( this, ScColRowNameRangesDlg, OkBtnHdl ) );
168*cdf0e10cSrcweir 	aBtnCancel.SetClickHdl	( LINK( this, ScColRowNameRangesDlg, CancelBtnHdl ) );
169*cdf0e10cSrcweir 	aBtnAdd.SetClickHdl		( LINK( this, ScColRowNameRangesDlg, AddBtnHdl ) );
170*cdf0e10cSrcweir 	aBtnRemove.SetClickHdl	( LINK( this, ScColRowNameRangesDlg, RemoveBtnHdl ) );
171*cdf0e10cSrcweir 	aLbRange.SetSelectHdl	( LINK( this, ScColRowNameRangesDlg, Range1SelectHdl ) );
172*cdf0e10cSrcweir 	aEdAssign.SetModifyHdl	( LINK( this, ScColRowNameRangesDlg, Range1DataModifyHdl ) );
173*cdf0e10cSrcweir 	aBtnColHead.SetClickHdl	( LINK( this, ScColRowNameRangesDlg, ColClickHdl ) );
174*cdf0e10cSrcweir 	aBtnRowHead.SetClickHdl	( LINK( this, ScColRowNameRangesDlg, RowClickHdl ) );
175*cdf0e10cSrcweir 	aEdAssign2.SetModifyHdl	( LINK( this, ScColRowNameRangesDlg, Range2DataModifyHdl ) );
176*cdf0e10cSrcweir 
177*cdf0e10cSrcweir     Link aLink = LINK( this, ScColRowNameRangesDlg, GetFocusHdl );
178*cdf0e10cSrcweir     aEdAssign.SetGetFocusHdl( aLink );
179*cdf0e10cSrcweir     aRbAssign.SetGetFocusHdl( aLink );
180*cdf0e10cSrcweir     aEdAssign2.SetGetFocusHdl( aLink );
181*cdf0e10cSrcweir     aRbAssign2.SetGetFocusHdl( aLink );
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir     aLink = LINK( this, ScColRowNameRangesDlg, LoseFocusHdl );
184*cdf0e10cSrcweir     aEdAssign.SetLoseFocusHdl( aLink );
185*cdf0e10cSrcweir     aRbAssign.SetLoseFocusHdl( aLink );
186*cdf0e10cSrcweir     aEdAssign2.SetLoseFocusHdl( aLink );
187*cdf0e10cSrcweir     aRbAssign2.SetLoseFocusHdl( aLink );
188*cdf0e10cSrcweir 
189*cdf0e10cSrcweir 	pEdActive = &aEdAssign;
190*cdf0e10cSrcweir 
191*cdf0e10cSrcweir 	UpdateNames();
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir 	if ( pViewData && pDoc )
194*cdf0e10cSrcweir 	{
195*cdf0e10cSrcweir 		pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab,
196*cdf0e10cSrcweir 								  nEndCol,	 nEndRow,  nEndTab );
197*cdf0e10cSrcweir 		SetColRowData( ScRange( ScAddress( nStartCol, nStartRow, nStartTab ),
198*cdf0e10cSrcweir 							  ScAddress( nEndCol,   nEndRow,   nEndTab ) ) );
199*cdf0e10cSrcweir 	}
200*cdf0e10cSrcweir 	else
201*cdf0e10cSrcweir 	{
202*cdf0e10cSrcweir 		aBtnColHead.Check( sal_True );
203*cdf0e10cSrcweir 		aBtnRowHead.Check( sal_False );
204*cdf0e10cSrcweir 		aEdAssign.SetText( EMPTY_STRING );
205*cdf0e10cSrcweir 		aEdAssign2.SetText( EMPTY_STRING );
206*cdf0e10cSrcweir 	}
207*cdf0e10cSrcweir 
208*cdf0e10cSrcweir     aLbRange.SetBorderStyle( WINDOW_BORDER_MONO );
209*cdf0e10cSrcweir     aBtnColHead.Enable();
210*cdf0e10cSrcweir 	aBtnRowHead.Enable();
211*cdf0e10cSrcweir 	aEdAssign.Enable();
212*cdf0e10cSrcweir 	aEdAssign.GrabFocus();
213*cdf0e10cSrcweir     aRbAssign.Enable();
214*cdf0e10cSrcweir 	//@BugID 54702 Enablen/Disablen nur noch in Basisklasse
215*cdf0e10cSrcweir 	//SFX_APPWINDOW->Enable();		// Ref-Feld hat Focus
216*cdf0e10cSrcweir 
217*cdf0e10cSrcweir 	Range1SelectHdl( 0 );
218*cdf0e10cSrcweir }
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir 
221*cdf0e10cSrcweir /*************************************************************************
222*cdf0e10cSrcweir #*	Member:		SetColRowData								Datum:04.09.97
223*cdf0e10cSrcweir #*------------------------------------------------------------------------
224*cdf0e10cSrcweir #*
225*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
226*cdf0e10cSrcweir #*
227*cdf0e10cSrcweir #*  Funktion:	zugehoerigen Datenbereich eines Beschriftungsbereiches
228*cdf0e10cSrcweir #*				auf default Werte setzen und beide Referenz-Edit-Felder
229*cdf0e10cSrcweir #*				fuellen.
230*cdf0e10cSrcweir #*
231*cdf0e10cSrcweir #*  Input:		Einstellbereich fuer Labels
232*cdf0e10cSrcweir #*
233*cdf0e10cSrcweir #*	Output:		---
234*cdf0e10cSrcweir #*
235*cdf0e10cSrcweir #************************************************************************/
236*cdf0e10cSrcweir 
237*cdf0e10cSrcweir void ScColRowNameRangesDlg::SetColRowData( const ScRange& rLabelRange,sal_Bool bRef)
238*cdf0e10cSrcweir {
239*cdf0e10cSrcweir 	theCurData = theCurArea = rLabelRange;
240*cdf0e10cSrcweir 	sal_Bool bValid = sal_True;
241*cdf0e10cSrcweir 	SCCOL nCol1 = theCurArea.aStart.Col();
242*cdf0e10cSrcweir 	SCCOL nCol2 = theCurArea.aEnd.Col();
243*cdf0e10cSrcweir 	SCROW nRow1 = theCurArea.aStart.Row();
244*cdf0e10cSrcweir 	SCROW nRow2 = theCurArea.aEnd.Row();
245*cdf0e10cSrcweir 	if ( (static_cast<SCCOLROW>(nCol2 - nCol1) >= nRow2 - nRow1) || (nCol1 == 0 && nCol2 == MAXCOL) )
246*cdf0e10cSrcweir 	{	// Spaltenkoepfe und Grenzfall gesamte Tabelle
247*cdf0e10cSrcweir 		aBtnColHead.Check( sal_True );
248*cdf0e10cSrcweir 		aBtnRowHead.Check( sal_False );
249*cdf0e10cSrcweir 		if ( nRow2 == MAXROW  )
250*cdf0e10cSrcweir 		{
251*cdf0e10cSrcweir 			if ( nRow1 == 0 )
252*cdf0e10cSrcweir 				bValid = sal_False;		// Grenzfall gesamte Tabelle
253*cdf0e10cSrcweir 			else
254*cdf0e10cSrcweir 			{	// Head unten, Data oben
255*cdf0e10cSrcweir 				theCurData.aStart.SetRow( 0 );
256*cdf0e10cSrcweir 				theCurData.aEnd.SetRow( nRow1 - 1 );
257*cdf0e10cSrcweir 			}
258*cdf0e10cSrcweir 		}
259*cdf0e10cSrcweir 		else
260*cdf0e10cSrcweir 		{	// Head oben, Data unten
261*cdf0e10cSrcweir 			theCurData.aStart.SetRow( nRow2 + 1 );
262*cdf0e10cSrcweir 			theCurData.aEnd.SetRow( MAXROW );
263*cdf0e10cSrcweir 		}
264*cdf0e10cSrcweir 	}
265*cdf0e10cSrcweir 	else
266*cdf0e10cSrcweir 	{	// Zeilenkoepfe
267*cdf0e10cSrcweir 		aBtnRowHead.Check( sal_True );
268*cdf0e10cSrcweir 		aBtnColHead.Check( sal_False );
269*cdf0e10cSrcweir 		if ( nCol2 == MAXCOL )
270*cdf0e10cSrcweir 		{	// Head rechts, Data links
271*cdf0e10cSrcweir 			theCurData.aStart.SetCol( 0 );
272*cdf0e10cSrcweir 			theCurData.aEnd.SetCol( nCol2 - 1 );
273*cdf0e10cSrcweir 		}
274*cdf0e10cSrcweir 		else
275*cdf0e10cSrcweir 		{	// Head links, Data rechts
276*cdf0e10cSrcweir 			theCurData.aStart.SetCol( nCol2 + 1 );
277*cdf0e10cSrcweir 			theCurData.aEnd.SetCol( MAXCOL );
278*cdf0e10cSrcweir 		}
279*cdf0e10cSrcweir 	}
280*cdf0e10cSrcweir 	if ( bValid )
281*cdf0e10cSrcweir 	{
282*cdf0e10cSrcweir         const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
283*cdf0e10cSrcweir 		String aStr;
284*cdf0e10cSrcweir 		theCurArea.Format( aStr, SCR_ABS_3D, pDoc, eConv );
285*cdf0e10cSrcweir 
286*cdf0e10cSrcweir 		if(bRef)
287*cdf0e10cSrcweir 			aEdAssign.SetRefString( aStr );
288*cdf0e10cSrcweir 		else
289*cdf0e10cSrcweir 			aEdAssign.SetText( aStr );
290*cdf0e10cSrcweir 
291*cdf0e10cSrcweir 		aEdAssign.SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) );
292*cdf0e10cSrcweir 		theCurData.Format( aStr, SCR_ABS_3D, pDoc, eConv );
293*cdf0e10cSrcweir 
294*cdf0e10cSrcweir 		if(bRef)
295*cdf0e10cSrcweir 			aEdAssign2.SetRefString( aStr );
296*cdf0e10cSrcweir 		else
297*cdf0e10cSrcweir 			aEdAssign2.SetText( aStr );
298*cdf0e10cSrcweir 	}
299*cdf0e10cSrcweir 	else
300*cdf0e10cSrcweir 	{
301*cdf0e10cSrcweir 		theCurData = theCurArea = ScRange();
302*cdf0e10cSrcweir 
303*cdf0e10cSrcweir 		if(bRef)
304*cdf0e10cSrcweir 		{
305*cdf0e10cSrcweir 			aEdAssign.SetRefString( EMPTY_STRING );
306*cdf0e10cSrcweir 			aEdAssign2.SetRefString( EMPTY_STRING );
307*cdf0e10cSrcweir 		}
308*cdf0e10cSrcweir 		else
309*cdf0e10cSrcweir 		{
310*cdf0e10cSrcweir 			aEdAssign.SetText( EMPTY_STRING );
311*cdf0e10cSrcweir 			aEdAssign2.SetText( EMPTY_STRING );
312*cdf0e10cSrcweir 		}
313*cdf0e10cSrcweir 
314*cdf0e10cSrcweir 		aBtnColHead.Disable();
315*cdf0e10cSrcweir 		aBtnRowHead.Disable();
316*cdf0e10cSrcweir 		aEdAssign2.Disable();
317*cdf0e10cSrcweir         aRbAssign2.Disable();
318*cdf0e10cSrcweir 	}
319*cdf0e10cSrcweir }
320*cdf0e10cSrcweir 
321*cdf0e10cSrcweir 
322*cdf0e10cSrcweir /*************************************************************************
323*cdf0e10cSrcweir #*	Member:		AdjustColRowData							Datum:04.09.97
324*cdf0e10cSrcweir #*------------------------------------------------------------------------
325*cdf0e10cSrcweir #*
326*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
327*cdf0e10cSrcweir #*
328*cdf0e10cSrcweir #*  Funktion:	zugehoerigen Datenbereich eines Beschriftungsbereiches
329*cdf0e10cSrcweir #*				anpassen und Data-Referenz-Edit-Feld fuellen.
330*cdf0e10cSrcweir #*
331*cdf0e10cSrcweir #*  Input:		Bereich fuer Labels
332*cdf0e10cSrcweir #*
333*cdf0e10cSrcweir #*	Output:		---
334*cdf0e10cSrcweir #*
335*cdf0e10cSrcweir #************************************************************************/
336*cdf0e10cSrcweir 
337*cdf0e10cSrcweir void ScColRowNameRangesDlg::AdjustColRowData( const ScRange& rDataRange,sal_Bool bRef)
338*cdf0e10cSrcweir {
339*cdf0e10cSrcweir 	theCurData = rDataRange;
340*cdf0e10cSrcweir 	if ( aBtnColHead.IsChecked() )
341*cdf0e10cSrcweir 	{	// Datenbereich gleiche Spalten wie Koepfe
342*cdf0e10cSrcweir 		theCurData.aStart.SetCol( theCurArea.aStart.Col() );
343*cdf0e10cSrcweir 		theCurData.aEnd.SetCol( theCurArea.aEnd.Col() );
344*cdf0e10cSrcweir 		if ( theCurData.Intersects( theCurArea ) )
345*cdf0e10cSrcweir 		{
346*cdf0e10cSrcweir 			SCROW nRow1 = theCurArea.aStart.Row();
347*cdf0e10cSrcweir 			SCROW nRow2 = theCurArea.aEnd.Row();
348*cdf0e10cSrcweir 			if ( nRow1 > 0
349*cdf0e10cSrcweir 			  && (theCurData.aEnd.Row() < nRow2 || nRow2 == MAXROW) )
350*cdf0e10cSrcweir 			{	// Data oben
351*cdf0e10cSrcweir 				theCurData.aEnd.SetRow( nRow1 - 1 );
352*cdf0e10cSrcweir 				if ( theCurData.aStart.Row() > theCurData.aEnd.Row() )
353*cdf0e10cSrcweir 					theCurData.aStart.SetRow( theCurData.aEnd.Row() );
354*cdf0e10cSrcweir 			}
355*cdf0e10cSrcweir 			else
356*cdf0e10cSrcweir 			{	// Data unten
357*cdf0e10cSrcweir 				theCurData.aStart.SetRow( nRow2 + 1 );
358*cdf0e10cSrcweir 				if ( theCurData.aStart.Row() > theCurData.aEnd.Row() )
359*cdf0e10cSrcweir 					theCurData.aEnd.SetRow( theCurData.aStart.Row() );
360*cdf0e10cSrcweir 			}
361*cdf0e10cSrcweir 		}
362*cdf0e10cSrcweir 	}
363*cdf0e10cSrcweir 	else
364*cdf0e10cSrcweir 	{	// Datenbereich gleiche Zeilen wie Koepfe
365*cdf0e10cSrcweir 		theCurData.aStart.SetRow( theCurArea.aStart.Row() );
366*cdf0e10cSrcweir 		theCurData.aEnd.SetRow( theCurArea.aEnd.Row() );
367*cdf0e10cSrcweir 		if ( theCurData.Intersects( theCurArea ) )
368*cdf0e10cSrcweir 		{
369*cdf0e10cSrcweir 			SCCOL nCol1 = theCurArea.aStart.Col();
370*cdf0e10cSrcweir 			SCCOL nCol2 = theCurArea.aEnd.Col();
371*cdf0e10cSrcweir 			if ( nCol1 > 0
372*cdf0e10cSrcweir 			  && (theCurData.aEnd.Col() < nCol2 || nCol2 == MAXCOL) )
373*cdf0e10cSrcweir 			{	// Data links
374*cdf0e10cSrcweir 				theCurData.aEnd.SetCol( nCol1 - 1 );
375*cdf0e10cSrcweir 				if ( theCurData.aStart.Col() > theCurData.aEnd.Col() )
376*cdf0e10cSrcweir 					theCurData.aStart.SetCol( theCurData.aEnd.Col() );
377*cdf0e10cSrcweir 			}
378*cdf0e10cSrcweir 			else
379*cdf0e10cSrcweir 			{	// Data rechts
380*cdf0e10cSrcweir 				theCurData.aStart.SetCol( nCol2 + 1 );
381*cdf0e10cSrcweir 				if ( theCurData.aStart.Col() > theCurData.aEnd.Col() )
382*cdf0e10cSrcweir 					theCurData.aEnd.SetCol( theCurData.aStart.Col() );
383*cdf0e10cSrcweir 			}
384*cdf0e10cSrcweir 		}
385*cdf0e10cSrcweir 	}
386*cdf0e10cSrcweir 	String aStr;
387*cdf0e10cSrcweir 	theCurData.Format( aStr, SCR_ABS_3D, pDoc, pDoc->GetAddressConvention() );
388*cdf0e10cSrcweir 
389*cdf0e10cSrcweir 	if(bRef)
390*cdf0e10cSrcweir 		aEdAssign2.SetRefString( aStr );
391*cdf0e10cSrcweir 	else
392*cdf0e10cSrcweir 		aEdAssign2.SetText( aStr );
393*cdf0e10cSrcweir 
394*cdf0e10cSrcweir 	aEdAssign2.SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) );
395*cdf0e10cSrcweir }
396*cdf0e10cSrcweir 
397*cdf0e10cSrcweir 
398*cdf0e10cSrcweir /*************************************************************************
399*cdf0e10cSrcweir #*	Member:		SetReference								Datum:04.09.97
400*cdf0e10cSrcweir #*------------------------------------------------------------------------
401*cdf0e10cSrcweir #*
402*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
403*cdf0e10cSrcweir #*
404*cdf0e10cSrcweir #*  Funktion:	Uebergabe eines mit der Maus selektierten Tabellen-
405*cdf0e10cSrcweir #*				bereiches, der dann als neue Selektion im Referenz-
406*cdf0e10cSrcweir #*				Fenster angezeigt wird.
407*cdf0e10cSrcweir #*
408*cdf0e10cSrcweir #*  Input:		Bereich fuer Labels
409*cdf0e10cSrcweir #*				Dokumentklasse
410*cdf0e10cSrcweir #*
411*cdf0e10cSrcweir #*	Output:		---
412*cdf0e10cSrcweir #*
413*cdf0e10cSrcweir #************************************************************************/
414*cdf0e10cSrcweir 
415*cdf0e10cSrcweir void ScColRowNameRangesDlg::SetReference( const ScRange& rRef, ScDocument* /* pDoc */ )
416*cdf0e10cSrcweir {
417*cdf0e10cSrcweir 	if ( pEdActive )
418*cdf0e10cSrcweir 	{
419*cdf0e10cSrcweir 		if ( rRef.aStart != rRef.aEnd )
420*cdf0e10cSrcweir 			RefInputStart( pEdActive );
421*cdf0e10cSrcweir 
422*cdf0e10cSrcweir 		String aRefStr;
423*cdf0e10cSrcweir 		if ( pEdActive == &aEdAssign )
424*cdf0e10cSrcweir 			SetColRowData( rRef, sal_True );
425*cdf0e10cSrcweir 		else
426*cdf0e10cSrcweir 			AdjustColRowData( rRef, sal_True );
427*cdf0e10cSrcweir 		aBtnColHead.Enable();
428*cdf0e10cSrcweir 		aBtnRowHead.Enable();
429*cdf0e10cSrcweir 		aBtnAdd.Enable();
430*cdf0e10cSrcweir 		aBtnRemove.Disable();
431*cdf0e10cSrcweir 	}
432*cdf0e10cSrcweir }
433*cdf0e10cSrcweir 
434*cdf0e10cSrcweir 
435*cdf0e10cSrcweir /*************************************************************************
436*cdf0e10cSrcweir #*	Member:		Close										Datum:04.09.97
437*cdf0e10cSrcweir #*------------------------------------------------------------------------
438*cdf0e10cSrcweir #*
439*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
440*cdf0e10cSrcweir #*
441*cdf0e10cSrcweir #*  Funktion:	Schliessen des Fensters
442*cdf0e10cSrcweir #*
443*cdf0e10cSrcweir #*  Input:		---
444*cdf0e10cSrcweir #*
445*cdf0e10cSrcweir #*	Output:		---
446*cdf0e10cSrcweir #*
447*cdf0e10cSrcweir #************************************************************************/
448*cdf0e10cSrcweir 
449*cdf0e10cSrcweir sal_Bool __EXPORT ScColRowNameRangesDlg::Close()
450*cdf0e10cSrcweir {
451*cdf0e10cSrcweir 	return DoClose( ScColRowNameRangesDlgWrapper::GetChildWindowId() );
452*cdf0e10cSrcweir }
453*cdf0e10cSrcweir 
454*cdf0e10cSrcweir 
455*cdf0e10cSrcweir /*************************************************************************
456*cdf0e10cSrcweir #*	Member:		SetActive									Datum:04.09.97
457*cdf0e10cSrcweir #*------------------------------------------------------------------------
458*cdf0e10cSrcweir #*
459*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
460*cdf0e10cSrcweir #*
461*cdf0e10cSrcweir #*  Funktion:	Aktivieren des Fensters
462*cdf0e10cSrcweir #*
463*cdf0e10cSrcweir #*  Input:		---
464*cdf0e10cSrcweir #*
465*cdf0e10cSrcweir #*	Output:		---
466*cdf0e10cSrcweir #*
467*cdf0e10cSrcweir #************************************************************************/
468*cdf0e10cSrcweir 
469*cdf0e10cSrcweir void ScColRowNameRangesDlg::SetActive()
470*cdf0e10cSrcweir {
471*cdf0e10cSrcweir     if ( bDlgLostFocus )
472*cdf0e10cSrcweir     {
473*cdf0e10cSrcweir         bDlgLostFocus = sal_False;
474*cdf0e10cSrcweir         if( pEdActive )
475*cdf0e10cSrcweir             pEdActive->GrabFocus();
476*cdf0e10cSrcweir     }
477*cdf0e10cSrcweir     else
478*cdf0e10cSrcweir         GrabFocus();
479*cdf0e10cSrcweir 
480*cdf0e10cSrcweir     if( pEdActive == &aEdAssign )
481*cdf0e10cSrcweir         Range1DataModifyHdl( 0 );
482*cdf0e10cSrcweir     else if( pEdActive == &aEdAssign2 )
483*cdf0e10cSrcweir         Range2DataModifyHdl( 0 );
484*cdf0e10cSrcweir 
485*cdf0e10cSrcweir     RefInputDone();
486*cdf0e10cSrcweir }
487*cdf0e10cSrcweir 
488*cdf0e10cSrcweir 
489*cdf0e10cSrcweir /*************************************************************************
490*cdf0e10cSrcweir #*	Member:		UpdateNames									Datum:04.09.97
491*cdf0e10cSrcweir #*------------------------------------------------------------------------
492*cdf0e10cSrcweir #*
493*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
494*cdf0e10cSrcweir #*
495*cdf0e10cSrcweir #*  Funktion:	Aktualisieren der Namen
496*cdf0e10cSrcweir #*
497*cdf0e10cSrcweir #*  Input:		---
498*cdf0e10cSrcweir #*
499*cdf0e10cSrcweir #*	Output:		---
500*cdf0e10cSrcweir #*
501*cdf0e10cSrcweir #************************************************************************/
502*cdf0e10cSrcweir 
503*cdf0e10cSrcweir void ScColRowNameRangesDlg::UpdateNames()
504*cdf0e10cSrcweir {
505*cdf0e10cSrcweir 	aLbRange.SetUpdateMode( sal_False );
506*cdf0e10cSrcweir 	//-----------------------------------------------------------
507*cdf0e10cSrcweir 	aLbRange.Clear();
508*cdf0e10cSrcweir     aRangeMap.clear();
509*cdf0e10cSrcweir 	aEdAssign.SetText( EMPTY_STRING );
510*cdf0e10cSrcweir 
511*cdf0e10cSrcweir 	sal_uLong nCount, j;
512*cdf0e10cSrcweir 	sal_uInt16 nPos; //@008 Hilfsvariable q eingefuegt
513*cdf0e10cSrcweir 
514*cdf0e10cSrcweir 	SCCOL nCol1;	//@008 04.09.97
515*cdf0e10cSrcweir 	SCROW nRow1;	//Erweiterung fuer Bereichsnamen
516*cdf0e10cSrcweir 	SCTAB nTab1;
517*cdf0e10cSrcweir 	SCCOL nCol2;
518*cdf0e10cSrcweir 	SCROW nRow2;
519*cdf0e10cSrcweir 	SCTAB nTab2;
520*cdf0e10cSrcweir 	String rString;
521*cdf0e10cSrcweir 	String strShow;
522*cdf0e10cSrcweir     const ScAddress::Details aDetails(pDoc->GetAddressConvention());
523*cdf0e10cSrcweir 
524*cdf0e10cSrcweir 	String aString;
525*cdf0e10cSrcweir 	String strDelim = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( " --- " ));
526*cdf0e10cSrcweir 	aString = strDelim;
527*cdf0e10cSrcweir 	aString += ScGlobal::GetRscString( STR_COLUMN );
528*cdf0e10cSrcweir 	aString += strDelim;
529*cdf0e10cSrcweir 	nPos = aLbRange.InsertEntry( aString );
530*cdf0e10cSrcweir 	aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim );
531*cdf0e10cSrcweir 	if ( (nCount = xColNameRanges->Count()) > 0 )
532*cdf0e10cSrcweir 	{
533*cdf0e10cSrcweir 		ScRangePair** ppSortArray = xColNameRanges->CreateNameSortedArray(
534*cdf0e10cSrcweir 			nCount, pDoc );
535*cdf0e10cSrcweir 		for ( j=0; j < nCount; j++ )
536*cdf0e10cSrcweir 		{
537*cdf0e10cSrcweir             const ScRange aRange(ppSortArray[j]->GetRange(0));
538*cdf0e10cSrcweir 			aRange.Format( aString, SCR_ABS_3D, pDoc, aDetails );
539*cdf0e10cSrcweir 
540*cdf0e10cSrcweir 			//@008 Hole Bereichsparameter aus Dok
541*cdf0e10cSrcweir 			ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1,
542*cdf0e10cSrcweir 											nCol2, nRow2, nTab2 );
543*cdf0e10cSrcweir 			SCCOL q=nCol1+3;
544*cdf0e10cSrcweir 			if(q>nCol2) q=nCol2;
545*cdf0e10cSrcweir 			//@008 Baue String zusammen
546*cdf0e10cSrcweir 			strShow.AssignAscii(RTL_CONSTASCII_STRINGPARAM(" ["));
547*cdf0e10cSrcweir 			if(pDoc!=NULL)
548*cdf0e10cSrcweir 			{
549*cdf0e10cSrcweir 				pDoc->GetString(nCol1, nRow1, nTab1,rString);
550*cdf0e10cSrcweir 				strShow	+=rString;
551*cdf0e10cSrcweir 				for(SCCOL i=nCol1+1;i<=q;i++)
552*cdf0e10cSrcweir 				{
553*cdf0e10cSrcweir 					strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
554*cdf0e10cSrcweir 					pDoc->GetString(i, nRow1, nTab1,rString);
555*cdf0e10cSrcweir 					strShow	+= rString;
556*cdf0e10cSrcweir 				}
557*cdf0e10cSrcweir 			}
558*cdf0e10cSrcweir 			if(q<nCol2) // Zu lang? Ergaenzen um ",..."
559*cdf0e10cSrcweir 			{
560*cdf0e10cSrcweir 				strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ..."));
561*cdf0e10cSrcweir 			}
562*cdf0e10cSrcweir 			strShow += ']';
563*cdf0e10cSrcweir 
564*cdf0e10cSrcweir 			//@008 String einfuegen in Listbox
565*cdf0e10cSrcweir 			String aInsStr = aString;
566*cdf0e10cSrcweir 			aInsStr += strShow;
567*cdf0e10cSrcweir 			nPos = aLbRange.InsertEntry( aInsStr );
568*cdf0e10cSrcweir             aRangeMap.insert( NameRangeMap::value_type(aInsStr, aRange) );
569*cdf0e10cSrcweir 			aLbRange.SetEntryData( nPos, (void*)nEntryDataCol );
570*cdf0e10cSrcweir 		}
571*cdf0e10cSrcweir 		delete [] ppSortArray;
572*cdf0e10cSrcweir 	}
573*cdf0e10cSrcweir 	aString = strDelim;
574*cdf0e10cSrcweir 	aString += ScGlobal::GetRscString( STR_ROW );
575*cdf0e10cSrcweir 	aString += strDelim;
576*cdf0e10cSrcweir 	nPos = aLbRange.InsertEntry( aString );
577*cdf0e10cSrcweir 	aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim );
578*cdf0e10cSrcweir 	if ( (nCount = xRowNameRanges->Count()) > 0 )
579*cdf0e10cSrcweir 	{
580*cdf0e10cSrcweir 		ScRangePair** ppSortArray = xRowNameRanges->CreateNameSortedArray(
581*cdf0e10cSrcweir 			nCount, pDoc );
582*cdf0e10cSrcweir 		for ( j=0; j < nCount; j++ )
583*cdf0e10cSrcweir 		{
584*cdf0e10cSrcweir             const ScRange aRange(ppSortArray[j]->GetRange(0));
585*cdf0e10cSrcweir 			aRange.Format( aString, SCR_ABS_3D, pDoc, aDetails );
586*cdf0e10cSrcweir 
587*cdf0e10cSrcweir 			//@008 Ab hier baue String fuer Zeilen
588*cdf0e10cSrcweir 			ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1,
589*cdf0e10cSrcweir 											nCol2, nRow2, nTab2 );
590*cdf0e10cSrcweir 			SCROW q=nRow1+3;
591*cdf0e10cSrcweir 			if(q>nRow2) q=nRow2;
592*cdf0e10cSrcweir 			strShow.AssignAscii(RTL_CONSTASCII_STRINGPARAM(" ["));
593*cdf0e10cSrcweir 			if(pDoc!=NULL)
594*cdf0e10cSrcweir 			{
595*cdf0e10cSrcweir 				pDoc->GetString(nCol1, nRow1, nTab1,rString);
596*cdf0e10cSrcweir 				strShow	+= rString;
597*cdf0e10cSrcweir 				for(SCROW i=nRow1+1;i<=q;i++)
598*cdf0e10cSrcweir 				{
599*cdf0e10cSrcweir 					strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
600*cdf0e10cSrcweir 					pDoc->GetString(nCol1, i, nTab1,rString);
601*cdf0e10cSrcweir 					strShow	+= rString;
602*cdf0e10cSrcweir 				}
603*cdf0e10cSrcweir 			}
604*cdf0e10cSrcweir 			if(q<nRow2)
605*cdf0e10cSrcweir 			{
606*cdf0e10cSrcweir 				strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ..."));
607*cdf0e10cSrcweir 			}
608*cdf0e10cSrcweir 			strShow += ']';
609*cdf0e10cSrcweir 
610*cdf0e10cSrcweir 			String aInsStr = aString;
611*cdf0e10cSrcweir 			aInsStr += strShow;
612*cdf0e10cSrcweir 			nPos = aLbRange.InsertEntry( aInsStr );
613*cdf0e10cSrcweir             aRangeMap.insert( NameRangeMap::value_type(aInsStr, aRange) );
614*cdf0e10cSrcweir 			aLbRange.SetEntryData( nPos, (void*)nEntryDataRow );
615*cdf0e10cSrcweir 		}
616*cdf0e10cSrcweir 		delete [] ppSortArray;
617*cdf0e10cSrcweir 	}
618*cdf0e10cSrcweir 	//-----------------------------------------------------------
619*cdf0e10cSrcweir 	aLbRange.SetUpdateMode( sal_True );
620*cdf0e10cSrcweir 	aLbRange.Invalidate();
621*cdf0e10cSrcweir }
622*cdf0e10cSrcweir 
623*cdf0e10cSrcweir 
624*cdf0e10cSrcweir /*************************************************************************
625*cdf0e10cSrcweir #*	Member:		UpdateRangeData								Datum:04.09.97
626*cdf0e10cSrcweir #*------------------------------------------------------------------------
627*cdf0e10cSrcweir #*
628*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
629*cdf0e10cSrcweir #*
630*cdf0e10cSrcweir #*  Funktion:	Aktualisieren der Bereichsdaten
631*cdf0e10cSrcweir #*
632*cdf0e10cSrcweir #*  Input:		Bereichs-String
633*cdf0e10cSrcweir #*				Flag fuer Spalten
634*cdf0e10cSrcweir #*
635*cdf0e10cSrcweir #*	Output:		---
636*cdf0e10cSrcweir #*
637*cdf0e10cSrcweir #************************************************************************/
638*cdf0e10cSrcweir 
639*cdf0e10cSrcweir void ScColRowNameRangesDlg::UpdateRangeData( const ScRange& rRange, sal_Bool bColName )
640*cdf0e10cSrcweir {
641*cdf0e10cSrcweir     ScRangePair* pPair = NULL;
642*cdf0e10cSrcweir 	sal_Bool bFound = sal_False;
643*cdf0e10cSrcweir     if ( bColName && (pPair = xColNameRanges->Find( rRange )) != NULL )
644*cdf0e10cSrcweir 		bFound = sal_True;
645*cdf0e10cSrcweir     else if ( !bColName && (pPair = xRowNameRanges->Find( rRange )) != NULL )
646*cdf0e10cSrcweir 		bFound = sal_True;
647*cdf0e10cSrcweir 
648*cdf0e10cSrcweir 	if ( bFound )
649*cdf0e10cSrcweir 	{
650*cdf0e10cSrcweir         const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
651*cdf0e10cSrcweir 		String aStr;
652*cdf0e10cSrcweir 		theCurArea = rRange;
653*cdf0e10cSrcweir 		theCurArea.Format( aStr, SCR_ABS_3D, pDoc, eConv );
654*cdf0e10cSrcweir 		aEdAssign.SetText( aStr );
655*cdf0e10cSrcweir 		aBtnAdd.Disable();
656*cdf0e10cSrcweir 		aBtnRemove.Enable();
657*cdf0e10cSrcweir 		aBtnColHead.Check( bColName );
658*cdf0e10cSrcweir 		aBtnRowHead.Check( !bColName );
659*cdf0e10cSrcweir 		theCurData = pPair->GetRange(1);
660*cdf0e10cSrcweir 		theCurData.Format( aStr, SCR_ABS_3D, pDoc, eConv );
661*cdf0e10cSrcweir 		aEdAssign2.SetText( aStr );
662*cdf0e10cSrcweir 	}
663*cdf0e10cSrcweir 	else
664*cdf0e10cSrcweir 	{
665*cdf0e10cSrcweir 		aBtnAdd.Enable();
666*cdf0e10cSrcweir 		aBtnRemove.Disable();
667*cdf0e10cSrcweir 	}
668*cdf0e10cSrcweir 	aBtnColHead.Enable();
669*cdf0e10cSrcweir 	aBtnRowHead.Enable();
670*cdf0e10cSrcweir 	aEdAssign2.Enable();
671*cdf0e10cSrcweir     aRbAssign2.Enable();
672*cdf0e10cSrcweir }
673*cdf0e10cSrcweir 
674*cdf0e10cSrcweir 
675*cdf0e10cSrcweir /*************************************************************************
676*cdf0e10cSrcweir #*	Member:		IsRefInputMode								Datum:04.09.97
677*cdf0e10cSrcweir #*------------------------------------------------------------------------
678*cdf0e10cSrcweir #*
679*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
680*cdf0e10cSrcweir #*
681*cdf0e10cSrcweir #*  Funktion:	Abfragefunktion fuer Referenz- Input- Mode.
682*cdf0e10cSrcweir #*
683*cdf0e10cSrcweir #*  Input:		Bereichs-String
684*cdf0e10cSrcweir #*				Flag fuer Spalten
685*cdf0e10cSrcweir #*
686*cdf0e10cSrcweir #*	Output:		true, wenn Referenz- Input- Mode
687*cdf0e10cSrcweir #*
688*cdf0e10cSrcweir #************************************************************************/
689*cdf0e10cSrcweir 
690*cdf0e10cSrcweir sal_Bool ScColRowNameRangesDlg::IsRefInputMode() const
691*cdf0e10cSrcweir {
692*cdf0e10cSrcweir 	return (pEdActive != NULL);
693*cdf0e10cSrcweir }
694*cdf0e10cSrcweir 
695*cdf0e10cSrcweir //------------------------------------------------------------------------
696*cdf0e10cSrcweir // Handler:
697*cdf0e10cSrcweir // ========
698*cdf0e10cSrcweir 
699*cdf0e10cSrcweir /*************************************************************************
700*cdf0e10cSrcweir #*	Handler:	OkBtnHdl									Datum:04.09.97
701*cdf0e10cSrcweir #*------------------------------------------------------------------------
702*cdf0e10cSrcweir #*
703*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
704*cdf0e10cSrcweir #*
705*cdf0e10cSrcweir #*  Funktion:   Wird ausgeloest, wenn der OK- Button gedrueckt wurde.
706*cdf0e10cSrcweir #*				Hinzufuegen- Button ausloesen, und die neu einge-
707*cdf0e10cSrcweir #*				stellten Bereiche ans Dokument uebergeben.
708*cdf0e10cSrcweir #*				Fensterschliessen- Anweisung ausloesen.
709*cdf0e10cSrcweir #*  Input:		---
710*cdf0e10cSrcweir #*
711*cdf0e10cSrcweir #*	Output:		---
712*cdf0e10cSrcweir #*
713*cdf0e10cSrcweir #************************************************************************/
714*cdf0e10cSrcweir 
715*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, OkBtnHdl, void *, EMPTYARG )
716*cdf0e10cSrcweir {
717*cdf0e10cSrcweir 	AddBtnHdl( 0 );
718*cdf0e10cSrcweir 
719*cdf0e10cSrcweir 	// die RangeLists den Refs am Doc zuweisen
720*cdf0e10cSrcweir 	pDoc->GetColNameRangesRef() = xColNameRanges;
721*cdf0e10cSrcweir 	pDoc->GetRowNameRangesRef() = xRowNameRanges;
722*cdf0e10cSrcweir 	// geaenderte Datenbereiche muessen sich auswirken
723*cdf0e10cSrcweir 	pDoc->CompileColRowNameFormula();
724*cdf0e10cSrcweir 	ScDocShell* pDocShell = pViewData->GetDocShell();
725*cdf0e10cSrcweir 	pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID );
726*cdf0e10cSrcweir 	pDocShell->SetDocumentModified();
727*cdf0e10cSrcweir 
728*cdf0e10cSrcweir 	Close();
729*cdf0e10cSrcweir 	return 0;
730*cdf0e10cSrcweir }
731*cdf0e10cSrcweir 
732*cdf0e10cSrcweir 
733*cdf0e10cSrcweir /*************************************************************************
734*cdf0e10cSrcweir #*	Handler:	CancelBtnHdl								Datum:04.09.97
735*cdf0e10cSrcweir #*------------------------------------------------------------------------
736*cdf0e10cSrcweir #*
737*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
738*cdf0e10cSrcweir #*
739*cdf0e10cSrcweir #*  Funktion:	Fensterschliessen- Anweisung ausloesen.
740*cdf0e10cSrcweir #*
741*cdf0e10cSrcweir #*  Input:		---
742*cdf0e10cSrcweir #*
743*cdf0e10cSrcweir #*	Output:		---
744*cdf0e10cSrcweir #*
745*cdf0e10cSrcweir #************************************************************************/
746*cdf0e10cSrcweir 
747*cdf0e10cSrcweir IMPL_LINK_INLINE_START( ScColRowNameRangesDlg, CancelBtnHdl, void *, EMPTYARG )
748*cdf0e10cSrcweir {
749*cdf0e10cSrcweir 	Close();
750*cdf0e10cSrcweir 	return 0;
751*cdf0e10cSrcweir }
752*cdf0e10cSrcweir IMPL_LINK_INLINE_END( ScColRowNameRangesDlg, CancelBtnHdl, void *, EMPTYARG )
753*cdf0e10cSrcweir 
754*cdf0e10cSrcweir 
755*cdf0e10cSrcweir /*************************************************************************
756*cdf0e10cSrcweir #*	Handler:	AddBtnHdl									Datum:04.09.97
757*cdf0e10cSrcweir #*------------------------------------------------------------------------
758*cdf0e10cSrcweir #*
759*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
760*cdf0e10cSrcweir #*
761*cdf0e10cSrcweir #*  Funktion:	Nach betaetigen des Hinzufuegen- Buttons, werden
762*cdf0e10cSrcweir #*				die Bereichsangaben eingestellt und in der
763*cdf0e10cSrcweir #*				Listbox dargestellt.
764*cdf0e10cSrcweir #*
765*cdf0e10cSrcweir #*  Input:		---
766*cdf0e10cSrcweir #*
767*cdf0e10cSrcweir #*	Output:		---
768*cdf0e10cSrcweir #*
769*cdf0e10cSrcweir #************************************************************************/
770*cdf0e10cSrcweir 
771*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, AddBtnHdl, void *, EMPTYARG )
772*cdf0e10cSrcweir {
773*cdf0e10cSrcweir 	String aNewArea( aEdAssign.GetText() );
774*cdf0e10cSrcweir 	String aNewData( aEdAssign2.GetText() );
775*cdf0e10cSrcweir 
776*cdf0e10cSrcweir 	if ( aNewArea.Len() > 0 && aNewData.Len() > 0 )
777*cdf0e10cSrcweir 	{
778*cdf0e10cSrcweir         const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
779*cdf0e10cSrcweir 		ScRange aRange1, aRange2;
780*cdf0e10cSrcweir 		sal_Bool bOk1;
781*cdf0e10cSrcweir         if ( (bOk1 = ((aRange1.ParseAny( aNewArea, pDoc, eConv ) & SCA_VALID) == SCA_VALID)) != sal_False
782*cdf0e10cSrcweir 		  && ((aRange2.ParseAny( aNewData, pDoc, eConv ) & SCA_VALID) == SCA_VALID) )
783*cdf0e10cSrcweir 		{
784*cdf0e10cSrcweir 			theCurArea = aRange1;
785*cdf0e10cSrcweir 			AdjustColRowData( aRange2 );
786*cdf0e10cSrcweir 			ScRangePair* pPair;
787*cdf0e10cSrcweir             if ( ( pPair = xColNameRanges->Find( theCurArea ) ) != NULL )
788*cdf0e10cSrcweir 			{
789*cdf0e10cSrcweir 				xColNameRanges->Remove( pPair );
790*cdf0e10cSrcweir 				delete pPair;
791*cdf0e10cSrcweir 			}
792*cdf0e10cSrcweir             if ( ( pPair = xRowNameRanges->Find( theCurArea ) ) != NULL )
793*cdf0e10cSrcweir 			{
794*cdf0e10cSrcweir 				xRowNameRanges->Remove( pPair );
795*cdf0e10cSrcweir 				delete pPair;
796*cdf0e10cSrcweir 			}
797*cdf0e10cSrcweir 			if ( aBtnColHead.IsChecked() )
798*cdf0e10cSrcweir 				xColNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
799*cdf0e10cSrcweir 			else
800*cdf0e10cSrcweir 				xRowNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
801*cdf0e10cSrcweir 
802*cdf0e10cSrcweir 			UpdateNames();
803*cdf0e10cSrcweir 
804*cdf0e10cSrcweir 			aEdAssign.GrabFocus();
805*cdf0e10cSrcweir 			aBtnAdd.Disable();
806*cdf0e10cSrcweir 			aBtnRemove.Disable();
807*cdf0e10cSrcweir 			aEdAssign.SetText( EMPTY_STRING );
808*cdf0e10cSrcweir 			aBtnColHead.Check( sal_True );
809*cdf0e10cSrcweir 			aBtnRowHead.Check( sal_False );
810*cdf0e10cSrcweir 			aEdAssign2.SetText( EMPTY_STRING );
811*cdf0e10cSrcweir 			theCurArea = ScRange();
812*cdf0e10cSrcweir 			theCurData = theCurArea;
813*cdf0e10cSrcweir 			Range1SelectHdl( 0 );
814*cdf0e10cSrcweir 		}
815*cdf0e10cSrcweir 		else
816*cdf0e10cSrcweir 		{
817*cdf0e10cSrcweir 			ERRORBOX( ScGlobal::GetRscString(STR_INVALIDTABNAME) );
818*cdf0e10cSrcweir 			if ( !bOk1 )
819*cdf0e10cSrcweir 				aEdAssign.GrabFocus();
820*cdf0e10cSrcweir 			else
821*cdf0e10cSrcweir 				aEdAssign2.GrabFocus();
822*cdf0e10cSrcweir 		}
823*cdf0e10cSrcweir 	}
824*cdf0e10cSrcweir 	return 0;
825*cdf0e10cSrcweir }
826*cdf0e10cSrcweir 
827*cdf0e10cSrcweir 
828*cdf0e10cSrcweir /*************************************************************************
829*cdf0e10cSrcweir #*	Handler:	RemoveBtnHdl								Datum:04.09.97
830*cdf0e10cSrcweir #*------------------------------------------------------------------------
831*cdf0e10cSrcweir #*
832*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
833*cdf0e10cSrcweir #*
834*cdf0e10cSrcweir #*  Funktion:	Nach betaetigen des Loeschen- Buttons, wird
835*cdf0e10cSrcweir #*				die markierte Bereichsangabe geloescht.
836*cdf0e10cSrcweir #*
837*cdf0e10cSrcweir #*  Input:		---
838*cdf0e10cSrcweir #*
839*cdf0e10cSrcweir #*	Output:		---
840*cdf0e10cSrcweir #*
841*cdf0e10cSrcweir #************************************************************************/
842*cdf0e10cSrcweir 
843*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, RemoveBtnHdl, void *, EMPTYARG )
844*cdf0e10cSrcweir {
845*cdf0e10cSrcweir 	String aRangeStr = aLbRange.GetSelectEntry();
846*cdf0e10cSrcweir 	sal_uInt16 nSelectPos = aLbRange.GetSelectEntryPos();
847*cdf0e10cSrcweir 	sal_Bool bColName =
848*cdf0e10cSrcweir 		((sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataCol);
849*cdf0e10cSrcweir     NameRangeMap::const_iterator itr = aRangeMap.find(aRangeStr);
850*cdf0e10cSrcweir     if (itr == aRangeMap.end())
851*cdf0e10cSrcweir         return 0;
852*cdf0e10cSrcweir     const ScRange& rRange = itr->second;
853*cdf0e10cSrcweir 
854*cdf0e10cSrcweir     ScRangePair* pPair = NULL;
855*cdf0e10cSrcweir 	sal_Bool bFound = sal_False;
856*cdf0e10cSrcweir     if ( bColName && (pPair = xColNameRanges->Find( rRange )) != NULL )
857*cdf0e10cSrcweir 		bFound = sal_True;
858*cdf0e10cSrcweir     else if ( !bColName && (pPair = xRowNameRanges->Find( rRange )) != NULL )
859*cdf0e10cSrcweir 		bFound = sal_True;
860*cdf0e10cSrcweir 	if ( bFound )
861*cdf0e10cSrcweir 	{
862*cdf0e10cSrcweir 		String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY );
863*cdf0e10cSrcweir 		String aMsg		  = aStrDelMsg.GetToken( 0, '#' );
864*cdf0e10cSrcweir 
865*cdf0e10cSrcweir 		aMsg += aRangeStr;
866*cdf0e10cSrcweir 		aMsg += aStrDelMsg.GetToken( 1, '#' );
867*cdf0e10cSrcweir 
868*cdf0e10cSrcweir 		if ( RET_YES == QUERYBOX(aMsg) )
869*cdf0e10cSrcweir 		{
870*cdf0e10cSrcweir 			if ( bColName )
871*cdf0e10cSrcweir 				xColNameRanges->Remove( pPair );
872*cdf0e10cSrcweir 			else
873*cdf0e10cSrcweir 				xRowNameRanges->Remove( pPair );
874*cdf0e10cSrcweir 			delete pPair;
875*cdf0e10cSrcweir 
876*cdf0e10cSrcweir 			UpdateNames();
877*cdf0e10cSrcweir 			sal_uInt16 nCnt = aLbRange.GetEntryCount();
878*cdf0e10cSrcweir 			if ( nSelectPos >= nCnt )
879*cdf0e10cSrcweir 			{
880*cdf0e10cSrcweir 				if ( nCnt )
881*cdf0e10cSrcweir 					nSelectPos = nCnt - 1;
882*cdf0e10cSrcweir 				else
883*cdf0e10cSrcweir 					nSelectPos = 0;
884*cdf0e10cSrcweir 			}
885*cdf0e10cSrcweir 			aLbRange.SelectEntryPos( nSelectPos );
886*cdf0e10cSrcweir 			if ( nSelectPos &&
887*cdf0e10cSrcweir 					(sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataDelim )
888*cdf0e10cSrcweir 				aLbRange.SelectEntryPos( --nSelectPos );	// ---Zeile---
889*cdf0e10cSrcweir 
890*cdf0e10cSrcweir 			aLbRange.GrabFocus();
891*cdf0e10cSrcweir 			aBtnAdd.Disable();
892*cdf0e10cSrcweir 			aBtnRemove.Disable();
893*cdf0e10cSrcweir 			aEdAssign.SetText( EMPTY_STRING );
894*cdf0e10cSrcweir 			theCurArea = theCurData = ScRange();
895*cdf0e10cSrcweir 			aBtnColHead.Check( sal_True );
896*cdf0e10cSrcweir 			aBtnRowHead.Check( sal_False );
897*cdf0e10cSrcweir 			aEdAssign2.SetText( EMPTY_STRING );
898*cdf0e10cSrcweir 			Range1SelectHdl( 0 );
899*cdf0e10cSrcweir 		}
900*cdf0e10cSrcweir 	}
901*cdf0e10cSrcweir 	return 0;
902*cdf0e10cSrcweir }
903*cdf0e10cSrcweir 
904*cdf0e10cSrcweir 
905*cdf0e10cSrcweir /*************************************************************************
906*cdf0e10cSrcweir #*	Handler:	Range1SelectHdl								Datum:04.09.97
907*cdf0e10cSrcweir #*------------------------------------------------------------------------
908*cdf0e10cSrcweir #*
909*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
910*cdf0e10cSrcweir #*
911*cdf0e10cSrcweir #*  Funktion:	Wenn Zeile in Listbox ausgewaehlt wird,
912*cdf0e10cSrcweir #*				werden die Eingabefelder entsprechend
913*cdf0e10cSrcweir #*				eingestellt.
914*cdf0e10cSrcweir #*
915*cdf0e10cSrcweir #*  Input:		---
916*cdf0e10cSrcweir #*
917*cdf0e10cSrcweir #*	Output:		---
918*cdf0e10cSrcweir #*
919*cdf0e10cSrcweir #************************************************************************/
920*cdf0e10cSrcweir 
921*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, Range1SelectHdl, void *, EMPTYARG )
922*cdf0e10cSrcweir {
923*cdf0e10cSrcweir 	sal_uInt16 nSelectPos = aLbRange.GetSelectEntryPos();
924*cdf0e10cSrcweir 	sal_uInt16 nCnt = aLbRange.GetEntryCount();
925*cdf0e10cSrcweir 	sal_uInt16 nMoves = 0;
926*cdf0e10cSrcweir 	while ( nSelectPos < nCnt
927*cdf0e10cSrcweir 			&& (sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataDelim )
928*cdf0e10cSrcweir 	{	// skip Delimiter
929*cdf0e10cSrcweir 		++nMoves;
930*cdf0e10cSrcweir 		aLbRange.SelectEntryPos( ++nSelectPos );
931*cdf0e10cSrcweir 	}
932*cdf0e10cSrcweir 	String aRangeStr = aLbRange.GetSelectEntry();
933*cdf0e10cSrcweir 	if ( nMoves )
934*cdf0e10cSrcweir 	{
935*cdf0e10cSrcweir 		if ( nSelectPos > 1 && nSelectPos >= nCnt )
936*cdf0e10cSrcweir 		{	// am Ende nicht auf dem " --- Zeile --- " Delimiter stehenbleiben
937*cdf0e10cSrcweir 			// wenn davor Eintraege existieren
938*cdf0e10cSrcweir 			nSelectPos = nCnt - 2;
939*cdf0e10cSrcweir 			aLbRange.SelectEntryPos( nSelectPos );
940*cdf0e10cSrcweir 			aRangeStr = aLbRange.GetSelectEntry();
941*cdf0e10cSrcweir 		}
942*cdf0e10cSrcweir 		else if ( nSelectPos > 2 && nSelectPos < nCnt && aRangeStr.Len()
943*cdf0e10cSrcweir 				&& aRangeStr == aEdAssign.GetText() )
944*cdf0e10cSrcweir 		{	// nach oben wandern statt nach unten auf die vorherige Position
945*cdf0e10cSrcweir 			nSelectPos -= 2;
946*cdf0e10cSrcweir 			aLbRange.SelectEntryPos( nSelectPos );
947*cdf0e10cSrcweir 			aRangeStr = aLbRange.GetSelectEntry();
948*cdf0e10cSrcweir 		}
949*cdf0e10cSrcweir 	}
950*cdf0e10cSrcweir     NameRangeMap::const_iterator itr = aRangeMap.find(aRangeStr);
951*cdf0e10cSrcweir     if ( itr != aRangeMap.end() )
952*cdf0e10cSrcweir 	{
953*cdf0e10cSrcweir 		sal_Bool bColName =
954*cdf0e10cSrcweir 			((sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataCol);
955*cdf0e10cSrcweir 		UpdateRangeData( itr->second, bColName );
956*cdf0e10cSrcweir 		aBtnAdd.Disable();
957*cdf0e10cSrcweir 		aBtnRemove.Enable();
958*cdf0e10cSrcweir 	}
959*cdf0e10cSrcweir 	else
960*cdf0e10cSrcweir 	{
961*cdf0e10cSrcweir 		if ( aEdAssign.GetText().Len() > 0 )
962*cdf0e10cSrcweir 		{
963*cdf0e10cSrcweir 			if ( aEdAssign2.GetText().Len() > 0 )
964*cdf0e10cSrcweir 				aBtnAdd.Enable();
965*cdf0e10cSrcweir 			else
966*cdf0e10cSrcweir 				aBtnAdd.Disable();
967*cdf0e10cSrcweir 			aBtnColHead.Enable();
968*cdf0e10cSrcweir 			aBtnRowHead.Enable();
969*cdf0e10cSrcweir 			aEdAssign2.Enable();
970*cdf0e10cSrcweir             aRbAssign2.Enable();
971*cdf0e10cSrcweir 		}
972*cdf0e10cSrcweir 		else
973*cdf0e10cSrcweir 		{
974*cdf0e10cSrcweir 			aBtnAdd.Disable();
975*cdf0e10cSrcweir 			aBtnColHead.Disable();
976*cdf0e10cSrcweir 			aBtnRowHead.Disable();
977*cdf0e10cSrcweir 			aEdAssign2.Disable();
978*cdf0e10cSrcweir             aRbAssign2.Disable();
979*cdf0e10cSrcweir 		}
980*cdf0e10cSrcweir 		aBtnRemove.Disable();
981*cdf0e10cSrcweir 		aEdAssign.GrabFocus();
982*cdf0e10cSrcweir 	}
983*cdf0e10cSrcweir 
984*cdf0e10cSrcweir 	aEdAssign.Enable();
985*cdf0e10cSrcweir 	aRbAssign.Enable();
986*cdf0e10cSrcweir 
987*cdf0e10cSrcweir 	//@BugID 54702 Enablen/Disablen nur noch in Basisklasse
988*cdf0e10cSrcweir 	//SFX_APPWINDOW->Enable();
989*cdf0e10cSrcweir 	return 0;
990*cdf0e10cSrcweir }
991*cdf0e10cSrcweir 
992*cdf0e10cSrcweir 
993*cdf0e10cSrcweir /*************************************************************************
994*cdf0e10cSrcweir #*	Handler:	Range1DataModifyHdl							Datum:04.09.97
995*cdf0e10cSrcweir #*------------------------------------------------------------------------
996*cdf0e10cSrcweir #*
997*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
998*cdf0e10cSrcweir #*
999*cdf0e10cSrcweir #*  Funktion:	Wird ausgeloest, wenn in der Tabelle, der Label-
1000*cdf0e10cSrcweir #*				Bereich geaendert wurde.
1001*cdf0e10cSrcweir #*
1002*cdf0e10cSrcweir #*  Input:		---
1003*cdf0e10cSrcweir #*
1004*cdf0e10cSrcweir #*	Output:		---
1005*cdf0e10cSrcweir #*
1006*cdf0e10cSrcweir #************************************************************************/
1007*cdf0e10cSrcweir 
1008*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, Range1DataModifyHdl, void *, EMPTYARG )
1009*cdf0e10cSrcweir {
1010*cdf0e10cSrcweir 	String aNewArea( aEdAssign.GetText() );
1011*cdf0e10cSrcweir 	sal_Bool bValid = sal_False;
1012*cdf0e10cSrcweir 	if ( aNewArea.Len() > 0 )
1013*cdf0e10cSrcweir 	{
1014*cdf0e10cSrcweir 		ScRange aRange;
1015*cdf0e10cSrcweir 		if ( (aRange.ParseAny( aNewArea, pDoc, pDoc->GetAddressConvention() ) & SCA_VALID) == SCA_VALID )
1016*cdf0e10cSrcweir 		{
1017*cdf0e10cSrcweir 			SetColRowData( aRange );
1018*cdf0e10cSrcweir 			bValid = sal_True;
1019*cdf0e10cSrcweir 		}
1020*cdf0e10cSrcweir 	}
1021*cdf0e10cSrcweir 	if ( bValid )
1022*cdf0e10cSrcweir 	{
1023*cdf0e10cSrcweir 		aBtnAdd.Enable();
1024*cdf0e10cSrcweir 		aBtnColHead.Enable();
1025*cdf0e10cSrcweir 		aBtnRowHead.Enable();
1026*cdf0e10cSrcweir 		aEdAssign2.Enable();
1027*cdf0e10cSrcweir         aRbAssign2.Enable();
1028*cdf0e10cSrcweir 	}
1029*cdf0e10cSrcweir 	else
1030*cdf0e10cSrcweir 	{
1031*cdf0e10cSrcweir 		aBtnAdd.Disable();
1032*cdf0e10cSrcweir 		aBtnColHead.Disable();
1033*cdf0e10cSrcweir 		aBtnRowHead.Disable();
1034*cdf0e10cSrcweir 		aEdAssign2.Disable();
1035*cdf0e10cSrcweir         aRbAssign2.Disable();
1036*cdf0e10cSrcweir 	}
1037*cdf0e10cSrcweir 	aBtnRemove.Disable();
1038*cdf0e10cSrcweir 	return 0;
1039*cdf0e10cSrcweir }
1040*cdf0e10cSrcweir 
1041*cdf0e10cSrcweir 
1042*cdf0e10cSrcweir /*************************************************************************
1043*cdf0e10cSrcweir #*	Handler:	Range2DataModifyHdl							Datum:04.09.97
1044*cdf0e10cSrcweir #*------------------------------------------------------------------------
1045*cdf0e10cSrcweir #*
1046*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
1047*cdf0e10cSrcweir #*
1048*cdf0e10cSrcweir #*  Funktion:	Wird ausgeloest, wenn in der Tabelle, der Daten-
1049*cdf0e10cSrcweir #*				Bereich geaendert wurde
1050*cdf0e10cSrcweir #*
1051*cdf0e10cSrcweir #*  Input:		---
1052*cdf0e10cSrcweir #*
1053*cdf0e10cSrcweir #*	Output:		---
1054*cdf0e10cSrcweir #*
1055*cdf0e10cSrcweir #************************************************************************/
1056*cdf0e10cSrcweir 
1057*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, Range2DataModifyHdl, void *, EMPTYARG )
1058*cdf0e10cSrcweir {
1059*cdf0e10cSrcweir 	String aNewData( aEdAssign2.GetText() );
1060*cdf0e10cSrcweir 	if ( aNewData.Len() > 0 )
1061*cdf0e10cSrcweir 	{
1062*cdf0e10cSrcweir 		ScRange aRange;
1063*cdf0e10cSrcweir 		if ( (aRange.ParseAny( aNewData, pDoc, pDoc->GetAddressConvention() ) & SCA_VALID) == SCA_VALID )
1064*cdf0e10cSrcweir 		{
1065*cdf0e10cSrcweir 			AdjustColRowData( aRange );
1066*cdf0e10cSrcweir 			aBtnAdd.Enable();
1067*cdf0e10cSrcweir 		}
1068*cdf0e10cSrcweir 		else
1069*cdf0e10cSrcweir 			aBtnAdd.Disable();
1070*cdf0e10cSrcweir 	}
1071*cdf0e10cSrcweir 	else
1072*cdf0e10cSrcweir 	{
1073*cdf0e10cSrcweir 		aBtnAdd.Disable();
1074*cdf0e10cSrcweir 	}
1075*cdf0e10cSrcweir 	return 0;
1076*cdf0e10cSrcweir }
1077*cdf0e10cSrcweir 
1078*cdf0e10cSrcweir 
1079*cdf0e10cSrcweir /*************************************************************************
1080*cdf0e10cSrcweir #*	Handler:	ColClickHdl									Datum:04.09.97
1081*cdf0e10cSrcweir #*------------------------------------------------------------------------
1082*cdf0e10cSrcweir #*
1083*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
1084*cdf0e10cSrcweir #*
1085*cdf0e10cSrcweir #*  Funktion:	Radiobutton fuer Spalten wurde betaetigt,
1086*cdf0e10cSrcweir #*				die entsprechenden Einstellungen werden
1087*cdf0e10cSrcweir #*				vorgenommen
1088*cdf0e10cSrcweir #*
1089*cdf0e10cSrcweir #*  Input:		---
1090*cdf0e10cSrcweir #*
1091*cdf0e10cSrcweir #*	Output:		---
1092*cdf0e10cSrcweir #*
1093*cdf0e10cSrcweir #************************************************************************/
1094*cdf0e10cSrcweir 
1095*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, ColClickHdl, void *, EMPTYARG )
1096*cdf0e10cSrcweir {
1097*cdf0e10cSrcweir 	if ( !aBtnColHead.GetSavedValue() )
1098*cdf0e10cSrcweir 	{
1099*cdf0e10cSrcweir 		aBtnColHead.Check( sal_True );
1100*cdf0e10cSrcweir 		aBtnRowHead.Check( sal_False );
1101*cdf0e10cSrcweir 		if ( theCurArea.aStart.Row() == 0 && theCurArea.aEnd.Row() == MAXROW )
1102*cdf0e10cSrcweir 		{
1103*cdf0e10cSrcweir 			theCurArea.aEnd.SetRow( MAXROW - 1 );
1104*cdf0e10cSrcweir 			String aStr;
1105*cdf0e10cSrcweir 			theCurArea.Format( aStr, SCR_ABS_3D, pDoc, pDoc->GetAddressConvention() );
1106*cdf0e10cSrcweir 			aEdAssign.SetText( aStr );
1107*cdf0e10cSrcweir 		}
1108*cdf0e10cSrcweir 		ScRange aRange( theCurData );
1109*cdf0e10cSrcweir 		aRange.aStart.SetRow( Min( (long)(theCurArea.aEnd.Row() + 1), (long)MAXROW ) );
1110*cdf0e10cSrcweir 		aRange.aEnd.SetRow( MAXROW );
1111*cdf0e10cSrcweir 		AdjustColRowData( aRange );
1112*cdf0e10cSrcweir 	}
1113*cdf0e10cSrcweir 	return 0;
1114*cdf0e10cSrcweir }
1115*cdf0e10cSrcweir 
1116*cdf0e10cSrcweir 
1117*cdf0e10cSrcweir /*************************************************************************
1118*cdf0e10cSrcweir #*	Handler:	RowClickHdl									Datum:04.09.97
1119*cdf0e10cSrcweir #*------------------------------------------------------------------------
1120*cdf0e10cSrcweir #*
1121*cdf0e10cSrcweir #*  Klasse:		ScColRowNameRangesDlg
1122*cdf0e10cSrcweir #*
1123*cdf0e10cSrcweir #*  Funktion:	Radiobutton fuer Zeilen wurde betaetigt,
1124*cdf0e10cSrcweir #*				die entsprechenden Einstellungen werden
1125*cdf0e10cSrcweir #*				vorgenommen
1126*cdf0e10cSrcweir #*
1127*cdf0e10cSrcweir #*  Input:		---
1128*cdf0e10cSrcweir #*
1129*cdf0e10cSrcweir #*	Output:		---
1130*cdf0e10cSrcweir #*
1131*cdf0e10cSrcweir #************************************************************************/
1132*cdf0e10cSrcweir 
1133*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, RowClickHdl, void *, EMPTYARG )
1134*cdf0e10cSrcweir {
1135*cdf0e10cSrcweir 	if ( !aBtnRowHead.GetSavedValue() )
1136*cdf0e10cSrcweir 	{
1137*cdf0e10cSrcweir 		aBtnRowHead.Check( sal_True );
1138*cdf0e10cSrcweir 		aBtnColHead.Check( sal_False );
1139*cdf0e10cSrcweir 		if ( theCurArea.aStart.Col() == 0 && theCurArea.aEnd.Col() == MAXCOL )
1140*cdf0e10cSrcweir 		{
1141*cdf0e10cSrcweir 			theCurArea.aEnd.SetCol( MAXCOL - 1 );
1142*cdf0e10cSrcweir 			String aStr;
1143*cdf0e10cSrcweir 			theCurArea.Format( aStr, SCR_ABS_3D, pDoc, pDoc->GetAddressConvention() );
1144*cdf0e10cSrcweir 			aEdAssign.SetText( aStr );
1145*cdf0e10cSrcweir 		}
1146*cdf0e10cSrcweir 		ScRange aRange( theCurData );
1147*cdf0e10cSrcweir 		aRange.aStart.SetCol( static_cast<SCCOL>(Min( (long)(theCurArea.aEnd.Col() + 1), (long)MAXCOL )) );
1148*cdf0e10cSrcweir 		aRange.aEnd.SetCol( MAXCOL );
1149*cdf0e10cSrcweir 		AdjustColRowData( aRange );
1150*cdf0e10cSrcweir 	}
1151*cdf0e10cSrcweir 	return 0;
1152*cdf0e10cSrcweir }
1153*cdf0e10cSrcweir 
1154*cdf0e10cSrcweir 
1155*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, GetFocusHdl, Control*, pCtrl )
1156*cdf0e10cSrcweir {
1157*cdf0e10cSrcweir     if( (pCtrl == (Control*)&aEdAssign) || (pCtrl == (Control*)&aRbAssign) )
1158*cdf0e10cSrcweir         pEdActive = &aEdAssign;
1159*cdf0e10cSrcweir     else if( (pCtrl == (Control*)&aEdAssign2) || (pCtrl == (Control*)&aRbAssign2) )
1160*cdf0e10cSrcweir         pEdActive = &aEdAssign2;
1161*cdf0e10cSrcweir     else
1162*cdf0e10cSrcweir         pEdActive = NULL;
1163*cdf0e10cSrcweir 
1164*cdf0e10cSrcweir     if( pEdActive )
1165*cdf0e10cSrcweir         pEdActive->SetSelection( Selection( 0, SELECTION_MAX ) );
1166*cdf0e10cSrcweir 
1167*cdf0e10cSrcweir 	return 0;
1168*cdf0e10cSrcweir }
1169*cdf0e10cSrcweir 
1170*cdf0e10cSrcweir 
1171*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, LoseFocusHdl, Control*, EMPTYARG )
1172*cdf0e10cSrcweir {
1173*cdf0e10cSrcweir 	bDlgLostFocus = !IsActive();
1174*cdf0e10cSrcweir 	return 0;
1175*cdf0e10cSrcweir }
1176