1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
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 //.........................................................................
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 //=========================================================================
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
)
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
99 // extract the datasource type collection from the item set
100 DbuTypeCollectionItem
* pCollectionItem
= PTR_CAST(DbuTypeCollectionItem
, _rItems
.GetItem(DSID_TYPECOLLECTION
));
102 m_pCollection
= pCollectionItem
->getCollection();
104 DBG_ASSERT(m_pCollection
, "OGeneralPage::OGeneralPage : really need a DSN type collection !");
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 //-------------------------------------------------------------------------
129 ::rtl::OUString eType
;
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();
155 DisplayedTypes aDisplayedTypes
;
157 ::dbaccess::ODsnTypeCollection::TypeIterator aEnd
= m_pCollection
->end();
158 for ( ::dbaccess::ODsnTypeCollection::TypeIterator aTypeLoop
= m_pCollection
->begin();
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();
180 insertDatasourceTypeEntryData( loop
->eType
, loop
->sDisplayName
);
181 } // if ( m_pCollection )
187 //-------------------------------------------------------------------------
188 void OGeneralPage::setParentTitle(const ::rtl::OUString
& _sURLPrefix
)
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() )
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
;
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
);
272 m_aTypePreLabel
.Hide();
273 m_aTypePostLabel
.Hide();
274 m_aSpecialMessage
.Hide();
275 SetControlFontWeight(&m_aFTHeaderText
);
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 );
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();
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
;
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
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
)
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
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
;
473 bCommitTypeSelection
= false;
477 if ( bCommitTypeSelection
)
479 USHORT nEntry
= m_pDatasourceType
->GetSelectEntryPos();
480 ::rtl::OUString sURLPrefix
= m_aURLPrefixes
[nEntry
];
483 if ( ( m_pDatasourceType
->GetSavedValue() != nEntry
)
484 || ( GetDatabaseCreationMode() != m_eOriginalCreationMode
)
487 _rCoreAttrs
.Put(SfxStringItem(DSID_CONNECTURL
,sURLPrefix
));
488 bChangedSomething
= sal_True
;
491 implSetCurrentType(sURLPrefix
);
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
521 //-------------------------------------------------------------------------
522 OGeneralPage::DocumentDescriptor
OGeneralPage::GetSelectedDocument() const
524 DocumentDescriptor aDocument
;
525 if ( m_aBrowsedDocument
.sURL
.Len() )
526 aDocument
= m_aBrowsedDocument
;
529 aDocument
.sURL
= m_pLB_DocumentList
->GetSelectedDocumentURL();
530 aDocument
.sFilter
= m_pLB_DocumentList
->GetSelectedDocumentFilter();
535 //-------------------------------------------------------------------------
536 IMPL_LINK(OGeneralPage
, OnSetupModeSelected
, RadioButton
*, /*_pBox*/)
538 if ( m_aCreationModeHandler
.IsSet() )
539 m_aCreationModeHandler
.Call(this);
543 //-------------------------------------------------------------------------
544 IMPL_LINK(OGeneralPage
, OnDocumentSelected
, ListBox
*, /*_pBox*/)
546 m_aDocumentSelectionHandler
.Call( this );
550 //-------------------------------------------------------------------------
551 IMPL_LINK(OGeneralPage
, OnOpenDocument
, PushButton
*, /*_pBox*/)
553 ::sfx2::FileDialogHelper
aFileDlg( WB_OPEN
, ::String::CreateFromAscii("sdatabase") );
554 const SfxFilter
* pFilter
= getStandardDatabaseFilter();
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
);
568 m_aRB_GetExistingDatabase
.Check();
569 OnSetupModeSelected(&m_aRB_GetExistingDatabase
);
572 m_aBrowsedDocument
.sURL
= sPath
;
573 m_aBrowsedDocument
.sFilter
= String();
574 m_aChooseDocumentHandler
.Call( this );
581 //.........................................................................
583 //.........................................................................