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