1b3f79822SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file
5b3f79822SAndrew Rist * distributed with this work for additional information
6b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the
8b3f79822SAndrew Rist * "License"); you may not use this file except in compliance
9b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at
10b3f79822SAndrew Rist *
11b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12b3f79822SAndrew Rist *
13b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing,
14b3f79822SAndrew Rist * software distributed under the License is distributed on an
15b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16b3f79822SAndrew Rist * KIND, either express or implied. See the License for the
17b3f79822SAndrew Rist * specific language governing permissions and limitations
18b3f79822SAndrew Rist * under the License.
19b3f79822SAndrew Rist *
20b3f79822SAndrew Rist *************************************************************/
21b3f79822SAndrew Rist
22b3f79822SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sc.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir // System - Includes ---------------------------------------------------------
28cdf0e10cSrcweir
29cdf0e10cSrcweir
30cdf0e10cSrcweir
31cdf0e10cSrcweir // INCLUDE -------------------------------------------------------------------
32cdf0e10cSrcweir
33cdf0e10cSrcweir #include "global.hxx"
34cdf0e10cSrcweir #include "reffact.hxx"
35cdf0e10cSrcweir #include "document.hxx"
36cdf0e10cSrcweir #include "docfunc.hxx"
37cdf0e10cSrcweir #include "scresid.hxx"
38cdf0e10cSrcweir #include "globstr.hrc"
39cdf0e10cSrcweir #include "namedlg.hrc"
40cdf0e10cSrcweir
41cdf0e10cSrcweir #define _NAMEDLG_CXX
42cdf0e10cSrcweir #include "namedlg.hxx"
43cdf0e10cSrcweir #undef _NAMEDLG_CXX
44cdf0e10cSrcweir #include <vcl/msgbox.hxx>
45cdf0e10cSrcweir
46cdf0e10cSrcweir
47cdf0e10cSrcweir
48cdf0e10cSrcweir // defines -------------------------------------------------------------------
49cdf0e10cSrcweir
50cdf0e10cSrcweir #define ABS_SREF SCA_VALID \
51cdf0e10cSrcweir | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
52cdf0e10cSrcweir #define ABS_DREF ABS_SREF \
53cdf0e10cSrcweir | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
54cdf0e10cSrcweir #define ABS_SREF3D ABS_SREF | SCA_TAB_3D
55cdf0e10cSrcweir #define ABS_DREF3D ABS_DREF | SCA_TAB_3D
56cdf0e10cSrcweir
57*dffa72deSWang Lei const sal_uInt16 SHEETNAMEPOS = 33;
58cdf0e10cSrcweir
59cdf0e10cSrcweir //============================================================================
60cdf0e10cSrcweir // Hilfsklasse: Merken der aktuellen Bereichsoptionen,
61cdf0e10cSrcweir // wenn ein Name in der ComboBox gefunden wird.
62cdf0e10cSrcweir
63cdf0e10cSrcweir struct SaveData
64cdf0e10cSrcweir {
SaveDataSaveData65cdf0e10cSrcweir SaveData()
66cdf0e10cSrcweir : bCriteria(sal_False),bPrintArea(sal_False),
67cdf0e10cSrcweir bColHeader(sal_False),bRowHeader(sal_False),
68cdf0e10cSrcweir bDirty(sal_False) {}
69cdf0e10cSrcweir
ClearSaveData70cdf0e10cSrcweir void Clear()
71cdf0e10cSrcweir {
72cdf0e10cSrcweir aStrSymbol.Erase();
73cdf0e10cSrcweir bCriteria = bPrintArea =
74cdf0e10cSrcweir bColHeader = bRowHeader = sal_False;
75cdf0e10cSrcweir bDirty = sal_True;
76cdf0e10cSrcweir }
77cdf0e10cSrcweir
78cdf0e10cSrcweir String aStrSymbol;
79cdf0e10cSrcweir sal_Bool bCriteria:1;
80cdf0e10cSrcweir sal_Bool bPrintArea:1;
81cdf0e10cSrcweir sal_Bool bColHeader:1;
82cdf0e10cSrcweir sal_Bool bRowHeader:1;
83cdf0e10cSrcweir sal_Bool bDirty:1;
84cdf0e10cSrcweir };
85cdf0e10cSrcweir
86cdf0e10cSrcweir static SaveData* pSaveObj = NULL;
87cdf0e10cSrcweir
88cdf0e10cSrcweir #define SAVE_DATA() \
89cdf0e10cSrcweir pSaveObj->aStrSymbol = aEdAssign.GetText(); \
90cdf0e10cSrcweir pSaveObj->bCriteria = aBtnCriteria.IsChecked(); \
91cdf0e10cSrcweir pSaveObj->bPrintArea = aBtnPrintArea.IsChecked(); \
92cdf0e10cSrcweir pSaveObj->bColHeader = aBtnColHeader.IsChecked(); \
93cdf0e10cSrcweir pSaveObj->bRowHeader = aBtnRowHeader.IsChecked(); \
94cdf0e10cSrcweir pSaveObj->bDirty = sal_True;
95cdf0e10cSrcweir
96cdf0e10cSrcweir #define RESTORE_DATA() \
97cdf0e10cSrcweir if ( pSaveObj->bDirty ) \
98cdf0e10cSrcweir { \
99cdf0e10cSrcweir aEdAssign.SetText( pSaveObj->aStrSymbol ); \
100cdf0e10cSrcweir aBtnCriteria.Check( pSaveObj->bCriteria ); \
101cdf0e10cSrcweir aBtnPrintArea.Check( pSaveObj->bPrintArea ); \
102cdf0e10cSrcweir aBtnColHeader.Check( pSaveObj->bColHeader ); \
103cdf0e10cSrcweir aBtnRowHeader.Check( pSaveObj->bRowHeader ); \
104cdf0e10cSrcweir pSaveObj->bDirty = sal_False; \
105cdf0e10cSrcweir }
106cdf0e10cSrcweir
107cdf0e10cSrcweir #define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute();
108cdf0e10cSrcweir
109cdf0e10cSrcweir
110cdf0e10cSrcweir //============================================================================
111cdf0e10cSrcweir // class ScNameDlg
112cdf0e10cSrcweir
113cdf0e10cSrcweir //----------------------------------------------------------------------------
114cdf0e10cSrcweir
ScNameDlg(SfxBindings * pB,SfxChildWindow * pCW,Window * pParent,ScViewData * ptrViewData,const ScAddress & aCursorPos)115cdf0e10cSrcweir ScNameDlg::ScNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
116cdf0e10cSrcweir ScViewData* ptrViewData,
117cdf0e10cSrcweir const ScAddress& aCursorPos )
118cdf0e10cSrcweir
119cdf0e10cSrcweir : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_NAMES ),
120cdf0e10cSrcweir //
121cdf0e10cSrcweir aFlName ( this, ScResId( FL_NAME ) ),
122cdf0e10cSrcweir aEdName ( this, ScResId( ED_NAME ) ),
123*dffa72deSWang Lei aLBNames ( this, ScResId( LB_NAMES ) ),
124cdf0e10cSrcweir //
125cdf0e10cSrcweir aFlAssign ( this, ScResId( FL_ASSIGN ) ),
126cdf0e10cSrcweir aEdAssign ( this, this, ScResId( ED_ASSIGN ) ),
127cdf0e10cSrcweir aRbAssign ( this, ScResId( RB_ASSIGN ), &aEdAssign, this ),
128cdf0e10cSrcweir //
129cdf0e10cSrcweir aFlType ( this, ScResId( FL_TYPE ) ),
130cdf0e10cSrcweir aBtnPrintArea ( this, ScResId( BTN_PRINTAREA ) ),
131cdf0e10cSrcweir aBtnColHeader ( this, ScResId( BTN_COLHEADER ) ),
132cdf0e10cSrcweir aBtnCriteria ( this, ScResId( BTN_CRITERIA ) ),
133cdf0e10cSrcweir aBtnRowHeader ( this, ScResId( BTN_ROWHEADER ) ),
134cdf0e10cSrcweir //
135cdf0e10cSrcweir aBtnOk ( this, ScResId( BTN_OK ) ),
136cdf0e10cSrcweir aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
137cdf0e10cSrcweir aBtnHelp ( this, ScResId( BTN_HELP ) ),
138cdf0e10cSrcweir aBtnAdd ( this, ScResId( BTN_ADD ) ),
139cdf0e10cSrcweir aBtnRemove ( this, ScResId( BTN_REMOVE ) ),
140cdf0e10cSrcweir aBtnMore ( this, ScResId( BTN_MORE ) ),
141cdf0e10cSrcweir //
142cdf0e10cSrcweir bSaved (sal_False),
143cdf0e10cSrcweir aStrAdd ( ScResId( STR_ADD ) ),
144cdf0e10cSrcweir aStrModify ( ScResId( STR_MODIFY ) ),
145cdf0e10cSrcweir errMsgInvalidSym( ScResId( STR_INVALIDSYMBOL ) ),
146cdf0e10cSrcweir //
147cdf0e10cSrcweir pViewData ( ptrViewData ),
148cdf0e10cSrcweir pDoc ( ptrViewData->GetDocument() ),
149cdf0e10cSrcweir aLocalRangeName ( *(pDoc->GetRangeName()) ),
150*dffa72deSWang Lei theCursorPos ( aCursorPos ), // zum Berechnen der Referenzen
151*dffa72deSWang Lei aSelectedRangeScope(MAXTABCOUNT)
152cdf0e10cSrcweir {
153cdf0e10cSrcweir pSaveObj = new SaveData;
154cdf0e10cSrcweir Init();
155cdf0e10cSrcweir FreeResource();
156cdf0e10cSrcweir
157cdf0e10cSrcweir aRbAssign.SetAccessibleRelationMemberOf(&aFlAssign);
158cdf0e10cSrcweir }
159cdf0e10cSrcweir
160cdf0e10cSrcweir
161cdf0e10cSrcweir //----------------------------------------------------------------------------
162cdf0e10cSrcweir
~ScNameDlg()163cdf0e10cSrcweir __EXPORT ScNameDlg::~ScNameDlg()
164cdf0e10cSrcweir {
165cdf0e10cSrcweir DELETEZ( pSaveObj );
166cdf0e10cSrcweir }
167cdf0e10cSrcweir
168cdf0e10cSrcweir
169cdf0e10cSrcweir //----------------------------------------------------------------------------
170cdf0e10cSrcweir
Init()171cdf0e10cSrcweir void __EXPORT ScNameDlg::Init()
172cdf0e10cSrcweir {
173cdf0e10cSrcweir String aAreaStr;
174cdf0e10cSrcweir ScRange aRange;
175cdf0e10cSrcweir
176cdf0e10cSrcweir DBG_ASSERT( pViewData && pDoc, "ViewData oder Document nicht gefunden!" );
177cdf0e10cSrcweir
178cdf0e10cSrcweir aBtnOk.SetClickHdl ( LINK( this, ScNameDlg, OkBtnHdl ) );
179cdf0e10cSrcweir aBtnCancel.SetClickHdl ( LINK( this, ScNameDlg, CancelBtnHdl ) );
180cdf0e10cSrcweir aBtnAdd.SetClickHdl ( LINK( this, ScNameDlg, AddBtnHdl ) );
181cdf0e10cSrcweir aBtnRemove.SetClickHdl ( LINK( this, ScNameDlg, RemoveBtnHdl ) );
182cdf0e10cSrcweir aEdAssign.SetGetFocusHdl( LINK( this, ScNameDlg, AssignGetFocusHdl ) );
183cdf0e10cSrcweir aEdAssign.SetModifyHdl ( LINK( this, ScNameDlg, EdModifyHdl ) );
184cdf0e10cSrcweir aEdName.SetModifyHdl ( LINK( this, ScNameDlg, EdModifyHdl ) );
185*dffa72deSWang Lei aLBNames.SetSelectHdl ( LINK( this, ScNameDlg, NameSelectHdl ) );
186cdf0e10cSrcweir
187cdf0e10cSrcweir aBtnCriteria .Hide();
188cdf0e10cSrcweir aBtnPrintArea.Hide();
189cdf0e10cSrcweir aBtnColHeader.Hide();
190cdf0e10cSrcweir aBtnRowHeader.Hide();
191cdf0e10cSrcweir
192cdf0e10cSrcweir aBtnMore.AddWindow( &aFlType );
193cdf0e10cSrcweir aBtnMore.AddWindow( &aBtnCriteria );
194cdf0e10cSrcweir aBtnMore.AddWindow( &aBtnPrintArea );
195cdf0e10cSrcweir aBtnMore.AddWindow( &aBtnColHeader );
196cdf0e10cSrcweir aBtnMore.AddWindow( &aBtnRowHeader );
197cdf0e10cSrcweir
198cdf0e10cSrcweir UpdateNames();
199cdf0e10cSrcweir
200cdf0e10cSrcweir pViewData->GetSimpleArea( aRange );
201cdf0e10cSrcweir aRange.Format( aAreaStr, ABS_DREF3D, pDoc,
202cdf0e10cSrcweir ScAddress::Details(pDoc->GetAddressConvention(), 0, 0) );
203cdf0e10cSrcweir
204cdf0e10cSrcweir theCurSel = Selection( 0, SELECTION_MAX );
205cdf0e10cSrcweir aEdAssign.GrabFocus();
206cdf0e10cSrcweir aEdAssign.SetText( aAreaStr );
207cdf0e10cSrcweir aEdAssign.SetSelection( theCurSel );
208cdf0e10cSrcweir aEdName.GrabFocus();
209cdf0e10cSrcweir
210cdf0e10cSrcweir aBtnAdd.Disable();
211cdf0e10cSrcweir aBtnRemove.Disable();
212*dffa72deSWang Lei //if ( aEdName.GetEntryCount() > 0 )
213*dffa72deSWang Lei if ( aLBNames.GetEntryCount() > 0 )
214cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd );
215cdf0e10cSrcweir UpdateChecks();
216cdf0e10cSrcweir EdModifyHdl( 0 );
217cdf0e10cSrcweir
218cdf0e10cSrcweir bSaved=sal_True;
219cdf0e10cSrcweir SAVE_DATA()
220cdf0e10cSrcweir
221cdf0e10cSrcweir //@BugID 54702
222cdf0e10cSrcweir //SFX_APPWINDOW->Disable(sal_False); //! allgemeine Methode im ScAnyRefDlg
223cdf0e10cSrcweir }
224cdf0e10cSrcweir
225cdf0e10cSrcweir //----------------------------------------------------------------------------
IsRefInputMode() const226cdf0e10cSrcweir sal_Bool ScNameDlg::IsRefInputMode() const
227cdf0e10cSrcweir {
228cdf0e10cSrcweir return aEdAssign.IsEnabled();
229cdf0e10cSrcweir }
230cdf0e10cSrcweir
RefInputDone(sal_Bool bForced)231cdf0e10cSrcweir void ScNameDlg::RefInputDone( sal_Bool bForced)
232cdf0e10cSrcweir {
233cdf0e10cSrcweir ScAnyRefDlg::RefInputDone(bForced);
234cdf0e10cSrcweir EdModifyHdl(&aEdAssign);
235cdf0e10cSrcweir }
236cdf0e10cSrcweir //----------------------------------------------------------------------------
237cdf0e10cSrcweir // Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
238cdf0e10cSrcweir // neue Selektion im Referenz-Edit angezeigt wird.
239cdf0e10cSrcweir
240cdf0e10cSrcweir
SetReference(const ScRange & rRef,ScDocument * pDocP)241cdf0e10cSrcweir void ScNameDlg::SetReference( const ScRange& rRef, ScDocument* pDocP )
242cdf0e10cSrcweir {
243cdf0e10cSrcweir if ( aEdAssign.IsEnabled() )
244cdf0e10cSrcweir {
245cdf0e10cSrcweir if ( rRef.aStart != rRef.aEnd )
246cdf0e10cSrcweir RefInputStart(&aEdAssign);
247cdf0e10cSrcweir String aRefStr;
248cdf0e10cSrcweir rRef.Format( aRefStr, ABS_DREF3D, pDocP,
249cdf0e10cSrcweir ScAddress::Details(pDocP->GetAddressConvention(), 0, 0) );
250cdf0e10cSrcweir aEdAssign.SetRefString( aRefStr );
251cdf0e10cSrcweir }
252cdf0e10cSrcweir }
253cdf0e10cSrcweir
254cdf0e10cSrcweir
255cdf0e10cSrcweir //----------------------------------------------------------------------------
Close()256cdf0e10cSrcweir sal_Bool __EXPORT ScNameDlg::Close()
257cdf0e10cSrcweir {
258cdf0e10cSrcweir return DoClose( ScNameDlgWrapper::GetChildWindowId() );
259cdf0e10cSrcweir }
260cdf0e10cSrcweir
261cdf0e10cSrcweir
262cdf0e10cSrcweir //----------------------------------------------------------------------------
263cdf0e10cSrcweir
SetActive()264cdf0e10cSrcweir void ScNameDlg::SetActive()
265cdf0e10cSrcweir {
266cdf0e10cSrcweir aEdAssign.GrabFocus();
267cdf0e10cSrcweir RefInputDone();
268cdf0e10cSrcweir }
269cdf0e10cSrcweir
270cdf0e10cSrcweir
271cdf0e10cSrcweir //----------------------------------------------------------------------------
272cdf0e10cSrcweir
UpdateChecks()273cdf0e10cSrcweir void __EXPORT ScNameDlg::UpdateChecks()
274cdf0e10cSrcweir {
275cdf0e10cSrcweir sal_uInt16 nCurPos=0;
276cdf0e10cSrcweir
277*dffa72deSWang Lei if(aLocalRangeName.SearchName( aEdName.GetText(), nCurPos, aSelectedRangeScope))
278cdf0e10cSrcweir {
279cdf0e10cSrcweir ScRangeData* pData=(ScRangeData*)(aLocalRangeName.At( nCurPos ));
280cdf0e10cSrcweir aBtnCriteria .Check( pData->HasType( RT_CRITERIA ) );
281cdf0e10cSrcweir aBtnPrintArea.Check( pData->HasType( RT_PRINTAREA ) );
282cdf0e10cSrcweir aBtnColHeader.Check( pData->HasType( RT_COLHEADER ) );
283cdf0e10cSrcweir aBtnRowHeader.Check( pData->HasType( RT_ROWHEADER ) );
284cdf0e10cSrcweir }
285cdf0e10cSrcweir
286cdf0e10cSrcweir // Falls Edit-Feld leer ist: Typ-CheckBoxen deaktivieren:
287cdf0e10cSrcweir
288cdf0e10cSrcweir if ( aEdName.GetText().Len() != 0 )
289cdf0e10cSrcweir {
290cdf0e10cSrcweir if ( !aFlType.IsEnabled() )
291cdf0e10cSrcweir {
292*dffa72deSWang Lei aFlType.Enable();
293cdf0e10cSrcweir aBtnCriteria .Enable();
294cdf0e10cSrcweir aBtnPrintArea.Enable();
295cdf0e10cSrcweir aBtnColHeader.Enable();
296cdf0e10cSrcweir aBtnRowHeader.Enable();
297*dffa72deSWang Lei aFlAssign.Enable();
298*dffa72deSWang Lei aEdAssign.Enable();
299*dffa72deSWang Lei aRbAssign.Enable();
300cdf0e10cSrcweir }
301cdf0e10cSrcweir }
302cdf0e10cSrcweir else if ( aFlType.IsEnabled() )
303cdf0e10cSrcweir {
304*dffa72deSWang Lei aFlType.Disable();
305*dffa72deSWang Lei aBtnCriteria.Disable();
306cdf0e10cSrcweir aBtnPrintArea.Disable();
307cdf0e10cSrcweir aBtnColHeader.Disable();
308cdf0e10cSrcweir aBtnRowHeader.Disable();
309*dffa72deSWang Lei aFlAssign.Disable();
310*dffa72deSWang Lei aEdAssign.Disable();
311*dffa72deSWang Lei aRbAssign.Disable();
312cdf0e10cSrcweir }
313cdf0e10cSrcweir }
314cdf0e10cSrcweir
315cdf0e10cSrcweir
316cdf0e10cSrcweir //----------------------------------------------------------------------------
317cdf0e10cSrcweir
UpdateNames()318cdf0e10cSrcweir void __EXPORT ScNameDlg::UpdateNames()
319cdf0e10cSrcweir {
320cdf0e10cSrcweir sal_uInt16 nRangeCount = aLocalRangeName.GetCount();
321cdf0e10cSrcweir
322*dffa72deSWang Lei //aEdName.SetUpdateMode( FALSE );
323*dffa72deSWang Lei aLBNames.SetUpdateMode( false );
324cdf0e10cSrcweir //-----------------------------------------------------------
325*dffa72deSWang Lei //USHORT nNamePos = aEdName.GetTopEntry();
326*dffa72deSWang Lei //aEdName.Clear();
327*dffa72deSWang Lei sal_uInt16 nNamePos = aLBNames.GetTopEntry();
328*dffa72deSWang Lei aLBNames.Clear();
329cdf0e10cSrcweir
330cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING );
331cdf0e10cSrcweir
332cdf0e10cSrcweir if ( nRangeCount > 0 )
333cdf0e10cSrcweir {
334cdf0e10cSrcweir ScRangeData* pRangeData = NULL;
335cdf0e10cSrcweir String aString;
336*dffa72deSWang Lei SCTAB tabIndex = 0;
337cdf0e10cSrcweir
338cdf0e10cSrcweir for ( sal_uInt16 i=0; i<nRangeCount; i++ )
339cdf0e10cSrcweir {
340cdf0e10cSrcweir pRangeData = (ScRangeData*)(aLocalRangeName.At( i ));
341cdf0e10cSrcweir if ( pRangeData )
342cdf0e10cSrcweir {
343cdf0e10cSrcweir if ( !pRangeData->HasType( RT_DATABASE )
344cdf0e10cSrcweir && !pRangeData->HasType( RT_SHARED ) )
345cdf0e10cSrcweir {
346cdf0e10cSrcweir pRangeData->GetName( aString );
347*dffa72deSWang Lei if ( (tabIndex = pRangeData->GetRangeScope() ) != MAXTABCOUNT)
348*dffa72deSWang Lei {
349*dffa72deSWang Lei String tabName;
350*dffa72deSWang Lei pDoc->GetName(tabIndex,tabName);
351*dffa72deSWang Lei if (aString.Len() < SHEETNAMEPOS)
352*dffa72deSWang Lei aString.Expand(SHEETNAMEPOS);
353*dffa72deSWang Lei else
354*dffa72deSWang Lei aString.AppendAscii( " ");
355*dffa72deSWang Lei aString.AppendAscii( "(");
356*dffa72deSWang Lei aString += tabName;
357*dffa72deSWang Lei aString.AppendAscii( ")");
358*dffa72deSWang Lei }
359*dffa72deSWang Lei
360*dffa72deSWang Lei //aEdName.InsertEntry( aString );
361*dffa72deSWang Lei aLBNames.InsertEntry( aString );
362cdf0e10cSrcweir }
363cdf0e10cSrcweir }
364cdf0e10cSrcweir }
365cdf0e10cSrcweir }
366cdf0e10cSrcweir else
367cdf0e10cSrcweir {
368cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd );
369cdf0e10cSrcweir aBtnAdd.Disable();
370cdf0e10cSrcweir aBtnRemove.Disable();
371cdf0e10cSrcweir }
372cdf0e10cSrcweir //-----------------------------------------------------------
373*dffa72deSWang Lei //aEdName.SetUpdateMode( TRUE );
374*dffa72deSWang Lei //aEdName.SetTopEntry(nNamePos);
375*dffa72deSWang Lei //aEdName.Invalidate();
376*dffa72deSWang Lei aLBNames.SetUpdateMode( true );
377*dffa72deSWang Lei aLBNames.SetTopEntry(nNamePos);
378*dffa72deSWang Lei aLBNames.Invalidate();
379cdf0e10cSrcweir }
380cdf0e10cSrcweir
381cdf0e10cSrcweir
382cdf0e10cSrcweir //----------------------------------------------------------------------------
383cdf0e10cSrcweir
CalcCurTableAssign(String & aAssign,sal_uInt16 nCurPos)384cdf0e10cSrcweir void __EXPORT ScNameDlg::CalcCurTableAssign( String& aAssign, sal_uInt16 nCurPos )
385cdf0e10cSrcweir {
386cdf0e10cSrcweir ScRangeData* pRangeData = (ScRangeData*)(aLocalRangeName.At( nCurPos ));
387cdf0e10cSrcweir
388cdf0e10cSrcweir if ( pRangeData )
389cdf0e10cSrcweir {
390cdf0e10cSrcweir rtl::OUStringBuffer sBuffer;
391cdf0e10cSrcweir pRangeData->UpdateSymbol( sBuffer, theCursorPos );
392cdf0e10cSrcweir aAssign = sBuffer;
393cdf0e10cSrcweir }
394cdf0e10cSrcweir else
395cdf0e10cSrcweir {
396cdf0e10cSrcweir aAssign.Erase();
397cdf0e10cSrcweir }
398cdf0e10cSrcweir }
399cdf0e10cSrcweir
400cdf0e10cSrcweir
401cdf0e10cSrcweir //----------------------------------------------------------------------------
402cdf0e10cSrcweir // Handler:
403cdf0e10cSrcweir // ========
404cdf0e10cSrcweir
IMPL_LINK(ScNameDlg,OkBtnHdl,void *,EMPTYARG)405cdf0e10cSrcweir IMPL_LINK( ScNameDlg, OkBtnHdl, void *, EMPTYARG )
406cdf0e10cSrcweir {
407cdf0e10cSrcweir if ( aBtnAdd.IsEnabled() )
408cdf0e10cSrcweir AddBtnHdl( 0 );
409cdf0e10cSrcweir
410cdf0e10cSrcweir if ( !aBtnAdd.IsEnabled() && !aBtnRemove.IsEnabled() )
411cdf0e10cSrcweir {
412cdf0e10cSrcweir ScDocShell* pDocSh = pViewData->GetDocShell();
413cdf0e10cSrcweir ScDocFunc aFunc(*pDocSh);
414cdf0e10cSrcweir aFunc.ModifyRangeNames( aLocalRangeName, sal_False );
415cdf0e10cSrcweir Close();
416cdf0e10cSrcweir }
417cdf0e10cSrcweir return 0;
418cdf0e10cSrcweir }
419cdf0e10cSrcweir
420cdf0e10cSrcweir
421cdf0e10cSrcweir //----------------------------------------------------------------------------
422cdf0e10cSrcweir
IMPL_LINK_INLINE_START(ScNameDlg,CancelBtnHdl,void *,EMPTYARG)423cdf0e10cSrcweir IMPL_LINK_INLINE_START( ScNameDlg, CancelBtnHdl, void *, EMPTYARG )
424cdf0e10cSrcweir {
425cdf0e10cSrcweir Close();
426cdf0e10cSrcweir return 0;
427cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(ScNameDlg,CancelBtnHdl,void *,EMPTYARG)428cdf0e10cSrcweir IMPL_LINK_INLINE_END( ScNameDlg, CancelBtnHdl, void *, EMPTYARG )
429cdf0e10cSrcweir
430cdf0e10cSrcweir
431cdf0e10cSrcweir //----------------------------------------------------------------------------
432cdf0e10cSrcweir
433cdf0e10cSrcweir IMPL_LINK( ScNameDlg, AddBtnHdl, void *, EMPTYARG )
434cdf0e10cSrcweir {
435cdf0e10cSrcweir sal_Bool bAdded = sal_False;
436cdf0e10cSrcweir String aNewEntry = aEdName.GetText();
437*dffa72deSWang Lei //USHORT nNamePos = aEdName.GetTopEntry();
438*dffa72deSWang Lei sal_uInt16 nNamePos = aLBNames.GetTopEntry();
439cdf0e10cSrcweir aNewEntry.EraseLeadingChars( ' ' );
440cdf0e10cSrcweir aNewEntry.EraseTrailingChars( ' ' );
441cdf0e10cSrcweir
442cdf0e10cSrcweir if ( aNewEntry.Len() > 0 )
443cdf0e10cSrcweir {
444cdf0e10cSrcweir if ( ScRangeData::IsNameValid( aNewEntry, pDoc ) )
445cdf0e10cSrcweir {
446cdf0e10cSrcweir if ( pDoc )
447cdf0e10cSrcweir {
448cdf0e10cSrcweir ScRangeData* pNewEntry = NULL;
449cdf0e10cSrcweir RangeType nType = RT_NAME;
450cdf0e10cSrcweir sal_uInt16 nFoundAt = 0;
451cdf0e10cSrcweir String theSymbol = aEdAssign.GetText();
452cdf0e10cSrcweir String aStrPos;
453cdf0e10cSrcweir String aStrArea;
454cdf0e10cSrcweir
455cdf0e10cSrcweir pNewEntry = new ScRangeData( pDoc,
456cdf0e10cSrcweir aNewEntry,
457cdf0e10cSrcweir theSymbol,
458cdf0e10cSrcweir theCursorPos,
459cdf0e10cSrcweir nType );
460*dffa72deSWang Lei if (aBtnAdd.GetText() == aStrModify)
461*dffa72deSWang Lei pNewEntry->SetRangeScope(aSelectedRangeScope);
462*dffa72deSWang Lei else
463*dffa72deSWang Lei aSelectedRangeScope = MAXTABCOUNT;
464cdf0e10cSrcweir if (pNewEntry)
465cdf0e10cSrcweir {
466cdf0e10cSrcweir nType = nType
467cdf0e10cSrcweir | (aBtnRowHeader .IsChecked() ? RT_ROWHEADER : RangeType(0))
468cdf0e10cSrcweir | (aBtnColHeader .IsChecked() ? RT_COLHEADER : RangeType(0))
469cdf0e10cSrcweir | (aBtnPrintArea .IsChecked() ? RT_PRINTAREA : RangeType(0))
470cdf0e10cSrcweir | (aBtnCriteria .IsChecked() ? RT_CRITERIA : RangeType(0));
471cdf0e10cSrcweir pNewEntry->AddType(nType);
472cdf0e10cSrcweir }
473cdf0e10cSrcweir
474cdf0e10cSrcweir // theSymbol gueltig?
475cdf0e10cSrcweir // (= konnte theSymbol im ScRangeData-Ctor
476cdf0e10cSrcweir // in ein Token-Array uebersetzt werden?)
477cdf0e10cSrcweir if ( 0 == pNewEntry->GetErrCode() )
478cdf0e10cSrcweir {
479cdf0e10cSrcweir // Eintrag bereits vorhanden? Dann vorher entfernen (=Aendern)
480*dffa72deSWang Lei if ( aLocalRangeName.SearchName( aNewEntry, nFoundAt, aSelectedRangeScope ) )
481cdf0e10cSrcweir { // alten Index uebernehmen
482cdf0e10cSrcweir pNewEntry->SetIndex(
483cdf0e10cSrcweir ((ScRangeData*)(aLocalRangeName.At(nFoundAt)))->GetIndex() );
484cdf0e10cSrcweir aLocalRangeName.AtFree( nFoundAt );
485cdf0e10cSrcweir }
486cdf0e10cSrcweir else
487cdf0e10cSrcweir pSaveObj->Clear();
488cdf0e10cSrcweir
489cdf0e10cSrcweir if ( !aLocalRangeName.Insert( pNewEntry ) )
490cdf0e10cSrcweir delete pNewEntry;
491cdf0e10cSrcweir
492cdf0e10cSrcweir UpdateNames();
493cdf0e10cSrcweir bSaved=sal_False;
494cdf0e10cSrcweir RESTORE_DATA()
495cdf0e10cSrcweir aEdName.SetText(EMPTY_STRING);
496cdf0e10cSrcweir aEdName.GrabFocus();
497cdf0e10cSrcweir UpdateChecks();
498cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd );
499cdf0e10cSrcweir aBtnAdd.Disable();
500cdf0e10cSrcweir aBtnRemove.Disable();
501cdf0e10cSrcweir
502cdf0e10cSrcweir //@BugID 54702 raus mit dem Sch.
503cdf0e10cSrcweir //SFX_APPWINDOW->Disable(sal_False); //! allgemeine Methode im ScAnyRefDlg
504cdf0e10cSrcweir
505cdf0e10cSrcweir bAdded = sal_True;
506cdf0e10cSrcweir }
507cdf0e10cSrcweir else // theSymbol ungueltig
508cdf0e10cSrcweir {
509cdf0e10cSrcweir delete pNewEntry;
510cdf0e10cSrcweir ERRORBOX( errMsgInvalidSym );
511cdf0e10cSrcweir theCurSel = Selection( 0, SELECTION_MAX );
512cdf0e10cSrcweir aEdAssign.GrabFocus();
513cdf0e10cSrcweir }
514cdf0e10cSrcweir }
515cdf0e10cSrcweir }
516cdf0e10cSrcweir else
517cdf0e10cSrcweir {
518cdf0e10cSrcweir ERRORBOX( ScGlobal::GetRscString(STR_INVALIDNAME) );
519cdf0e10cSrcweir aEdName.SetSelection( Selection( 0, SELECTION_MAX ) );
520cdf0e10cSrcweir aEdName.GrabFocus();
521cdf0e10cSrcweir }
522cdf0e10cSrcweir }
523cdf0e10cSrcweir
524*dffa72deSWang Lei //aEdName.SetTopEntry(nNamePos);
525*dffa72deSWang Lei aLBNames.SetTopEntry(nNamePos);
526cdf0e10cSrcweir return bAdded;
527cdf0e10cSrcweir }
528cdf0e10cSrcweir
529cdf0e10cSrcweir
530cdf0e10cSrcweir //----------------------------------------------------------------------------
531cdf0e10cSrcweir
IMPL_LINK(ScNameDlg,RemoveBtnHdl,void *,EMPTYARG)532cdf0e10cSrcweir IMPL_LINK( ScNameDlg, RemoveBtnHdl, void *, EMPTYARG )
533cdf0e10cSrcweir {
534cdf0e10cSrcweir sal_uInt16 nRemoveAt = 0;
535cdf0e10cSrcweir const String aStrEntry = aEdName.GetText();
536cdf0e10cSrcweir
537*dffa72deSWang Lei if ( aLocalRangeName.SearchName( aStrEntry, nRemoveAt, aSelectedRangeScope ) )
538cdf0e10cSrcweir {
539cdf0e10cSrcweir String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY );
540cdf0e10cSrcweir String aMsg = aStrDelMsg.GetToken( 0, '#' );
541cdf0e10cSrcweir
542cdf0e10cSrcweir aMsg += aStrEntry;
543cdf0e10cSrcweir aMsg += aStrDelMsg.GetToken( 1, '#' );
544cdf0e10cSrcweir
545cdf0e10cSrcweir if ( RET_YES ==
546cdf0e10cSrcweir QueryBox( this, WinBits( WB_YES_NO | WB_DEF_YES ), aMsg ).Execute() )
547cdf0e10cSrcweir {
548cdf0e10cSrcweir aLocalRangeName.AtFree( nRemoveAt );
549cdf0e10cSrcweir UpdateNames();
550cdf0e10cSrcweir UpdateChecks();
551cdf0e10cSrcweir bSaved=sal_False;
552cdf0e10cSrcweir RESTORE_DATA()
553cdf0e10cSrcweir theCurSel = Selection( 0, SELECTION_MAX );
554*dffa72deSWang Lei aEdName.SetText(EMPTY_STRING);
555cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd );
556cdf0e10cSrcweir aBtnAdd.Disable();
557cdf0e10cSrcweir aBtnRemove.Disable();
558cdf0e10cSrcweir }
559cdf0e10cSrcweir }
560cdf0e10cSrcweir return 0;
561cdf0e10cSrcweir }
562cdf0e10cSrcweir
563cdf0e10cSrcweir
564cdf0e10cSrcweir //----------------------------------------------------------------------------
565cdf0e10cSrcweir
IMPL_LINK(ScNameDlg,NameSelectHdl,void *,EMPTYARG)566cdf0e10cSrcweir IMPL_LINK( ScNameDlg, NameSelectHdl, void *, EMPTYARG )
567cdf0e10cSrcweir {
568cdf0e10cSrcweir sal_uInt16 nAtPos;
569*dffa72deSWang Lei String rangeName = aLBNames.GetSelectEntry();
570*dffa72deSWang Lei if ( ')' == rangeName.GetChar(rangeName.Len()-1) )
571*dffa72deSWang Lei {
572*dffa72deSWang Lei xub_StrLen sheetNamePos = rangeName.Search('(');
573*dffa72deSWang Lei String sheetName(rangeName, sheetNamePos+1, rangeName.Len()-2-sheetNamePos);
574*dffa72deSWang Lei pDoc->GetTable(sheetName,aSelectedRangeScope);
575*dffa72deSWang Lei rangeName.Erase(sheetNamePos);
576*dffa72deSWang Lei rangeName.EraseTrailingChars();
577*dffa72deSWang Lei
578*dffa72deSWang Lei }
579*dffa72deSWang Lei else
580*dffa72deSWang Lei aSelectedRangeScope = MAXTABCOUNT;
581cdf0e10cSrcweir
582*dffa72deSWang Lei //if ( aLocalRangeName.SearchName( aEdName.GetText(), nAtPos ) )
583*dffa72deSWang Lei if ( aLocalRangeName.SearchName( rangeName, nAtPos, aSelectedRangeScope ) )
584cdf0e10cSrcweir {
585cdf0e10cSrcweir String aSymbol;
586cdf0e10cSrcweir ScRangeData* pData = (ScRangeData*)(aLocalRangeName.At( nAtPos ));
587cdf0e10cSrcweir
588cdf0e10cSrcweir if ( pData )
589cdf0e10cSrcweir {
590cdf0e10cSrcweir pData->GetSymbol( aSymbol );
591cdf0e10cSrcweir CalcCurTableAssign( aSymbol, nAtPos );
592*dffa72deSWang Lei aEdAssign.SetText( aSymbol );
593cdf0e10cSrcweir aBtnAdd.SetText( aStrModify );
594*dffa72deSWang Lei aEdName.SetText(rangeName);
595cdf0e10cSrcweir theCurSel = Selection( 0, SELECTION_MAX );
596*dffa72deSWang Lei aBtnAdd.SetText( aStrModify );
597*dffa72deSWang Lei aBtnAdd.Enable();
598*dffa72deSWang Lei aBtnRemove.Enable();
599cdf0e10cSrcweir }
600cdf0e10cSrcweir }
601cdf0e10cSrcweir UpdateChecks();
602cdf0e10cSrcweir return 0;
603cdf0e10cSrcweir }
604cdf0e10cSrcweir
605cdf0e10cSrcweir
606cdf0e10cSrcweir //----------------------------------------------------------------------------
607cdf0e10cSrcweir
IMPL_LINK(ScNameDlg,EdModifyHdl,Edit *,pEd)608cdf0e10cSrcweir IMPL_LINK( ScNameDlg, EdModifyHdl, Edit *, pEd )
609cdf0e10cSrcweir {
610cdf0e10cSrcweir String theName = aEdName.GetText();
611cdf0e10cSrcweir String theSymbol = aEdAssign.GetText();
612*dffa72deSWang Lei bool bNameFound = (LISTBOX_ENTRY_NOTFOUND
613*dffa72deSWang Lei != aLBNames.GetEntryPos( theName ));
614cdf0e10cSrcweir
615cdf0e10cSrcweir if ( pEd == &aEdName )
616cdf0e10cSrcweir {
617cdf0e10cSrcweir if ( theName.Len() == 0 )
618cdf0e10cSrcweir {
619cdf0e10cSrcweir if ( aBtnAdd.GetText() != aStrAdd )
620cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd );
621cdf0e10cSrcweir aBtnAdd.Disable();
622cdf0e10cSrcweir aBtnRemove.Disable();
623cdf0e10cSrcweir aFlAssign.Disable();
624cdf0e10cSrcweir aEdAssign.Disable();
625cdf0e10cSrcweir aRbAssign.Disable();
626cdf0e10cSrcweir //@BugID 54702 raus mit dem Sch.
627cdf0e10cSrcweir //SFX_APPWINDOW->Disable(sal_False); //! allgemeine Methode im ScAnyRefDlg
628cdf0e10cSrcweir }
629cdf0e10cSrcweir else
630cdf0e10cSrcweir {
631*dffa72deSWang Lei /*
632cdf0e10cSrcweir if ( bNameFound )
633cdf0e10cSrcweir {
634cdf0e10cSrcweir if ( aBtnAdd.GetText() != aStrModify )
635cdf0e10cSrcweir aBtnAdd.SetText( aStrModify );
636cdf0e10cSrcweir
637cdf0e10cSrcweir aBtnRemove.Enable();
638cdf0e10cSrcweir
639cdf0e10cSrcweir if(!bSaved)
640cdf0e10cSrcweir {
641*dffa72deSWang Lei bSaved=TRUE;
642cdf0e10cSrcweir SAVE_DATA()
643cdf0e10cSrcweir }
644cdf0e10cSrcweir NameSelectHdl( 0 );
645cdf0e10cSrcweir }
646cdf0e10cSrcweir else
647cdf0e10cSrcweir {
648cdf0e10cSrcweir if ( aBtnAdd.GetText() != aStrAdd )
649cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd );
650cdf0e10cSrcweir aBtnRemove.Disable();
651cdf0e10cSrcweir
652*dffa72deSWang Lei bSaved=FALSE;
653cdf0e10cSrcweir RESTORE_DATA()
654cdf0e10cSrcweir }
655*dffa72deSWang Lei */
656*dffa72deSWang Lei
657*dffa72deSWang Lei if ( aBtnAdd.GetText() != aStrAdd )
658*dffa72deSWang Lei aBtnAdd.SetText( aStrAdd );
659cdf0e10cSrcweir theSymbol = aEdAssign.GetText();
660cdf0e10cSrcweir
661cdf0e10cSrcweir if ( theSymbol.Len() > 0 )
662cdf0e10cSrcweir aBtnAdd.Enable();
663cdf0e10cSrcweir else
664cdf0e10cSrcweir aBtnAdd.Disable();
665cdf0e10cSrcweir
666cdf0e10cSrcweir aFlAssign.Enable();
667cdf0e10cSrcweir aEdAssign.Enable();
668cdf0e10cSrcweir aRbAssign.Enable();
669*dffa72deSWang Lei aBtnRemove.Disable();
670cdf0e10cSrcweir //@BugID 54702 raus mit dem Sch.
671cdf0e10cSrcweir //SFX_APPWINDOW->Enable();
672cdf0e10cSrcweir }
673cdf0e10cSrcweir UpdateChecks();
674cdf0e10cSrcweir theCurSel = Selection( 0, SELECTION_MAX );
675cdf0e10cSrcweir }
676cdf0e10cSrcweir else if ( pEd == &aEdAssign )
677cdf0e10cSrcweir {
678cdf0e10cSrcweir if ( (theName.Len()>0) && (theSymbol.Len()>0) )
679cdf0e10cSrcweir {
680cdf0e10cSrcweir aBtnAdd.Enable();
681cdf0e10cSrcweir if ( bNameFound )
682cdf0e10cSrcweir aBtnRemove.Enable();
683cdf0e10cSrcweir }
684cdf0e10cSrcweir else
685cdf0e10cSrcweir {
686cdf0e10cSrcweir aBtnAdd.Disable();
687cdf0e10cSrcweir aBtnRemove.Disable();
688cdf0e10cSrcweir }
689cdf0e10cSrcweir }
690cdf0e10cSrcweir return 0;
691cdf0e10cSrcweir }
692cdf0e10cSrcweir
693cdf0e10cSrcweir //------------------------------------------------------------------------
694cdf0e10cSrcweir
IMPL_LINK_INLINE_START(ScNameDlg,AssignGetFocusHdl,void *,EMPTYARG)695cdf0e10cSrcweir IMPL_LINK_INLINE_START( ScNameDlg, AssignGetFocusHdl, void *, EMPTYARG )
696cdf0e10cSrcweir {
697cdf0e10cSrcweir EdModifyHdl( &aEdAssign );
698cdf0e10cSrcweir return 0;
699cdf0e10cSrcweir }
700cdf0e10cSrcweir IMPL_LINK_INLINE_END( ScNameDlg, AssignGetFocusHdl, void *, EMPTYARG )
701cdf0e10cSrcweir
702cdf0e10cSrcweir
703