xref: /trunk/main/dbaccess/source/ui/dlg/ConnectionPageSetup.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_dbaccess.hxx"
30 
31 #ifndef DBAUI_CONNECTIONPAGESETUP_HXX
32 #include "ConnectionPageSetup.hxx"
33 #endif
34 #ifndef _DBAUI_AUTOCONTROLS_HRC_
35 #include "AutoControls.hrc"
36 #endif
37 #ifndef _DBAUI_DBADMINSETUP_HRC_
38 #include "dbadminsetup.hrc"
39 #endif
40 #ifndef _DBU_DLG_HRC_
41 #include "dbu_dlg.hrc"
42 #endif
43 #ifndef _SFXITEMSET_HXX
44 #include <svl/itemset.hxx>
45 #endif
46 #ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX
47 #include <unotools/pathoptions.hxx>
48 #endif
49 #ifndef _SFXSTRITEM_HXX
50 #include <svl/stritem.hxx>
51 #endif
52 #ifndef _SFXENUMITEM_HXX
53 #include <svl/eitem.hxx>
54 #endif
55 #ifndef _SFXINTITEM_HXX
56 #include <svl/intitem.hxx>
57 #endif
58 #ifndef _DBAUI_DATASOURCEITEMS_HXX_
59 #include "dsitems.hxx"
60 #endif
61 #ifndef _DBA_DBACCESS_HELPID_HRC_
62 #include "dbaccess_helpid.hrc"
63 #endif
64 #ifndef _DBAUI_LOCALRESACCESS_HXX_
65 #include "localresaccess.hxx"
66 #endif
67 #ifndef _OSL_PROCESS_H_
68 #include <osl/process.h>
69 #endif
70 #ifndef _SV_MSGBOX_HXX
71 #include <vcl/msgbox.hxx>
72 #endif
73 #ifndef _FILEDLGHELPER_HXX
74 #include <sfx2/filedlghelper.hxx>
75 #endif
76 #ifndef _DBAUI_DBADMIN_HXX_
77 #include "dbadmin.hxx"
78 #endif
79 #ifndef _DBAUI_DBADMIN_HRC_
80 #include "dbadmin.hrc"
81 #endif
82 #ifndef _COMPHELPER_TYPES_HXX_
83 #include <comphelper/types.hxx>
84 #endif
85 #ifndef _VCL_STDTEXT_HXX
86 #include <vcl/stdtext.hxx>
87 #endif
88 #ifndef _DBAUI_SQLMESSAGE_HXX_
89 #include "sqlmessage.hxx"
90 #endif
91 #ifndef _DBAUI_ODBC_CONFIG_HXX_
92 #include "odbcconfig.hxx"
93 #endif
94 #ifndef _DBAUI_DSSELECT_HXX_
95 #include "dsselect.hxx"
96 #endif
97 #ifndef SVTOOLS_FILENOTATION_HXX_
98 #include <svl/filenotation.hxx>
99 #endif
100 #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC
101 #include "dbustrings.hrc"
102 #endif
103 #ifndef _COM_SUN_STAR_UI_DIALOGS_XFOLDERPICKER_HPP_
104 #include <com/sun/star/ui/dialogs/XFolderPicker.hpp>
105 #endif
106 #ifndef _COM_SUN_STAR_SDBC_XROW_HPP_
107 #include <com/sun/star/sdbc/XRow.hpp>
108 #endif
109 #ifndef _COM_SUN_STAR_AWT_XWINDOW_HPP_
110 #include <com/sun/star/awt/XWindow.hpp>
111 #endif
112 // #106016# ------------------------------------
113 #ifndef _COM_SUN_STAR_TASK_XINTERACTIONHANDLER_HPP_
114 #include <com/sun/star/task/XInteractionHandler.hpp>
115 #endif
116 #ifndef _COM_SUN_STAR_TASK_XPROGRESSHANDLER_HPP_
117 #include <com/sun/star/ucb/XProgressHandler.hpp>
118 #endif
119 #ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
120 #include <com/sun/star/sdbc/XConnection.hpp>
121 #endif
122 #ifndef DBAUI_TOOLS_HXX
123 #include "UITools.hxx"
124 #endif
125 #ifndef _UNOTOOLS_LOCALFILEHELPER_HXX
126 #include <unotools/localfilehelper.hxx>
127 #endif
128 #ifndef _UNOTOOLS_UCBHELPER_HXX
129 #include <unotools/ucbhelper.hxx>
130 #endif
131 #ifndef _UCBHELPER_COMMANDENVIRONMENT_HXX
132 #include <ucbhelper/commandenvironment.hxx>
133 #endif
134 #ifndef DBAUI_FILEPICKER_INTERACTION_HXX
135 #include "finteraction.hxx"
136 #endif
137 #ifndef _CONNECTIVITY_COMMONTOOLS_HXX_
138 #include <connectivity/CommonTools.hxx>
139 #endif
140 #ifndef _URLOBJ_HXX
141 #include <tools/urlobj.hxx>
142 #endif
143 #ifndef _SFX_DOCFILT_HACK_HXX
144 #include <sfx2/docfilt.hxx>
145 #endif
146 #ifndef _SV_MNEMONIC_HXX
147 #include <vcl/mnemonic.hxx>
148 #endif
149 
150 //.........................................................................
151 namespace dbaui
152 {
153 //.........................................................................
154     using namespace ::com::sun::star::uno;
155     using namespace ::com::sun::star::ucb;
156     using namespace ::com::sun::star::ui::dialogs;
157     using namespace ::com::sun::star::sdbc;
158     using namespace ::com::sun::star::beans;
159     using namespace ::com::sun::star::lang;
160     using namespace ::com::sun::star::container;
161     using namespace ::dbtools;
162     using namespace ::svt;
163 
164 
165 
166     OGenericAdministrationPage* OConnectionTabPageSetup::CreateDbaseTabPage( Window* pParent, const SfxItemSet& _rAttrSet )
167     {
168         OConnectionTabPageSetup* oDBWizardPage = new OConnectionTabPageSetup( pParent, PAGE_DBWIZARD_DBASE,    _rAttrSet, STR_DBASE_HELPTEXT,    STR_DBASE_HEADERTEXT,    STR_DBASE_PATH_OR_FILE);
169         oDBWizardPage->FreeResource();
170         return oDBWizardPage;
171     }
172 
173 
174     OGenericAdministrationPage* OConnectionTabPageSetup::CreateMSAccessTabPage( Window* pParent, const SfxItemSet& _rAttrSet )
175     {
176         OConnectionTabPageSetup* oDBWizardPage = new OConnectionTabPageSetup( pParent, PAGE_DBWIZARD_MSACCESS, _rAttrSet, STR_MSACCESS_HELPTEXT, STR_MSACCESS_HEADERTEXT, STR_MSACCESS_MDB_FILE);
177         oDBWizardPage->FreeResource();
178         return oDBWizardPage;
179     }
180 
181     OGenericAdministrationPage* OConnectionTabPageSetup::CreateAdabasTabPage( Window* pParent,  const SfxItemSet& _rAttrSet )
182     {
183         OConnectionTabPageSetup* oDBWizardPage = new OConnectionTabPageSetup( pParent, PAGE_DBWIZARD_ADABAS, _rAttrSet, STR_ADABAS_HELPTEXT, STR_ADABAS_HEADERTEXT, STR_ADABAS_DATABASE_NAME);
184         oDBWizardPage->FreeResource();
185         return oDBWizardPage;
186     }
187 
188     OGenericAdministrationPage* OConnectionTabPageSetup::CreateADOTabPage( Window* pParent, const SfxItemSet& _rAttrSet )
189     {
190         OConnectionTabPageSetup* oDBWizardPage = new OConnectionTabPageSetup( pParent, PAGE_DBWIZARD_ADO, _rAttrSet, STR_ADO_HELPTEXT, STR_ADO_HEADERTEXT, STR_COMMONURL);
191         oDBWizardPage->FreeResource();
192         return oDBWizardPage;
193     }
194 
195     OGenericAdministrationPage* OConnectionTabPageSetup::CreateODBCTabPage( Window* pParent, const SfxItemSet& _rAttrSet )
196     {
197         OConnectionTabPageSetup* oDBWizardPage = new OConnectionTabPageSetup( pParent, PAGE_DBWIZARD_ODBC, _rAttrSet, STR_ODBC_HELPTEXT, STR_ODBC_HEADERTEXT, STR_NAME_OF_ODBC_DATASOURCE);
198         oDBWizardPage->FreeResource();
199         return oDBWizardPage;
200     }
201 
202     OGenericAdministrationPage* OConnectionTabPageSetup::CreateUserDefinedTabPage( Window* pParent, const SfxItemSet& _rAttrSet )
203     {
204         OConnectionTabPageSetup* oDBWizardPage = new OConnectionTabPageSetup( pParent, PAGE_DBWIZARD_USERDEFINED, _rAttrSet, USHRT_MAX, USHRT_MAX, STR_COMMONURL);
205         oDBWizardPage->FreeResource();
206         return oDBWizardPage;
207     }
208 
209 
210     //========================================================================
211     //= OConnectionTabPageSetup
212     //========================================================================
213     DBG_NAME(OConnectionTabPageSetup)
214     OConnectionTabPageSetup::OConnectionTabPageSetup(Window* pParent, sal_uInt16 _rId, const SfxItemSet& _rCoreAttrs, sal_uInt16 _nHelpTextResId, sal_uInt16 _nHeaderResId, sal_uInt16 _nUrlResId)
215         :OConnectionHelper(pParent, ModuleRes(_rId), _rCoreAttrs)
216         ,m_bUserGrabFocus(sal_True)
217         ,m_aFT_HelpText(this, ModuleRes(FT_AUTOWIZARDHELPTEXT))
218     {
219         DBG_CTOR(OConnectionTabPageSetup, NULL);
220 
221         if ( USHRT_MAX != _nHelpTextResId )
222         {
223             String sHelpText = String(ModuleRes(_nHelpTextResId));
224             m_aFT_HelpText.SetText(sHelpText);
225         }
226         else
227             m_aFT_HelpText.Hide();
228 
229 
230         if ( USHRT_MAX != _nHeaderResId )
231             SetHeaderText(FT_AUTOWIZARDHEADER, _nHeaderResId);
232 
233         if ( USHRT_MAX != _nUrlResId )
234         {
235             String sLabelText = String(ModuleRes(_nUrlResId));
236             m_aFT_Connection.SetText(sLabelText);
237             if ( USHRT_MAX == _nHelpTextResId )
238             {
239                 Point aPos = m_aFT_HelpText.GetPosPixel();
240                 Point aFTPos = m_aFT_Connection.GetPosPixel();
241                 Point aEDPos = m_aConnectionURL.GetPosPixel();
242                 Point aPBPos = m_aPB_Connection.GetPosPixel();
243 
244                 aEDPos.Y() = aPos.Y() + aEDPos.Y() - aFTPos.Y();
245                 aPBPos.Y() = aPos.Y() + aPBPos.Y() - aFTPos.Y();
246                 aFTPos.Y() = aPos.Y();
247                 m_aFT_Connection.SetPosPixel(aFTPos);
248                 m_aConnectionURL.SetPosPixel(aEDPos);
249                 m_aPB_Connection.SetPosPixel(aPBPos);
250             }
251         }
252         else
253             m_aFT_Connection.Hide();
254 
255         m_aConnectionURL.SetModifyHdl(LINK(this, OConnectionTabPageSetup, OnEditModified));
256 
257         SetRoadmapStateValue(sal_False);
258     }
259 
260     // -----------------------------------------------------------------------
261     OConnectionTabPageSetup::~OConnectionTabPageSetup()
262     {
263         DBG_DTOR(OConnectionTabPageSetup,NULL);
264     }
265 
266     // -----------------------------------------------------------------------
267     void OConnectionTabPageSetup::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue)
268     {
269         m_eType = m_pAdminDialog->getDatasourceType(_rSet);
270         // special handling for oracle, this can only happen
271         // if the user enters the same url as used for Oracle and we are on the JDBC path
272         //! TODO
273         //if (  ::dbaccess::DST_ORACLE_JDBC == m_eType )
274         //    m_eType =  ::dbaccess::DST_JDBC;
275 
276         OConnectionHelper::implInitControls(_rSet, _bSaveValue);
277 
278         //! TODO
279         //if ( m_eType >=  ::dbaccess::DST_USERDEFINE1 )
280         //{
281         //  String sDisplayName = m_pCollection->getTypeDisplayName(m_eType);
282         //  FixedText* ppTextControls[] ={&m_aFT_Connection};
283         //  for (size_t i = 0; i < sizeof(ppTextControls)/sizeof(ppTextControls[0]); ++i)
284         //  {
285         //      ppTextControls[i]->SetText(sDisplayName);
286         //  }
287         //}
288 
289         callModifiedHdl();
290     }
291     // -----------------------------------------------------------------------
292     sal_Bool OConnectionTabPageSetup::commitPage( ::svt::WizardTypes::CommitPageReason /*_eReason*/ )
293     {
294         return commitURL();
295     }
296 
297     // -----------------------------------------------------------------------
298     sal_Bool OConnectionTabPageSetup::FillItemSet(SfxItemSet& _rSet)
299     {
300         sal_Bool bChangedSomething = sal_False;
301         fillString(_rSet,&m_aConnectionURL, DSID_CONNECTURL, bChangedSomething);
302         return bChangedSomething;
303     }
304     // -----------------------------------------------------------------------
305     bool OConnectionTabPageSetup::checkTestConnection()
306     {
307         return !m_aConnectionURL.IsVisible() || (m_aConnectionURL.GetTextNoPrefix().Len() != 0);
308     }
309 
310     // -----------------------------------------------------------------------
311     IMPL_LINK(OConnectionTabPageSetup, OnEditModified, Edit*, /*_pEdit*/)
312     {
313         SetRoadmapStateValue(checkTestConnection());
314         callModifiedHdl();
315         return 0L;
316     }
317 //.........................................................................
318 }   // namespace dbaui
319 //.........................................................................
320 
321 
322