xref: /aoo4110/main/sc/source/ui/miscdlgs/instbdlg.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 #undef SC_DLLIMPLEMENTATION
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
34*b1cdbd2cSJim Jagielski #include <sfx2/docfile.hxx>
35*b1cdbd2cSJim Jagielski #include <sfx2/docinsert.hxx>
36*b1cdbd2cSJim Jagielski #include <sfx2/filedlghelper.hxx>
37*b1cdbd2cSJim Jagielski #include <svtools/ehdl.hxx>
38*b1cdbd2cSJim Jagielski #include <svtools/sfxecode.hxx>
39*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski #include "global.hxx"
42*b1cdbd2cSJim Jagielski #include "docsh.hxx"
43*b1cdbd2cSJim Jagielski #include "viewdata.hxx"
44*b1cdbd2cSJim Jagielski #include "scresid.hxx"
45*b1cdbd2cSJim Jagielski #include "instbdlg.hrc"
46*b1cdbd2cSJim Jagielski #include "globstr.hrc"
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski #define SC_INSTBDLG_CXX
49*b1cdbd2cSJim Jagielski #include "instbdlg.hxx"
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski #include <layout/layout-pre.hxx>
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski #if ENABLE_LAYOUT
54*b1cdbd2cSJim Jagielski #undef ScResId
55*b1cdbd2cSJim Jagielski #define ScResId(x) #x
56*b1cdbd2cSJim Jagielski #undef ModalDialog
57*b1cdbd2cSJim Jagielski #define ModalDialog( parent, id ) Dialog( parent, "insert-sheet.xml", id )
58*b1cdbd2cSJim Jagielski #undef ErrorBox
59*b1cdbd2cSJim Jagielski #define ErrorBox( this, bits, message ) ErrorBox (LAYOUT_THIS_WINDOW (this), bits, message)
60*b1cdbd2cSJim Jagielski #endif /* ENABLE_LAYOUT */
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski //==================================================================
63*b1cdbd2cSJim Jagielski 
ScInsertTableDlg(Window * pParent,ScViewData & rData,SCTAB nTabCount,bool bFromFile)64*b1cdbd2cSJim Jagielski ScInsertTableDlg::ScInsertTableDlg( Window* pParent, ScViewData& rData, SCTAB nTabCount, bool bFromFile )
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski 	:	ModalDialog ( pParent, ScResId( RID_SCDLG_INSERT_TABLE ) ),
67*b1cdbd2cSJim Jagielski 		//
68*b1cdbd2cSJim Jagielski 		aFlPos			( this, ScResId( FL_POSITION ) ),
69*b1cdbd2cSJim Jagielski 		aBtnBefore		( this, ScResId( RB_BEFORE ) ),
70*b1cdbd2cSJim Jagielski 		aBtnBehind		( this, ScResId( RB_BEHIND ) ),
71*b1cdbd2cSJim Jagielski 		aFlTable    	( this, ScResId( FL_TABLE ) ),
72*b1cdbd2cSJim Jagielski 		aBtnNew   		( this, ScResId( RB_NEW ) ),
73*b1cdbd2cSJim Jagielski 		aBtnFromFile    ( this, ScResId( RB_FROMFILE ) ),
74*b1cdbd2cSJim Jagielski 		aFtCount		( this, ScResId( FT_COUNT ) ),
75*b1cdbd2cSJim Jagielski 		aNfCount		( this, ScResId( NF_COUNT ) ),
76*b1cdbd2cSJim Jagielski 		aFtName			( this, ScResId( FT_NAME ) ),
77*b1cdbd2cSJim Jagielski 		aEdName			( this, ScResId( ED_TABNAME ) ),
78*b1cdbd2cSJim Jagielski 		aLbTables		( this, ScResId( LB_TABLES ) ),
79*b1cdbd2cSJim Jagielski 		aFtPath			( this, ScResId( FT_PATH ) ),
80*b1cdbd2cSJim Jagielski 		aBtnBrowse		( this, ScResId( BTN_BROWSE ) ),
81*b1cdbd2cSJim Jagielski 		aBtnLink		( this, ScResId( CB_LINK ) ),
82*b1cdbd2cSJim Jagielski 		aBtnOk			( this, ScResId( BTN_OK ) ),
83*b1cdbd2cSJim Jagielski 		aBtnCancel		( this, ScResId( BTN_CANCEL ) ),
84*b1cdbd2cSJim Jagielski 		aBtnHelp		( this, ScResId( BTN_HELP ) ),
85*b1cdbd2cSJim Jagielski 		rViewData		( rData ),
86*b1cdbd2cSJim Jagielski 		rDoc			( *rData.GetDocument() ),
87*b1cdbd2cSJim Jagielski 		pDocShTables	( NULL ),
88*b1cdbd2cSJim Jagielski         pDocInserter    ( NULL ),
89*b1cdbd2cSJim Jagielski         bMustClose      ( false ),
90*b1cdbd2cSJim Jagielski 		nSelTabIndex	( 0 ),
91*b1cdbd2cSJim Jagielski 		nTableCount		(nTabCount)
92*b1cdbd2cSJim Jagielski {
93*b1cdbd2cSJim Jagielski #if ENABLE_LAYOUT
94*b1cdbd2cSJim Jagielski     SetHelpId (SID_INSERT_TABLE);
95*b1cdbd2cSJim Jagielski     aFtPath.SetText (EMPTY_STRING);
96*b1cdbd2cSJim Jagielski #endif /* ENABLE_LAYOUT */
97*b1cdbd2cSJim Jagielski     Init_Impl( bFromFile );
98*b1cdbd2cSJim Jagielski 	FreeResource();
99*b1cdbd2cSJim Jagielski 	aLbTables.SetAccessibleName(aBtnFromFile.GetText());
100*b1cdbd2cSJim Jagielski }
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
103*b1cdbd2cSJim Jagielski 
~ScInsertTableDlg()104*b1cdbd2cSJim Jagielski __EXPORT ScInsertTableDlg::~ScInsertTableDlg()
105*b1cdbd2cSJim Jagielski {
106*b1cdbd2cSJim Jagielski 	if (pDocShTables)
107*b1cdbd2cSJim Jagielski 		pDocShTables->DoClose();
108*b1cdbd2cSJim Jagielski     delete pDocInserter;
109*b1cdbd2cSJim Jagielski }
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
112*b1cdbd2cSJim Jagielski 
Init_Impl(bool bFromFile)113*b1cdbd2cSJim Jagielski void ScInsertTableDlg::Init_Impl( bool bFromFile )
114*b1cdbd2cSJim Jagielski {
115*b1cdbd2cSJim Jagielski 	aBtnBrowse		.SetClickHdl( LINK( this, ScInsertTableDlg, BrowseHdl_Impl ) );
116*b1cdbd2cSJim Jagielski 	aBtnNew			.SetClickHdl( LINK( this, ScInsertTableDlg, ChoiceHdl_Impl ) );
117*b1cdbd2cSJim Jagielski 	aBtnFromFile	.SetClickHdl( LINK( this, ScInsertTableDlg, ChoiceHdl_Impl ) );
118*b1cdbd2cSJim Jagielski 	aLbTables		.SetSelectHdl( LINK( this, ScInsertTableDlg, SelectHdl_Impl ) );
119*b1cdbd2cSJim Jagielski 	aNfCount		.SetModifyHdl( LINK( this, ScInsertTableDlg, CountHdl_Impl));
120*b1cdbd2cSJim Jagielski 	aBtnOk			.SetClickHdl( LINK( this, ScInsertTableDlg, DoEnterHdl ));
121*b1cdbd2cSJim Jagielski 	aBtnBefore.Check();
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski 	aNfCount.SetText( String::CreateFromInt32(nTableCount) );
124*b1cdbd2cSJim Jagielski 	aNfCount.SetMax( MAXTAB - rDoc.GetTableCount() + 1 );
125*b1cdbd2cSJim Jagielski 
126*b1cdbd2cSJim Jagielski 	if(nTableCount==1)
127*b1cdbd2cSJim Jagielski 	{
128*b1cdbd2cSJim Jagielski 		String aName;
129*b1cdbd2cSJim Jagielski 		rDoc.CreateValidTabName( aName );
130*b1cdbd2cSJim Jagielski 		aEdName.SetText( aName );
131*b1cdbd2cSJim Jagielski 	}
132*b1cdbd2cSJim Jagielski 	else
133*b1cdbd2cSJim Jagielski 	{
134*b1cdbd2cSJim Jagielski 		String aName=aFlTable.GetText();
135*b1cdbd2cSJim Jagielski 		aName.AppendAscii(RTL_CONSTASCII_STRINGPARAM("..."));
136*b1cdbd2cSJim Jagielski 		aEdName.SetText( aName );
137*b1cdbd2cSJim Jagielski 		aFtName.Disable();
138*b1cdbd2cSJim Jagielski 		aEdName.Disable();
139*b1cdbd2cSJim Jagielski 	}
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski     bool bShared = ( rViewData.GetDocShell() ? rViewData.GetDocShell()->IsDocShared() : false );
142*b1cdbd2cSJim Jagielski 
143*b1cdbd2cSJim Jagielski     if ( !bFromFile || bShared )
144*b1cdbd2cSJim Jagielski     {
145*b1cdbd2cSJim Jagielski         aBtnNew.Check();
146*b1cdbd2cSJim Jagielski         SetNewTable_Impl();
147*b1cdbd2cSJim Jagielski         if ( bShared )
148*b1cdbd2cSJim Jagielski         {
149*b1cdbd2cSJim Jagielski             aBtnFromFile.Disable();
150*b1cdbd2cSJim Jagielski         }
151*b1cdbd2cSJim Jagielski     }
152*b1cdbd2cSJim Jagielski     else
153*b1cdbd2cSJim Jagielski     {
154*b1cdbd2cSJim Jagielski         aBtnFromFile.Check();
155*b1cdbd2cSJim Jagielski         SetFromTo_Impl();
156*b1cdbd2cSJim Jagielski 
157*b1cdbd2cSJim Jagielski         aBrowseTimer.SetTimeoutHdl( LINK( this, ScInsertTableDlg, BrowseTimeoutHdl ) );
158*b1cdbd2cSJim Jagielski         aBrowseTimer.SetTimeout( 200 );
159*b1cdbd2cSJim Jagielski     }
160*b1cdbd2cSJim Jagielski }
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski #if ENABLE_LAYOUT
165*b1cdbd2cSJim Jagielski #undef ModalDialog
166*b1cdbd2cSJim Jagielski #define ModalDialog Dialog
167*b1cdbd2cSJim Jagielski #endif /* ENABLE_LAYOUT */
168*b1cdbd2cSJim Jagielski 
Execute()169*b1cdbd2cSJim Jagielski short __EXPORT ScInsertTableDlg::Execute()
170*b1cdbd2cSJim Jagielski {
171*b1cdbd2cSJim Jagielski     // set Parent of DocumentInserter and Doc-Manager
172*b1cdbd2cSJim Jagielski 	Window*	pOldDefParent = Application::GetDefDialogParent();
173*b1cdbd2cSJim Jagielski 	Application::SetDefDialogParent( LAYOUT_THIS_WINDOW (this) );
174*b1cdbd2cSJim Jagielski 
175*b1cdbd2cSJim Jagielski     if ( aBtnFromFile.IsChecked() )
176*b1cdbd2cSJim Jagielski         aBrowseTimer.Start();
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski     short nRet = ModalDialog::Execute();
179*b1cdbd2cSJim Jagielski 	Application::SetDefDialogParent( pOldDefParent );
180*b1cdbd2cSJim Jagielski 	return nRet;
181*b1cdbd2cSJim Jagielski }
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
184*b1cdbd2cSJim Jagielski 
SetNewTable_Impl()185*b1cdbd2cSJim Jagielski void ScInsertTableDlg::SetNewTable_Impl()
186*b1cdbd2cSJim Jagielski {
187*b1cdbd2cSJim Jagielski 	if (aBtnNew.IsChecked() )
188*b1cdbd2cSJim Jagielski 	{
189*b1cdbd2cSJim Jagielski 		aNfCount	.Enable();
190*b1cdbd2cSJim Jagielski 		aFtCount	.Enable();
191*b1cdbd2cSJim Jagielski 		aLbTables	.Disable();
192*b1cdbd2cSJim Jagielski 		aFtPath		.Disable();
193*b1cdbd2cSJim Jagielski 		aBtnBrowse	.Disable();
194*b1cdbd2cSJim Jagielski 		aBtnLink	.Disable();
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski 		if(nTableCount==1)
197*b1cdbd2cSJim Jagielski 		{
198*b1cdbd2cSJim Jagielski 			aEdName.Enable();
199*b1cdbd2cSJim Jagielski 			aFtName.Enable();
200*b1cdbd2cSJim Jagielski 		}
201*b1cdbd2cSJim Jagielski 	}
202*b1cdbd2cSJim Jagielski }
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
205*b1cdbd2cSJim Jagielski 
SetFromTo_Impl()206*b1cdbd2cSJim Jagielski void ScInsertTableDlg::SetFromTo_Impl()
207*b1cdbd2cSJim Jagielski {
208*b1cdbd2cSJim Jagielski 	if (aBtnFromFile.IsChecked() )
209*b1cdbd2cSJim Jagielski 	{
210*b1cdbd2cSJim Jagielski 		aEdName		.Disable();
211*b1cdbd2cSJim Jagielski 		aFtName		.Disable();
212*b1cdbd2cSJim Jagielski 		aFtCount	.Disable();
213*b1cdbd2cSJim Jagielski 		aNfCount	.Disable();
214*b1cdbd2cSJim Jagielski 		aLbTables	.Enable();
215*b1cdbd2cSJim Jagielski 		aFtPath		.Enable();
216*b1cdbd2cSJim Jagielski 		aBtnBrowse	.Enable();
217*b1cdbd2cSJim Jagielski 		aBtnLink	.Enable();
218*b1cdbd2cSJim Jagielski 	}
219*b1cdbd2cSJim Jagielski }
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
222*b1cdbd2cSJim Jagielski 
FillTables_Impl(ScDocument * pSrcDoc)223*b1cdbd2cSJim Jagielski void ScInsertTableDlg::FillTables_Impl( ScDocument* pSrcDoc )
224*b1cdbd2cSJim Jagielski {
225*b1cdbd2cSJim Jagielski 	aLbTables.SetUpdateMode( sal_False );
226*b1cdbd2cSJim Jagielski 	aLbTables.Clear();
227*b1cdbd2cSJim Jagielski 
228*b1cdbd2cSJim Jagielski 	if ( pSrcDoc )
229*b1cdbd2cSJim Jagielski 	{
230*b1cdbd2cSJim Jagielski 		SCTAB nCount = pSrcDoc->GetTableCount();
231*b1cdbd2cSJim Jagielski 		String aName;
232*b1cdbd2cSJim Jagielski 
233*b1cdbd2cSJim Jagielski 		for ( SCTAB i=0; i<nCount; i++ )
234*b1cdbd2cSJim Jagielski 		{
235*b1cdbd2cSJim Jagielski 			pSrcDoc->GetName( i, aName );
236*b1cdbd2cSJim Jagielski 			aLbTables.InsertEntry( aName );
237*b1cdbd2cSJim Jagielski 		}
238*b1cdbd2cSJim Jagielski 	}
239*b1cdbd2cSJim Jagielski 
240*b1cdbd2cSJim Jagielski 	aLbTables.SetUpdateMode( sal_True );
241*b1cdbd2cSJim Jagielski 
242*b1cdbd2cSJim Jagielski 	if(aLbTables.GetEntryCount()==1)
243*b1cdbd2cSJim Jagielski 		aLbTables.SelectEntryPos(0);
244*b1cdbd2cSJim Jagielski }
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
247*b1cdbd2cSJim Jagielski 
GetFirstTable(sal_uInt16 * pN)248*b1cdbd2cSJim Jagielski const String* ScInsertTableDlg::GetFirstTable( sal_uInt16* pN )
249*b1cdbd2cSJim Jagielski {
250*b1cdbd2cSJim Jagielski 	const String* pStr = NULL;
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski 	if ( aBtnNew.IsChecked() )
253*b1cdbd2cSJim Jagielski 	{
254*b1cdbd2cSJim Jagielski 		aStrCurSelTable = aEdName.GetText();
255*b1cdbd2cSJim Jagielski 		pStr = &aStrCurSelTable;
256*b1cdbd2cSJim Jagielski 	}
257*b1cdbd2cSJim Jagielski 	else if ( nSelTabIndex < aLbTables.GetSelectEntryCount() )
258*b1cdbd2cSJim Jagielski 	{
259*b1cdbd2cSJim Jagielski 		aStrCurSelTable = aLbTables.GetSelectEntry( 0 );
260*b1cdbd2cSJim Jagielski 		pStr = &aStrCurSelTable;
261*b1cdbd2cSJim Jagielski 		if ( pN )
262*b1cdbd2cSJim Jagielski 			*pN = aLbTables.GetSelectEntryPos( 0 );
263*b1cdbd2cSJim Jagielski 		nSelTabIndex = 1;
264*b1cdbd2cSJim Jagielski 	}
265*b1cdbd2cSJim Jagielski 
266*b1cdbd2cSJim Jagielski 	return pStr;
267*b1cdbd2cSJim Jagielski }
268*b1cdbd2cSJim Jagielski 
269*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
270*b1cdbd2cSJim Jagielski 
GetNextTable(sal_uInt16 * pN)271*b1cdbd2cSJim Jagielski const String* ScInsertTableDlg::GetNextTable( sal_uInt16* pN )
272*b1cdbd2cSJim Jagielski {
273*b1cdbd2cSJim Jagielski 	const String* pStr = NULL;
274*b1cdbd2cSJim Jagielski 
275*b1cdbd2cSJim Jagielski 	if ( !aBtnNew.IsChecked() && nSelTabIndex < aLbTables.GetSelectEntryCount() )
276*b1cdbd2cSJim Jagielski 	{
277*b1cdbd2cSJim Jagielski 		aStrCurSelTable = aLbTables.GetSelectEntry( nSelTabIndex );
278*b1cdbd2cSJim Jagielski 		pStr = &aStrCurSelTable;
279*b1cdbd2cSJim Jagielski 		if ( pN )
280*b1cdbd2cSJim Jagielski 			*pN = aLbTables.GetSelectEntryPos( nSelTabIndex );
281*b1cdbd2cSJim Jagielski 		nSelTabIndex++;
282*b1cdbd2cSJim Jagielski 	}
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski 	return pStr;
285*b1cdbd2cSJim Jagielski }
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
289*b1cdbd2cSJim Jagielski // Handler:
290*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
291*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScInsertTableDlg,CountHdl_Impl,NumericField *,EMPTYARG)292*b1cdbd2cSJim Jagielski IMPL_LINK( ScInsertTableDlg, CountHdl_Impl, NumericField*, EMPTYARG )
293*b1cdbd2cSJim Jagielski {
294*b1cdbd2cSJim Jagielski     nTableCount = static_cast<SCTAB>(aNfCount.GetValue());
295*b1cdbd2cSJim Jagielski 	if ( nTableCount==1)
296*b1cdbd2cSJim Jagielski 	{
297*b1cdbd2cSJim Jagielski 		String aName;
298*b1cdbd2cSJim Jagielski 		rDoc.CreateValidTabName( aName );
299*b1cdbd2cSJim Jagielski 		aEdName.SetText( aName );
300*b1cdbd2cSJim Jagielski 		aFtName.Enable();
301*b1cdbd2cSJim Jagielski 		aEdName.Enable();
302*b1cdbd2cSJim Jagielski 	}
303*b1cdbd2cSJim Jagielski 	else
304*b1cdbd2cSJim Jagielski 	{
305*b1cdbd2cSJim Jagielski 		String aName=aFlTable.GetText();
306*b1cdbd2cSJim Jagielski 		aName.AppendAscii(RTL_CONSTASCII_STRINGPARAM("..."));
307*b1cdbd2cSJim Jagielski 		aEdName.SetText( aName );
308*b1cdbd2cSJim Jagielski 		aFtName.Disable();
309*b1cdbd2cSJim Jagielski 		aEdName.Disable();
310*b1cdbd2cSJim Jagielski 	}
311*b1cdbd2cSJim Jagielski 
312*b1cdbd2cSJim Jagielski 	DoEnable_Impl();
313*b1cdbd2cSJim Jagielski 	return 0;
314*b1cdbd2cSJim Jagielski }
315*b1cdbd2cSJim Jagielski 
316*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
IMPL_LINK(ScInsertTableDlg,ChoiceHdl_Impl,RadioButton *,EMPTYARG)317*b1cdbd2cSJim Jagielski IMPL_LINK( ScInsertTableDlg, ChoiceHdl_Impl, RadioButton*, EMPTYARG )
318*b1cdbd2cSJim Jagielski {
319*b1cdbd2cSJim Jagielski 	if ( aBtnNew.IsChecked() )
320*b1cdbd2cSJim Jagielski 		SetNewTable_Impl();
321*b1cdbd2cSJim Jagielski 	else
322*b1cdbd2cSJim Jagielski 		SetFromTo_Impl();
323*b1cdbd2cSJim Jagielski 
324*b1cdbd2cSJim Jagielski 	DoEnable_Impl();
325*b1cdbd2cSJim Jagielski 	return 0;
326*b1cdbd2cSJim Jagielski }
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
329*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScInsertTableDlg,BrowseHdl_Impl,PushButton *,EMPTYARG)330*b1cdbd2cSJim Jagielski IMPL_LINK( ScInsertTableDlg, BrowseHdl_Impl, PushButton*, EMPTYARG )
331*b1cdbd2cSJim Jagielski {
332*b1cdbd2cSJim Jagielski     if ( pDocInserter )
333*b1cdbd2cSJim Jagielski         delete pDocInserter;
334*b1cdbd2cSJim Jagielski     pDocInserter = new ::sfx2::DocumentInserter(
335*b1cdbd2cSJim Jagielski             0, String::CreateFromAscii( ScDocShell::Factory().GetShortName() ) );
336*b1cdbd2cSJim Jagielski     pDocInserter->StartExecuteModal( LINK( this, ScInsertTableDlg, DialogClosedHdl ) );
337*b1cdbd2cSJim Jagielski     return 0;
338*b1cdbd2cSJim Jagielski }
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
341*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScInsertTableDlg,SelectHdl_Impl,MultiListBox *,EMPTYARG)342*b1cdbd2cSJim Jagielski IMPL_LINK( ScInsertTableDlg, SelectHdl_Impl, MultiListBox*, EMPTYARG )
343*b1cdbd2cSJim Jagielski {
344*b1cdbd2cSJim Jagielski 	DoEnable_Impl();
345*b1cdbd2cSJim Jagielski 	return 0;
346*b1cdbd2cSJim Jagielski }
347*b1cdbd2cSJim Jagielski 
348*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
349*b1cdbd2cSJim Jagielski 
DoEnable_Impl()350*b1cdbd2cSJim Jagielski void ScInsertTableDlg::DoEnable_Impl()
351*b1cdbd2cSJim Jagielski {
352*b1cdbd2cSJim Jagielski 	if ( aBtnNew.IsChecked() || ( pDocShTables && aLbTables.GetSelectEntryCount() ) )
353*b1cdbd2cSJim Jagielski 		aBtnOk.Enable();
354*b1cdbd2cSJim Jagielski 	else
355*b1cdbd2cSJim Jagielski 		aBtnOk.Disable();
356*b1cdbd2cSJim Jagielski }
357*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScInsertTableDlg,DoEnterHdl,PushButton *,EMPTYARG)358*b1cdbd2cSJim Jagielski IMPL_LINK( ScInsertTableDlg, DoEnterHdl, PushButton*, EMPTYARG )
359*b1cdbd2cSJim Jagielski {
360*b1cdbd2cSJim Jagielski 	if(nTableCount > 1 || rDoc.ValidTabName(aEdName.GetText()))
361*b1cdbd2cSJim Jagielski 	{
362*b1cdbd2cSJim Jagielski 		EndDialog(RET_OK);
363*b1cdbd2cSJim Jagielski 	}
364*b1cdbd2cSJim Jagielski 	else
365*b1cdbd2cSJim Jagielski 	{
366*b1cdbd2cSJim Jagielski 		String aErrMsg ( ScGlobal::GetRscString( STR_INVALIDTABNAME ) );
367*b1cdbd2cSJim Jagielski 		(void)ErrorBox( this,WinBits( WB_OK | WB_DEF_OK ),aErrMsg).Execute();
368*b1cdbd2cSJim Jagielski 	}
369*b1cdbd2cSJim Jagielski 	return 0;
370*b1cdbd2cSJim Jagielski }
371*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScInsertTableDlg,BrowseTimeoutHdl,Timer *,EMPTYARG)372*b1cdbd2cSJim Jagielski IMPL_LINK( ScInsertTableDlg, BrowseTimeoutHdl, Timer*, EMPTYARG )
373*b1cdbd2cSJim Jagielski {
374*b1cdbd2cSJim Jagielski     bMustClose = true;
375*b1cdbd2cSJim Jagielski     BrowseHdl_Impl( &aBtnBrowse );
376*b1cdbd2cSJim Jagielski     return 0;
377*b1cdbd2cSJim Jagielski }
378*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScInsertTableDlg,DialogClosedHdl,sfx2::FileDialogHelper *,_pFileDlg)379*b1cdbd2cSJim Jagielski IMPL_LINK( ScInsertTableDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg )
380*b1cdbd2cSJim Jagielski {
381*b1cdbd2cSJim Jagielski     if ( ERRCODE_NONE == _pFileDlg->GetError() )
382*b1cdbd2cSJim Jagielski     {
383*b1cdbd2cSJim Jagielski         SfxMedium* pMed = pDocInserter->CreateMedium();
384*b1cdbd2cSJim Jagielski         if ( pMed )
385*b1cdbd2cSJim Jagielski         {
386*b1cdbd2cSJim Jagielski             //  ERRCTX_SFX_OPENDOC -> "Fehler beim Laden des Dokumentes"
387*b1cdbd2cSJim Jagielski             SfxErrorContext aEc( ERRCTX_SFX_OPENDOC, pMed->GetName() );
388*b1cdbd2cSJim Jagielski 
389*b1cdbd2cSJim Jagielski             if ( pDocShTables )
390*b1cdbd2cSJim Jagielski                 pDocShTables->DoClose();        // delete passiert beim Zuweisen auf die Ref
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski             pMed->UseInteractionHandler( sal_True );    // to enable the filter options dialog
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski             pDocShTables = new ScDocShell;
395*b1cdbd2cSJim Jagielski             aDocShTablesRef = pDocShTables;
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski             Pointer aOldPtr( GetPointer() );
398*b1cdbd2cSJim Jagielski             SetPointer( Pointer( POINTER_WAIT ) );
399*b1cdbd2cSJim Jagielski             pDocShTables->DoLoad( pMed );
400*b1cdbd2cSJim Jagielski             SetPointer( aOldPtr );
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski             sal_uLong nErr = pDocShTables->GetErrorCode();
403*b1cdbd2cSJim Jagielski             if ( nErr )
404*b1cdbd2cSJim Jagielski                 ErrorHandler::HandleError( nErr );              // auch Warnings
405*b1cdbd2cSJim Jagielski 
406*b1cdbd2cSJim Jagielski             if ( !pDocShTables->GetError() )                    // nur Errors
407*b1cdbd2cSJim Jagielski             {
408*b1cdbd2cSJim Jagielski                 FillTables_Impl( pDocShTables->GetDocument() );
409*b1cdbd2cSJim Jagielski                 aFtPath.SetText( pDocShTables->GetTitle( SFX_TITLE_FULLNAME ) );
410*b1cdbd2cSJim Jagielski             }
411*b1cdbd2cSJim Jagielski             else
412*b1cdbd2cSJim Jagielski             {
413*b1cdbd2cSJim Jagielski                 pDocShTables->DoClose();
414*b1cdbd2cSJim Jagielski                 aDocShTablesRef.Clear();
415*b1cdbd2cSJim Jagielski                 pDocShTables = NULL;
416*b1cdbd2cSJim Jagielski 
417*b1cdbd2cSJim Jagielski                 FillTables_Impl( NULL );
418*b1cdbd2cSJim Jagielski                 aFtPath.SetText( EMPTY_STRING );
419*b1cdbd2cSJim Jagielski             }
420*b1cdbd2cSJim Jagielski         }
421*b1cdbd2cSJim Jagielski 
422*b1cdbd2cSJim Jagielski         DoEnable_Impl();
423*b1cdbd2cSJim Jagielski     }
424*b1cdbd2cSJim Jagielski     else if ( bMustClose )
425*b1cdbd2cSJim Jagielski         // execute slot FID_INS_TABLE_EXT and cancel file dialog
426*b1cdbd2cSJim Jagielski         EndDialog( RET_CANCEL );
427*b1cdbd2cSJim Jagielski 
428*b1cdbd2cSJim Jagielski     return 0;
429*b1cdbd2cSJim Jagielski }
430*b1cdbd2cSJim Jagielski 
431