update dev300-m58
[ooovba.git] / dbaccess / source / ui / dlg / generalpage.cxx
blob844db6b66dd549b42c9d0ea38cb41db678580854
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: generalpage.cxx,v $
10 * $Revision: 1.56.68.2 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_dbaccess.hxx"
34 #include "dsnItem.hxx"
35 #include "generalpage.hxx"
36 #include <connectivity/dbexception.hxx>
37 #include "dbu_dlg.hrc"
38 #include "dbadmin.hrc"
39 #include "dsitems.hxx"
40 #include "dbustrings.hrc"
41 #include "dbadmin.hxx"
42 #include <sfx2/filedlghelper.hxx>
43 #include <sfx2/docfilt.hxx>
44 #include <vcl/stdtext.hxx>
45 #include "localresaccess.hxx"
46 #include <vcl/msgbox.hxx>
47 #include <svtools/stritem.hxx>
48 #include <connectivity/DriversConfig.hxx>
49 #include <vcl/waitobj.hxx>
50 #include <com/sun/star/sdbc/XDriverAccess.hpp>
51 #include <com/sun/star/beans/PropertyValue.hpp>
52 #include <com/sun/star/uno/Sequence.hxx>
53 #include <com/sun/star/container/XNameAccess.hpp>
54 #include "DriverSettings.hxx"
55 #include "UITools.hxx"
56 //.........................................................................
57 namespace dbaui
59 //.........................................................................
60 using namespace ::com::sun::star::uno;
61 using namespace ::com::sun::star::sdbc;
62 using namespace ::com::sun::star::beans;
63 using namespace ::com::sun::star::container;
65 //=========================================================================
66 //= OGeneralPage
67 //=========================================================================
68 //-------------------------------------------------------------------------
69 OGeneralPage::OGeneralPage(Window* pParent, const SfxItemSet& _rItems, sal_Bool _bDBWizardMode)
70 :OGenericAdministrationPage(pParent, ModuleRes(PAGE_GENERAL), _rItems)
71 ,m_aFTHeaderText (this, ModuleRes(FT_GENERALHEADERTEXT))
72 ,m_aFTHelpText (this, ModuleRes(FT_GENERALHELPTEXT))
73 ,m_aFT_DatasourceTypeHeader (this, ModuleRes(FT_DATASOURCEHEADER))
74 ,m_aRB_CreateDatabase (this, ModuleRes(RB_CREATEDBDATABASE))
75 ,m_aRB_OpenDocument (this, ModuleRes(RB_OPENEXISTINGDOC))
76 ,m_aRB_GetExistingDatabase (this, ModuleRes(RB_GETEXISTINGDATABASE))
77 ,m_aFT_DocListLabel (this, ModuleRes(FT_DOCLISTLABEL))
78 ,m_pLB_DocumentList ( new OpenDocumentListBox( this, "com.sun.star.sdb.OfficeDatabaseDocument", ModuleRes( LB_DOCUMENTLIST ) ) )
79 ,m_aPB_OpenDocument (this, "com.sun.star.sdb.OfficeDatabaseDocument", ModuleRes(PB_OPENDOCUMENT))
80 ,m_aTypePreLabel (this, ModuleRes(FT_DATASOURCETYPE_PRE))
81 ,m_aDatasourceTypeLabel (this, ModuleRes(FT_DATATYPE))
82 ,m_pDatasourceType ( new ListBox(this, ModuleRes(LB_DATATYPE)))
83 ,m_aFTDataSourceAppendix (this, ModuleRes(FT_DATATYPEAPPENDIX))
84 ,m_aTypePostLabel (this, ModuleRes(FT_DATASOURCETYPE_POST))
85 ,m_aSpecialMessage (this, ModuleRes(FT_SPECIAL_MESSAGE))
86 ,m_DBWizardMode (_bDBWizardMode)
87 ,m_sMySQLEntry (ModuleRes(STR_MYSQLENTRY))
88 ,m_eOriginalCreationMode (eCreateNew)
89 ,m_pCollection (NULL)
90 ,m_eNotSupportedKnownType ( ::dbaccess::DST_UNKNOWN)
91 ,m_eLastMessage (smNone)
92 ,m_bDisplayingInvalid (sal_False)
93 ,m_bUserGrabFocus (sal_True)
94 ,m_bInitTypeList (true)
96 // fill the listbox with the UI descriptions for the possible types
97 // and remember the respective DSN prefixes
98 FreeResource();
99 // extract the datasource type collection from the item set
100 DbuTypeCollectionItem* pCollectionItem = PTR_CAST(DbuTypeCollectionItem, _rItems.GetItem(DSID_TYPECOLLECTION));
101 if (pCollectionItem)
102 m_pCollection = pCollectionItem->getCollection();
104 DBG_ASSERT(m_pCollection, "OGeneralPage::OGeneralPage : really need a DSN type collection !");
106 // do some knittings
107 m_pDatasourceType->SetSelectHdl(LINK(this, OGeneralPage, OnDatasourceTypeSelected));
108 m_aRB_CreateDatabase.SetClickHdl(LINK(this, OGeneralPage, OnSetupModeSelected));
109 m_aRB_GetExistingDatabase.SetClickHdl(LINK(this, OGeneralPage, OnSetupModeSelected));
110 m_aRB_OpenDocument.SetClickHdl(LINK(this, OGeneralPage, OnSetupModeSelected));
111 m_aRB_CreateDatabase.Check();
113 m_pLB_DocumentList->SetSelectHdl( LINK( this, OGeneralPage, OnDocumentSelected ) );
114 m_aPB_OpenDocument.SetClickHdl( LINK( this, OGeneralPage, OnOpenDocument ) );
117 //-------------------------------------------------------------------------
118 OGeneralPage::~OGeneralPage()
120 m_pDatasourceType.reset( NULL );
121 m_pLB_DocumentList.reset( NULL );
124 //-------------------------------------------------------------------------
125 namespace
127 struct DisplayedType
129 ::rtl::OUString eType;
130 String sDisplayName;
132 DisplayedType( const ::rtl::OUString& _eType, const String& _rDisplayName ) : eType( _eType ), sDisplayName( _rDisplayName ) { }
134 typedef ::std::vector< DisplayedType > DisplayedTypes;
136 struct DisplayedTypeLess : ::std::binary_function< DisplayedType, DisplayedType, bool >
138 bool operator() ( const DisplayedType& _rLHS, const DisplayedType& _rRHS )
140 return _rLHS.eType < _rRHS.eType;
145 //-------------------------------------------------------------------------
146 void OGeneralPage::initializeTypeList()
148 if ( m_bInitTypeList )
150 m_bInitTypeList = false;
151 m_pDatasourceType->Clear();
153 if ( m_pCollection )
155 DisplayedTypes aDisplayedTypes;
157 ::dbaccess::ODsnTypeCollection::TypeIterator aEnd = m_pCollection->end();
158 for ( ::dbaccess::ODsnTypeCollection::TypeIterator aTypeLoop = m_pCollection->begin();
159 aTypeLoop != aEnd;
160 ++aTypeLoop
163 const ::rtl::OUString sURLPrefix = aTypeLoop.getURLPrefix();
164 if ( sURLPrefix.getLength() )
166 String sDisplayName = aTypeLoop.getDisplayName();
167 if ( m_pDatasourceType->GetEntryPos( sDisplayName ) == LISTBOX_ENTRY_NOTFOUND
168 && approveDataSourceType( sURLPrefix, sDisplayName ) )
170 aDisplayedTypes.push_back( DisplayedTypes::value_type( sURLPrefix, sDisplayName ) );
174 ::std::sort( aDisplayedTypes.begin(), aDisplayedTypes.end(), DisplayedTypeLess() );
175 DisplayedTypes::const_iterator aDisplayEnd = aDisplayedTypes.end();
176 for ( DisplayedTypes::const_iterator loop = aDisplayedTypes.begin();
177 loop != aDisplayEnd;
178 ++loop
180 insertDatasourceTypeEntryData( loop->eType, loop->sDisplayName );
181 } // if ( m_pCollection )
187 //-------------------------------------------------------------------------
188 void OGeneralPage::setParentTitle(const ::rtl::OUString& _sURLPrefix)
190 if (!m_DBWizardMode)
192 const String sName = m_pCollection->getTypeDisplayName(_sURLPrefix);
193 if ( m_pAdminDialog )
195 LocalResourceAccess aStringResAccess( PAGE_GENERAL, RSC_TABPAGE );
196 String sMessage = String(ModuleRes(STR_PARENTTITLE));
197 sMessage.SearchAndReplaceAscii("#",sName);
198 m_pAdminDialog->setTitle(sMessage);
203 //-------------------------------------------------------------------------
204 OGeneralPage::CreationMode OGeneralPage::GetDatabaseCreationMode() const
206 if ( m_aRB_CreateDatabase.IsChecked() )
207 return eCreateNew;
208 if ( m_aRB_GetExistingDatabase.IsChecked() )
209 return eConnectExternal;
210 return eOpenExisting;
213 //-------------------------------------------------------------------------
214 void OGeneralPage::GetFocus()
216 OGenericAdministrationPage::GetFocus();
217 if ( m_pLB_DocumentList.get() && m_pLB_DocumentList->IsEnabled() )
218 m_pLB_DocumentList->GrabFocus();
219 else if (m_pDatasourceType.get() && m_pDatasourceType->IsEnabled())
220 m_pDatasourceType->GrabFocus();
223 //-------------------------------------------------------------------------
224 void OGeneralPage::switchMessage(const ::rtl::OUString& _sURLPrefix)
226 SPECIAL_MESSAGE eMessage = smNone;
227 if ( !_sURLPrefix.getLength()/*_eType == m_eNotSupportedKnownType*/ )
229 eMessage = smUnsupportedType;
233 if ( eMessage != m_eLastMessage )
235 sal_uInt16 nResId = 0;
236 if ( smUnsupportedType == eMessage )
237 nResId = STR_UNSUPPORTED_DATASOURCE_TYPE;
238 String sMessage;
239 if ( nResId )
241 LocalResourceAccess aStringResAccess( PAGE_GENERAL, RSC_TABPAGE );
242 sMessage = String(ModuleRes(nResId));
244 m_aSpecialMessage.SetText(sMessage);
246 m_eLastMessage = eMessage;
250 //-------------------------------------------------------------------------
251 void OGeneralPage::onTypeSelected(const ::rtl::OUString& _sURLPrefix)
253 // the the new URL text as indicated by the selection history
254 implSetCurrentType( _sURLPrefix );
256 switchMessage(_sURLPrefix);
258 if ( m_aTypeSelectHandler.IsSet() )
259 m_aTypeSelectHandler.Call(this);
262 //-------------------------------------------------------------------------
263 void OGeneralPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
265 initializeTypeList();
267 // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
268 sal_Bool bValid, bReadonly;
269 getFlags(_rSet, bValid, bReadonly);
270 if (m_DBWizardMode)
272 m_aTypePreLabel.Hide();
273 m_aTypePostLabel.Hide();
274 m_aSpecialMessage.Hide();
275 SetControlFontWeight(&m_aFTHeaderText);
276 SetText(String());
278 m_pDatasourceType->SetPosPixel( MovePoint( m_aRB_GetExistingDatabase.GetPosPixel(), INDENT_BELOW_RADIO, 14 ) );
280 if ( !bValid || bReadonly )
282 m_aDatasourceTypeLabel.Enable( false );
283 m_pDatasourceType->Enable( false );
284 m_aFTDataSourceAppendix.Enable( false );
285 m_aPB_OpenDocument.Enable( false );
286 m_aFT_DocListLabel.Enable( false );
287 m_pLB_DocumentList->Enable( false );
289 else
291 m_aControlDependencies.enableOnRadioCheck( m_aRB_GetExistingDatabase, m_aDatasourceTypeLabel, *m_pDatasourceType, m_aFTDataSourceAppendix );
292 m_aControlDependencies.enableOnRadioCheck( m_aRB_OpenDocument, m_aPB_OpenDocument, m_aFT_DocListLabel, *m_pLB_DocumentList );
295 m_pLB_DocumentList->SetDropDownLineCount( 20 );
296 if ( m_pLB_DocumentList->GetEntryCount() )
297 m_pLB_DocumentList->SelectEntryPos( 0 );
299 m_aDatasourceTypeLabel.Hide();
300 m_aFTDataSourceAppendix.Hide();
302 m_eOriginalCreationMode = GetDatabaseCreationMode();
304 else
306 m_aFT_DatasourceTypeHeader.Hide();
307 m_aRB_CreateDatabase.Hide();
308 m_aRB_GetExistingDatabase.Hide();
309 m_aRB_OpenDocument.Hide();
310 m_aPB_OpenDocument.Hide();
311 m_aFT_DocListLabel.Hide();
312 m_pLB_DocumentList->Hide();
313 m_aFTHeaderText.Hide();
314 m_aFTHelpText.Hide();
315 m_aTypePreLabel.Enable(bValid);
316 m_aTypePostLabel.Enable(bValid);
317 m_aDatasourceTypeLabel.Enable(bValid);
318 m_pDatasourceType->Enable(bValid);
320 // if the selection is invalid, disable evrything
321 String sName,sConnectURL;
322 m_bDisplayingInvalid = !bValid;
323 if ( bValid )
325 // collect some items and some values
326 SFX_ITEMSET_GET(_rSet, pNameItem, SfxStringItem, DSID_NAME, sal_True);
327 SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True);
328 DBG_ASSERT(pUrlItem, "OGeneralPage::implInitControls : missing the type attribute !");
329 DBG_ASSERT(pNameItem, "OGeneralPage::implInitControls : missing the type attribute !");
330 sName = pNameItem->GetValue();
331 sConnectURL = pUrlItem->GetValue();
334 ::rtl::OUString eOldSelection = m_eCurrentSelection;
335 m_eNotSupportedKnownType = ::dbaccess::DST_UNKNOWN;
336 implSetCurrentType( ::rtl::OUString() );
338 // compare the DSN prefix with the registered ones
339 String sDisplayName;
341 if (m_pCollection && bValid)
343 implSetCurrentType( m_pCollection->getPrefix(sConnectURL) );
344 sDisplayName = m_pCollection->getTypeDisplayName(m_eCurrentSelection);
347 // select the correct datasource type
348 if ( approveDataSourceType( m_eCurrentSelection, sDisplayName )
349 && ( LISTBOX_ENTRY_NOTFOUND == m_pDatasourceType->GetEntryPos( sDisplayName ) )
351 { // this indicates it's really a type which is known in general, but not supported on the current platform
352 // show a message saying so
353 // eSpecialMessage = smUnsupportedType;
354 insertDatasourceTypeEntryData(m_eCurrentSelection, sDisplayName);
355 // remember this type so we can show the special message again if the user selects this
356 // type again (without changing the data source)
357 m_eNotSupportedKnownType = m_pCollection->determineType(m_eCurrentSelection);
360 if (m_aRB_CreateDatabase.IsChecked() && m_DBWizardMode)
361 sDisplayName = m_pCollection->getTypeDisplayName( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("jdbc:")));
362 m_pDatasourceType->SelectEntry(sDisplayName);
364 // notify our listener that our type selection has changed (if so)
365 if ( eOldSelection != m_eCurrentSelection )
367 setParentTitle(m_eCurrentSelection);
368 onTypeSelected(m_eCurrentSelection);
371 // a special message for the current page state
372 switchMessage(m_eCurrentSelection);
374 OGenericAdministrationPage::implInitControls(_rSet, _bSaveValue);
378 // For the databaseWizard we only have one entry for the MySQL Database,
379 // because we have a seperate tabpage to retrieve the respective datasource type
380 // ( ::dbaccess::DST_MYSQL_ODBC || ::dbaccess::DST_MYSQL_JDBC). Therefore we use ::dbaccess::DST_MYSQL_JDBC as a temporary
381 // representative for all MySQl databases)
382 // Also, embedded databases (embedded HSQL, at the moment), are not to appear in the list of
383 // databases to connect to.
384 bool OGeneralPage::approveDataSourceType( const ::rtl::OUString& _sURLPrefix, String& _inout_rDisplayName )
386 const ::dbaccess::DATASOURCE_TYPE eType = m_pCollection->determineType(_sURLPrefix);
387 if ( m_DBWizardMode && ( eType == ::dbaccess::DST_MYSQL_JDBC ) )
388 _inout_rDisplayName = m_sMySQLEntry;
390 else if ( m_DBWizardMode && ( eType == ::dbaccess::DST_MYSQL_ODBC ) )
391 _inout_rDisplayName = String();
393 else if ( m_DBWizardMode && ( eType == ::dbaccess::DST_MYSQL_NATIVE ) )
394 _inout_rDisplayName = String();
396 else if ( eType == ::dbaccess::DST_EMBEDDED_HSQLDB )
397 _inout_rDisplayName = String();
399 return _inout_rDisplayName.Len() > 0;
403 // -----------------------------------------------------------------------
404 void OGeneralPage::insertDatasourceTypeEntryData(const ::rtl::OUString& _sType, String sDisplayName)
406 // insert a (temporary) entry
407 sal_uInt16 nPos = m_pDatasourceType->InsertEntry(sDisplayName);
408 if ( nPos >= m_aURLPrefixes.size() )
409 m_aURLPrefixes.resize(nPos+1);
410 m_aURLPrefixes[nPos] = _sType;
413 // -----------------------------------------------------------------------
414 void OGeneralPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList)
416 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aTypePreLabel));
417 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aDatasourceTypeLabel));
418 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aTypePostLabel));
419 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aSpecialMessage));
420 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTDataSourceAppendix));
422 // -----------------------------------------------------------------------
423 void OGeneralPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList)
425 _rControlList.push_back(new OSaveValueWrapper<ListBox>(m_pDatasourceType.get()));
428 //-------------------------------------------------------------------------
429 SfxTabPage* OGeneralPage::Create(Window* _pParent, const SfxItemSet& _rAttrSet, sal_Bool _bWizardMode)
431 return ( new OGeneralPage( _pParent, _rAttrSet, _bWizardMode ) );
434 //-------------------------------------------------------------------------
435 void OGeneralPage::implSetCurrentType( const ::rtl::OUString& _eType )
437 if ( _eType == m_eCurrentSelection )
438 return;
440 m_eCurrentSelection = _eType;
443 //-------------------------------------------------------------------------
444 void OGeneralPage::Reset(const SfxItemSet& _rCoreAttrs)
446 // reset all locale data
447 implSetCurrentType( ::rtl::OUString() );
448 // this ensures that our type selection link will be called, even if the new is is the same as the
449 // current one
450 OGenericAdministrationPage::Reset(_rCoreAttrs);
453 //-------------------------------------------------------------------------
454 BOOL OGeneralPage::FillItemSet(SfxItemSet& _rCoreAttrs)
456 sal_Bool bChangedSomething = sal_False;
458 bool bCommitTypeSelection = true;
459 if ( m_DBWizardMode )
461 if ( m_aRB_CreateDatabase.IsChecked() )
463 _rCoreAttrs.Put(SfxStringItem(DSID_CONNECTURL, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdbc:dbase:"))));
464 bChangedSomething = sal_True;
465 bCommitTypeSelection = false;
467 else if ( m_aRB_OpenDocument.IsChecked() )
469 if ( m_aRB_OpenDocument.GetSavedValue() != m_aRB_OpenDocument.IsChecked() )
470 bChangedSomething = sal_True;
472 // TODO
473 bCommitTypeSelection = false;
477 if ( bCommitTypeSelection )
479 USHORT nEntry = m_pDatasourceType->GetSelectEntryPos();
480 ::rtl::OUString sURLPrefix = m_aURLPrefixes[nEntry];
481 if (m_DBWizardMode)
483 if ( ( m_pDatasourceType->GetSavedValue() != nEntry )
484 || ( GetDatabaseCreationMode() != m_eOriginalCreationMode )
487 _rCoreAttrs.Put(SfxStringItem(DSID_CONNECTURL,sURLPrefix ));
488 bChangedSomething = sal_True;
490 else
491 implSetCurrentType(sURLPrefix);
493 else
495 if ( m_pDatasourceType->GetSavedValue() != nEntry)
497 _rCoreAttrs.Put(SfxStringItem(DSID_CONNECTURL, sURLPrefix));
498 bChangedSomething = sal_True;
502 return bChangedSomething;
505 //-------------------------------------------------------------------------
506 IMPL_LINK(OGeneralPage, OnDatasourceTypeSelected, ListBox*, _pBox)
508 // get the type from the entry data
509 sal_Int16 nSelected = _pBox->GetSelectEntryPos();
510 const ::rtl::OUString sURLPrefix = m_aURLPrefixes[nSelected];
512 setParentTitle(sURLPrefix);
513 // let the impl method do all the stuff
514 onTypeSelected(sURLPrefix);
515 // tell the listener we were modified
516 callModifiedHdl();
517 // outta here
518 return 0L;
521 //-------------------------------------------------------------------------
522 OGeneralPage::DocumentDescriptor OGeneralPage::GetSelectedDocument() const
524 DocumentDescriptor aDocument;
525 if ( m_aBrowsedDocument.sURL.Len() )
526 aDocument = m_aBrowsedDocument;
527 else
529 aDocument.sURL = m_pLB_DocumentList->GetSelectedDocumentURL();
530 aDocument.sFilter = m_pLB_DocumentList->GetSelectedDocumentFilter();
532 return aDocument;
535 //-------------------------------------------------------------------------
536 IMPL_LINK(OGeneralPage, OnSetupModeSelected, RadioButton*, /*_pBox*/)
538 if ( m_aCreationModeHandler.IsSet() )
539 m_aCreationModeHandler.Call(this);
540 return 1L;
543 //-------------------------------------------------------------------------
544 IMPL_LINK(OGeneralPage, OnDocumentSelected, ListBox*, /*_pBox*/)
546 m_aDocumentSelectionHandler.Call( this );
547 return 0L;
550 //-------------------------------------------------------------------------
551 IMPL_LINK(OGeneralPage, OnOpenDocument, PushButton*, /*_pBox*/)
553 ::sfx2::FileDialogHelper aFileDlg( WB_OPEN, ::String::CreateFromAscii("sdatabase") );
554 const SfxFilter* pFilter = getStandardDatabaseFilter();
555 if ( pFilter )
557 // aFileDlg.AddFilter(pFilter->GetUIName(),pFilter->GetDefaultExtension());
558 aFileDlg.SetCurrentFilter(pFilter->GetUIName());
560 if ( aFileDlg.Execute() == ERRCODE_NONE )
562 String sPath = aFileDlg.GetPath();
563 if ( aFileDlg.GetCurrentFilter() != pFilter->GetUIName() || !pFilter->GetWildcard().Matches(sPath) )
565 String sMessage(ModuleRes(STR_ERR_USE_CONNECT_TO));
566 InfoBox aError(this, sMessage);
567 aError.Execute();
568 m_aRB_GetExistingDatabase.Check();
569 OnSetupModeSelected(&m_aRB_GetExistingDatabase);
570 return 0L;
572 m_aBrowsedDocument.sURL = sPath;
573 m_aBrowsedDocument.sFilter = String();
574 m_aChooseDocumentHandler.Call( this );
575 return 1L;
578 return 0L;
581 //.........................................................................
582 } // namespace dbaui
583 //.........................................................................