1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_dbaccess.hxx" 26 27 #include "detailpages.hxx" 28 #include "sqlmessage.hxx" 29 #include "dsmeta.hxx" 30 #include "advancedsettings.hxx" 31 #include "DbAdminImpl.hxx" 32 #include "dsitems.hxx" 33 #include "dbfindex.hxx" 34 #include "localresaccess.hxx" 35 #include "dsnItem.hxx" 36 37 #include "dbaccess_helpid.hrc" 38 #include "dbu_dlg.hrc" 39 #include "dbadmin.hrc" 40 41 #ifndef _SFXITEMSET_HXX 42 #include <svl/itemset.hxx> 43 #endif 44 #ifndef _SFXSTRITEM_HXX 45 #include <svl/stritem.hxx> 46 #endif 47 #ifndef _SFXENUMITEM_HXX 48 #include <svl/eitem.hxx> 49 #endif 50 #ifndef _SFXINTITEM_HXX 51 #include <svl/intitem.hxx> 52 #endif 53 #ifndef _SV_MSGBOX_HXX 54 #include <vcl/msgbox.hxx> 55 #endif 56 #ifndef _SV_MNEMONIC_HXX 57 #include <vcl/mnemonic.hxx> 58 #endif 59 #ifndef _SVTOOLS_CJKOPTIONS_HXX 60 #include <svl/cjkoptions.hxx> 61 #endif 62 #include <jvmaccess/virtualmachine.hxx> 63 #ifndef DBAUI_ADABASPAGE_HRC 64 #include "AdabasPage.hrc" 65 #endif 66 #ifndef _DBAUI_ADASTAT_HXX_ 67 #include "AdabasStat.hxx" 68 #endif 69 #ifndef _CONNECTIVITY_COMMONTOOLS_HXX_ 70 #include <connectivity/CommonTools.hxx> 71 #endif 72 #ifndef DBAUI_DRIVERSETTINGS_HXX 73 #include "DriverSettings.hxx" 74 #endif 75 #ifndef _DBAUI_DBADMIN_HXX_ 76 #include "dbadmin.hxx" 77 #endif 78 #ifndef _COMPHELPER_TYPES_HXX_ 79 #include <comphelper/types.hxx> 80 #endif 81 #include "AutoControls.hrc" 82 83 //......................................................................... 84 namespace dbaui 85 { 86 //......................................................................... 87 88 using namespace ::com::sun::star::uno; 89 using namespace ::com::sun::star::sdbc; 90 using namespace ::com::sun::star::beans; 91 using namespace ::com::sun::star::lang; 92 using namespace ::com::sun::star::container; 93 using namespace ::dbtools; 94 95 //======================================================================== 96 //= OCommonBehaviourTabPage 97 //======================================================================== 98 DBG_NAME(OCommonBehaviourTabPage) 99 //------------------------------------------------------------------------ 100 OCommonBehaviourTabPage::OCommonBehaviourTabPage(Window* pParent, sal_uInt16 nResId, const SfxItemSet& _rCoreAttrs, 101 sal_uInt32 nControlFlags,bool _bFreeResource) 102 103 :OGenericAdministrationPage(pParent, ModuleRes(nResId), _rCoreAttrs) 104 ,m_pOptionsLabel(NULL) 105 ,m_pOptions(NULL) 106 ,m_pDataConvertFixedLine(NULL) 107 ,m_pCharsetLabel(NULL) 108 ,m_pCharset(NULL) 109 ,m_pAutoFixedLine(NULL) 110 ,m_pAutoRetrievingEnabled(NULL) 111 ,m_pAutoIncrementLabel(NULL) 112 ,m_pAutoIncrement(NULL) 113 ,m_pAutoRetrievingLabel(NULL) 114 ,m_pAutoRetrieving(NULL) 115 ,m_nControlFlags(nControlFlags) 116 { 117 DBG_CTOR(OCommonBehaviourTabPage,NULL); 118 119 if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) 120 { 121 m_pOptionsLabel = new FixedText(this, ModuleRes(FT_OPTIONS)); 122 m_pOptions = new Edit(this, ModuleRes(ET_OPTIONS)); 123 m_pOptions->SetModifyHdl(getControlModifiedLink()); 124 } 125 126 if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) 127 { 128 m_pDataConvertFixedLine = new FixedLine(this, ModuleRes(FL_DATACONVERT)); 129 m_pCharsetLabel = new FixedText(this, ModuleRes(FT_CHARSET)); 130 m_pCharset = new CharSetListBox(this, ModuleRes(LB_CHARSET)); 131 m_pCharset->SetSelectHdl(getControlModifiedLink()); 132 } 133 134 Window* pWindows[] = { m_pAutoRetrievingEnabled, m_pAutoFixedLine, 135 m_pAutoIncrementLabel, m_pAutoIncrement, 136 m_pAutoRetrievingLabel, m_pAutoRetrieving }; 137 138 sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); 139 for (sal_Int32 i=1; i < nCount; ++i) 140 { 141 if ( pWindows[i] ) 142 { 143 Window* pPrev = pWindows[i-1]; 144 for (sal_Int32 j = i-1; pPrev == NULL && j >= 0 ; --j) 145 { 146 pPrev = pWindows[j]; 147 } 148 if ( pPrev ) 149 pWindows[i]->SetZOrder(pPrev, WINDOW_ZORDER_BEHIND); 150 } 151 } 152 153 if ( _bFreeResource ) 154 FreeResource(); 155 } 156 157 // ----------------------------------------------------------------------- 158 OCommonBehaviourTabPage::~OCommonBehaviourTabPage() 159 { 160 DELETEZ(m_pOptionsLabel); 161 DELETEZ(m_pOptions); 162 163 DELETEZ(m_pDataConvertFixedLine); 164 DELETEZ(m_pCharsetLabel); 165 DELETEZ(m_pCharset); 166 167 DELETEZ(m_pAutoFixedLine); 168 DELETEZ(m_pAutoIncrementLabel); 169 DELETEZ(m_pAutoIncrement); 170 171 DELETEZ(m_pAutoRetrievingEnabled); 172 DELETEZ(m_pAutoRetrievingLabel); 173 DELETEZ(m_pAutoRetrieving); 174 175 DBG_DTOR(OCommonBehaviourTabPage,NULL); 176 } 177 178 // ----------------------------------------------------------------------- 179 void OCommonBehaviourTabPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 180 { 181 if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) 182 { 183 _rControlList.push_back(new ODisableWrapper<FixedText>(m_pOptionsLabel)); 184 } 185 186 if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) 187 { 188 _rControlList.push_back(new ODisableWrapper<FixedLine>(m_pDataConvertFixedLine)); 189 _rControlList.push_back(new ODisableWrapper<FixedText>(m_pCharsetLabel)); 190 } 191 } 192 // ----------------------------------------------------------------------- 193 void OCommonBehaviourTabPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 194 { 195 if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) 196 _rControlList.push_back(new OSaveValueWrapper<Edit>(m_pOptions)); 197 198 if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) 199 _rControlList.push_back(new OSaveValueWrapper<ListBox>(m_pCharset)); 200 } 201 202 // ----------------------------------------------------------------------- 203 void OCommonBehaviourTabPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 204 { 205 // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 206 sal_Bool bValid, bReadonly; 207 getFlags(_rSet, bValid, bReadonly); 208 209 // collect the items 210 SFX_ITEMSET_GET(_rSet, pOptionsItem, SfxStringItem, DSID_ADDITIONALOPTIONS, sal_True); 211 SFX_ITEMSET_GET(_rSet, pCharsetItem, SfxStringItem, DSID_CHARSET, sal_True); 212 213 // forward the values to the controls 214 if (bValid) 215 { 216 if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) 217 { 218 m_pOptions->SetText(pOptionsItem->GetValue()); 219 m_pOptions->ClearModifyFlag(); 220 } 221 222 if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) 223 { 224 m_pCharset->SelectEntryByIanaName( pCharsetItem->GetValue() ); 225 } 226 } 227 OGenericAdministrationPage::implInitControls(_rSet, _bSaveValue); 228 } 229 // ----------------------------------------------------------------------- 230 sal_Bool OCommonBehaviourTabPage::FillItemSet(SfxItemSet& _rSet) 231 { 232 sal_Bool bChangedSomething = sal_False; 233 234 if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) 235 { 236 fillString(_rSet,m_pOptions,DSID_ADDITIONALOPTIONS,bChangedSomething); 237 } 238 239 if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) 240 { 241 if ( m_pCharset->StoreSelectedCharSet( _rSet, DSID_CHARSET ) ) 242 bChangedSomething = sal_True; 243 } 244 245 return bChangedSomething; 246 } 247 248 //======================================================================== 249 //= ODbaseDetailsPage 250 //======================================================================== 251 DBG_NAME(ODbaseDetailsPage) 252 //------------------------------------------------------------------------ 253 ODbaseDetailsPage::ODbaseDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 254 :OCommonBehaviourTabPage(pParent, PAGE_DBASE, _rCoreAttrs, CBTP_USE_CHARSET ,false) 255 ,m_aShowDeleted (this, ModuleRes(CB_SHOWDELETEDROWS)) 256 ,m_aFL_1 (this, ModuleRes( FL_SEPARATOR1) ) 257 ,m_aFT_Message (this, ModuleRes( FT_SPECIAL_MESSAGE) ) 258 ,m_aIndexes (this, ModuleRes(PB_INDICIES)) 259 { 260 DBG_CTOR(ODbaseDetailsPage,NULL); 261 262 m_aIndexes.SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked)); 263 m_aShowDeleted.SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked)); 264 265 // correct the z-order which is mixed-up because the base class constructed some controls before we did 266 m_pCharset->SetZOrder(&m_aShowDeleted, WINDOW_ZORDER_BEFOR); 267 268 FreeResource(); 269 } 270 271 // ----------------------------------------------------------------------- 272 ODbaseDetailsPage::~ODbaseDetailsPage() 273 { 274 275 DBG_DTOR(ODbaseDetailsPage,NULL); 276 } 277 278 // ----------------------------------------------------------------------- 279 SfxTabPage* ODriversSettings::CreateDbase( Window* pParent, const SfxItemSet& _rAttrSet ) 280 { 281 return ( new ODbaseDetailsPage( pParent, _rAttrSet ) ); 282 } 283 284 // ----------------------------------------------------------------------- 285 void ODbaseDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 286 { 287 OCommonBehaviourTabPage::fillControls(_rControlList); 288 _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aShowDeleted)); 289 } 290 // ----------------------------------------------------------------------- 291 void ODbaseDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 292 { 293 OCommonBehaviourTabPage::fillWindows(_rControlList); 294 _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); 295 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFT_Message)); 296 _rControlList.push_back(new ODisableWrapper<PushButton>(&m_aIndexes)); 297 } 298 // ----------------------------------------------------------------------- 299 void ODbaseDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 300 { 301 // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 302 sal_Bool bValid, bReadonly; 303 getFlags(_rSet, bValid, bReadonly); 304 305 // get the DSN string (needed for the index dialog) 306 SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True); 307 SFX_ITEMSET_GET(_rSet, pTypesItem, DbuTypeCollectionItem, DSID_TYPECOLLECTION, sal_True); 308 ::dbaccess::ODsnTypeCollection* pTypeCollection = pTypesItem ? pTypesItem->getCollection() : NULL; 309 if (pTypeCollection && pUrlItem && pUrlItem->GetValue().Len()) 310 m_sDsn = pTypeCollection->cutPrefix(pUrlItem->GetValue()); 311 312 // get the other relevant items 313 SFX_ITEMSET_GET(_rSet, pDeletedItem, SfxBoolItem, DSID_SHOWDELETEDROWS, sal_True); 314 315 if ( bValid ) 316 { 317 m_aShowDeleted.Check( pDeletedItem->GetValue() ); 318 m_aFT_Message.Show(m_aShowDeleted.IsChecked()); 319 } 320 321 OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); 322 } 323 324 // ----------------------------------------------------------------------- 325 sal_Bool ODbaseDetailsPage::FillItemSet( SfxItemSet& _rSet ) 326 { 327 sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); 328 329 fillBool(_rSet,&m_aShowDeleted,DSID_SHOWDELETEDROWS,bChangedSomething); 330 return bChangedSomething; 331 } 332 333 //------------------------------------------------------------------------ 334 IMPL_LINK( ODbaseDetailsPage, OnButtonClicked, Button*, pButton ) 335 { 336 if (&m_aIndexes == pButton) 337 { 338 ODbaseIndexDialog aIndexDialog(this, m_sDsn); 339 aIndexDialog.Execute(); 340 } 341 else 342 { 343 m_aFT_Message.Show(m_aShowDeleted.IsChecked()); 344 // it was one of the checkboxes -> we count as modified from now on 345 callModifiedHdl(); 346 } 347 348 return 0; 349 } 350 351 //======================================================================== 352 //= OAdoDetailsPage 353 //======================================================================== 354 DBG_NAME(OAdoDetailsPage) 355 // ----------------------------------------------------------------------- 356 OAdoDetailsPage::OAdoDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 357 :OCommonBehaviourTabPage(pParent, PAGE_ADO, _rCoreAttrs, CBTP_USE_CHARSET ) 358 { 359 DBG_CTOR(OAdoDetailsPage,NULL); 360 361 } 362 363 // ----------------------------------------------------------------------- 364 OAdoDetailsPage::~OAdoDetailsPage() 365 { 366 367 DBG_DTOR(OAdoDetailsPage,NULL); 368 } 369 // ----------------------------------------------------------------------- 370 SfxTabPage* ODriversSettings::CreateAdo( Window* pParent, const SfxItemSet& _rAttrSet ) 371 { 372 return ( new OAdoDetailsPage( pParent, _rAttrSet ) ); 373 } 374 375 // ----------------------------------------------------------------------- 376 //======================================================================== 377 //= OOdbcDetailsPage 378 //======================================================================== 379 OOdbcDetailsPage::OOdbcDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 380 :OCommonBehaviourTabPage(pParent, PAGE_ODBC, _rCoreAttrs, CBTP_USE_CHARSET | CBTP_USE_OPTIONS,false) 381 ,m_aFL_1 (this, ModuleRes(FL_SEPARATOR1)) 382 ,m_aUseCatalog (this, ModuleRes(CB_USECATALOG)) 383 { 384 m_aUseCatalog.SetToggleHdl(getControlModifiedLink()); 385 FreeResource(); 386 387 Window* pWindows[] = { m_pCharsetLabel, m_pCharset 388 ,m_pOptionsLabel,m_pOptions,&m_aUseCatalog 389 }; 390 391 sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); 392 for (sal_Int32 i=1; i < nCount; ++i) 393 pWindows[i]->SetZOrder(pWindows[i-1], WINDOW_ZORDER_BEHIND); 394 } 395 396 // ----------------------------------------------------------------------- 397 SfxTabPage* ODriversSettings::CreateODBC( Window* pParent, const SfxItemSet& _rAttrSet ) 398 { 399 return ( new OOdbcDetailsPage( pParent, _rAttrSet ) ); 400 } 401 402 // ----------------------------------------------------------------------- 403 sal_Bool OOdbcDetailsPage::FillItemSet( SfxItemSet& _rSet ) 404 { 405 sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); 406 fillBool(_rSet,&m_aUseCatalog,DSID_USECATALOG,bChangedSomething); 407 return bChangedSomething; 408 } 409 // ----------------------------------------------------------------------- 410 void OOdbcDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 411 { 412 OCommonBehaviourTabPage::fillControls(_rControlList); 413 _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aUseCatalog)); 414 } 415 // ----------------------------------------------------------------------- 416 void OOdbcDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 417 { 418 OCommonBehaviourTabPage::fillWindows(_rControlList); 419 _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); 420 } 421 // ----------------------------------------------------------------------- 422 void OOdbcDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 423 { 424 // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 425 sal_Bool bValid, bReadonly; 426 getFlags(_rSet, bValid, bReadonly); 427 428 SFX_ITEMSET_GET(_rSet, pUseCatalogItem, SfxBoolItem, DSID_USECATALOG, sal_True); 429 430 if ( bValid ) 431 m_aUseCatalog.Check(pUseCatalogItem->GetValue()); 432 433 OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); 434 } 435 //======================================================================== 436 //= OOdbcDetailsPage 437 //======================================================================== 438 OUserDriverDetailsPage::OUserDriverDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 439 :OCommonBehaviourTabPage(pParent, PAGE_USERDRIVER, _rCoreAttrs, 440 CBTP_USE_CHARSET | CBTP_USE_OPTIONS ,false) 441 ,m_aFTHostname (this, ModuleRes(FT_HOSTNAME)) 442 ,m_aEDHostname (this, ModuleRes(ET_HOSTNAME)) 443 ,m_aPortNumber (this, ModuleRes(FT_PORTNUMBER)) 444 ,m_aNFPortNumber (this, ModuleRes(NF_PORTNUMBER)) 445 ,m_aUseCatalog (this, ModuleRes(CB_USECATALOG)) 446 { 447 m_aUseCatalog.SetToggleHdl(getControlModifiedLink()); 448 FreeResource(); 449 } 450 451 // ----------------------------------------------------------------------- 452 SfxTabPage* ODriversSettings::CreateUser( Window* pParent, const SfxItemSet& _rAttrSet ) 453 { 454 return ( new OUserDriverDetailsPage( pParent, _rAttrSet ) ); 455 } 456 457 // ----------------------------------------------------------------------- 458 sal_Bool OUserDriverDetailsPage::FillItemSet( SfxItemSet& _rSet ) 459 { 460 sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); 461 462 fillInt32(_rSet,&m_aNFPortNumber,DSID_CONN_PORTNUMBER,bChangedSomething); 463 fillString(_rSet,&m_aEDHostname,DSID_CONN_HOSTNAME,bChangedSomething); 464 fillBool(_rSet,&m_aUseCatalog,DSID_USECATALOG,bChangedSomething); 465 466 return bChangedSomething; 467 } 468 // ----------------------------------------------------------------------- 469 void OUserDriverDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 470 { 471 OCommonBehaviourTabPage::fillControls(_rControlList); 472 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDHostname)); 473 _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aUseCatalog)); 474 _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_aNFPortNumber)); 475 } 476 // ----------------------------------------------------------------------- 477 void OUserDriverDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 478 { 479 OCommonBehaviourTabPage::fillWindows(_rControlList); 480 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTHostname)); 481 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aPortNumber)); 482 } 483 // ----------------------------------------------------------------------- 484 void OUserDriverDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 485 { 486 // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 487 sal_Bool bValid, bReadonly; 488 getFlags(_rSet, bValid, bReadonly); 489 490 SFX_ITEMSET_GET(_rSet, pUseCatalogItem, SfxBoolItem, DSID_USECATALOG, sal_True); 491 SFX_ITEMSET_GET(_rSet, pHostName, SfxStringItem, DSID_CONN_HOSTNAME, sal_True); 492 SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, DSID_CONN_PORTNUMBER, sal_True); 493 494 if ( bValid ) 495 { 496 m_aEDHostname.SetText(pHostName->GetValue()); 497 m_aEDHostname.ClearModifyFlag(); 498 499 m_aNFPortNumber.SetValue(pPortNumber->GetValue()); 500 m_aNFPortNumber.ClearModifyFlag(); 501 502 m_aUseCatalog.Check(pUseCatalogItem->GetValue()); 503 } 504 505 OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); 506 } 507 //======================================================================== 508 //= OMySQLODBCDetailsPage 509 //======================================================================== 510 OMySQLODBCDetailsPage::OMySQLODBCDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 511 :OCommonBehaviourTabPage(pParent, PAGE_MYSQL_ODBC, _rCoreAttrs, CBTP_USE_CHARSET ) 512 { 513 } 514 515 // ----------------------------------------------------------------------- 516 SfxTabPage* ODriversSettings::CreateMySQLODBC( Window* pParent, const SfxItemSet& _rAttrSet ) 517 { 518 return ( new OMySQLODBCDetailsPage( pParent, _rAttrSet ) ); 519 } 520 521 //======================================================================== 522 //= OMySQLJDBCDetailsPage 523 //======================================================================== 524 OGeneralSpecialJDBCDetailsPage::OGeneralSpecialJDBCDetailsPage( Window* pParent,sal_uInt16 _nResId, const SfxItemSet& _rCoreAttrs ,sal_uInt16 _nPortId) 525 :OCommonBehaviourTabPage(pParent, _nResId, _rCoreAttrs, CBTP_USE_CHARSET ,false) 526 ,m_aFL_1 (this, ModuleRes( FL_SEPARATOR1) ) 527 ,m_aFTHostname (this, ModuleRes(FT_HOSTNAME)) 528 ,m_aEDHostname (this, ModuleRes(ET_HOSTNAME)) 529 ,m_aPortNumber (this, ModuleRes(FT_PORTNUMBER)) 530 ,m_aNFPortNumber (this, ModuleRes(NF_PORTNUMBER)) 531 ,m_aFTSocket (this, ModuleRes(FT_SOCKET)) 532 ,m_aEDSocket (this, ModuleRes(ET_SOCKET)) 533 ,m_aFTDriverClass (this, ModuleRes(FT_JDBCDRIVERCLASS)) 534 ,m_aEDDriverClass (this, ModuleRes(ET_JDBCDRIVERCLASS)) 535 ,m_aTestJavaDriver (this, ModuleRes(PB_TESTDRIVERCLASS)) 536 ,m_nPortId(_nPortId) 537 ,m_bUseClass(true) 538 { 539 SFX_ITEMSET_GET(_rCoreAttrs, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True); 540 SFX_ITEMSET_GET(_rCoreAttrs, pTypesItem, DbuTypeCollectionItem, DSID_TYPECOLLECTION, sal_True); 541 ::dbaccess::ODsnTypeCollection* pTypeCollection = pTypesItem ? pTypesItem->getCollection() : NULL; 542 if (pTypeCollection && pUrlItem && pUrlItem->GetValue().Len() ) 543 { 544 m_sDefaultJdbcDriverName = pTypeCollection->getJavaDriverClass(pUrlItem->GetValue()); 545 } 546 if ( m_sDefaultJdbcDriverName.Len() ) 547 { 548 m_aEDDriverClass.SetModifyHdl(getControlModifiedLink()); 549 m_aEDDriverClass.SetModifyHdl(LINK(this, OGeneralSpecialJDBCDetailsPage, OnEditModified)); 550 m_aTestJavaDriver.SetClickHdl(LINK(this,OGeneralSpecialJDBCDetailsPage,OnTestJavaClickHdl)); 551 } 552 else 553 { 554 m_bUseClass = false; 555 m_aFTDriverClass.Show(sal_False); 556 m_aEDDriverClass.Show(sal_False); 557 m_aTestJavaDriver.Show(sal_False); 558 } 559 560 m_aFTSocket.Show(PAGE_MYSQL_JDBC == _nResId && !m_bUseClass); 561 m_aEDSocket.Show(PAGE_MYSQL_JDBC == _nResId && !m_bUseClass); 562 563 m_aEDHostname.SetModifyHdl(getControlModifiedLink()); 564 m_aNFPortNumber.SetModifyHdl(getControlModifiedLink()); 565 m_aEDSocket.SetModifyHdl(getControlModifiedLink()); 566 567 Window* pWindows[] = { &m_aFTHostname,&m_aEDHostname, 568 &m_aPortNumber,&m_aNFPortNumber,&m_aFTSocket,&m_aEDSocket, 569 &m_aFTDriverClass, &m_aEDDriverClass,&m_aTestJavaDriver, 570 m_pCharsetLabel, m_pCharset}; 571 572 sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); 573 for (sal_Int32 i=1; i < nCount; ++i) 574 pWindows[i]->SetZOrder(pWindows[i-1], WINDOW_ZORDER_BEHIND); 575 576 FreeResource(); 577 } 578 579 // ----------------------------------------------------------------------- 580 void OGeneralSpecialJDBCDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 581 { 582 OCommonBehaviourTabPage::fillControls(_rControlList); 583 if ( m_bUseClass ) 584 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDDriverClass)); 585 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDHostname)); 586 _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_aNFPortNumber)); 587 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDSocket)); 588 } 589 // ----------------------------------------------------------------------- 590 void OGeneralSpecialJDBCDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 591 { 592 OCommonBehaviourTabPage::fillWindows(_rControlList); 593 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTHostname)); 594 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aPortNumber)); 595 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTSocket)); 596 if ( m_bUseClass ) 597 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTDriverClass)); 598 _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); 599 } 600 601 // ----------------------------------------------------------------------- 602 sal_Bool OGeneralSpecialJDBCDetailsPage::FillItemSet( SfxItemSet& _rSet ) 603 { 604 sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); 605 if ( m_bUseClass ) 606 fillString(_rSet,&m_aEDDriverClass,DSID_JDBCDRIVERCLASS,bChangedSomething); 607 fillString(_rSet,&m_aEDHostname,DSID_CONN_HOSTNAME,bChangedSomething); 608 fillString(_rSet,&m_aEDSocket,DSID_CONN_SOCKET,bChangedSomething); 609 fillInt32(_rSet,&m_aNFPortNumber,m_nPortId,bChangedSomething ); 610 611 return bChangedSomething; 612 } 613 // ----------------------------------------------------------------------- 614 void OGeneralSpecialJDBCDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 615 { 616 // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 617 sal_Bool bValid, bReadonly; 618 getFlags(_rSet, bValid, bReadonly); 619 620 SFX_ITEMSET_GET(_rSet, pDrvItem, SfxStringItem, DSID_JDBCDRIVERCLASS, sal_True); 621 SFX_ITEMSET_GET(_rSet, pHostName, SfxStringItem, DSID_CONN_HOSTNAME, sal_True); 622 SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, m_nPortId, sal_True); 623 SFX_ITEMSET_GET(_rSet, pSocket, SfxStringItem, DSID_CONN_SOCKET, sal_True); 624 625 if ( bValid ) 626 { 627 if ( m_bUseClass ) 628 { 629 m_aEDDriverClass.SetText(pDrvItem->GetValue()); 630 m_aEDDriverClass.ClearModifyFlag(); 631 } 632 633 m_aEDHostname.SetText(pHostName->GetValue()); 634 m_aEDHostname.ClearModifyFlag(); 635 636 m_aNFPortNumber.SetValue(pPortNumber->GetValue()); 637 m_aNFPortNumber.ClearModifyFlag(); 638 639 m_aEDSocket.SetText(pSocket->GetValue()); 640 m_aEDSocket.ClearModifyFlag(); 641 } 642 643 OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); 644 645 // to get the correcxt value when saveValue was called by base class 646 if ( m_bUseClass && !m_aEDDriverClass.GetText().Len() ) 647 { 648 m_aEDDriverClass.SetText(m_sDefaultJdbcDriverName); 649 m_aEDDriverClass.SetModifyFlag(); 650 } 651 } 652 // ----------------------------------------------------------------------- 653 IMPL_LINK(OGeneralSpecialJDBCDetailsPage, OnTestJavaClickHdl, PushButton*, /*_pButton*/) 654 { 655 OSL_ENSURE(m_pAdminDialog,"No Admin dialog set! ->GPF"); 656 OSL_ENSURE(m_bUseClass,"Who called me?"); 657 658 sal_Bool bSuccess = sal_False; 659 try 660 { 661 if ( m_aEDDriverClass.GetText().Len() ) 662 { 663 // TODO chage jvmaccess 664 ::rtl::Reference< jvmaccess::VirtualMachine > xJVM = ::connectivity::getJavaVM(m_pAdminDialog->getORB()); 665 bSuccess = ::connectivity::existsJavaClassByName(xJVM,m_aEDDriverClass.GetText()); 666 } 667 } 668 catch(Exception&) 669 { 670 } 671 672 sal_uInt16 nMessage = bSuccess ? STR_JDBCDRIVER_SUCCESS : STR_JDBCDRIVER_NO_SUCCESS; 673 OSQLMessageBox aMsg( this, String( ModuleRes( nMessage ) ), String() ); 674 aMsg.Execute(); 675 return 0L; 676 } 677 // ----------------------------------------------------------------------- 678 IMPL_LINK(OGeneralSpecialJDBCDetailsPage, OnEditModified, Edit*, _pEdit) 679 { 680 if ( m_bUseClass && _pEdit == &m_aEDDriverClass ) 681 m_aTestJavaDriver.Enable( m_aEDDriverClass.GetText().Len() != 0 ); 682 683 // tell the listener we were modified 684 callModifiedHdl(); 685 return 0L; 686 } 687 688 //======================================================================== 689 //= MySQLNativePage 690 //======================================================================== 691 MySQLNativePage::MySQLNativePage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 692 :OCommonBehaviourTabPage(pParent, PAGE_MYSQL_NATIVE, _rCoreAttrs, CBTP_USE_CHARSET, false ) 693 ,m_aSeparator1 ( this, ModuleRes( FL_SEPARATOR1) ) 694 ,m_aMySQLSettings ( *this, getControlModifiedLink() ) 695 ,m_aSeparator2 ( this, ModuleRes(FL_SEPARATOR2)) 696 ,m_aUserNameLabel ( this, ModuleRes(FT_USERNAME)) 697 ,m_aUserName ( this, ModuleRes(ET_USERNAME)) 698 ,m_aPasswordRequired ( this, ModuleRes(CB_PASSWORD_REQUIRED)) 699 { 700 m_aUserName.SetModifyHdl(getControlModifiedLink()); 701 702 Window* pWindows[] = { &m_aMySQLSettings, &m_aSeparator2, &m_aUserNameLabel, &m_aUserName, 703 &m_aPasswordRequired, m_pCharsetLabel, m_pCharset}; 704 sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); 705 for (sal_Int32 i=1; i < nCount; ++i) 706 pWindows[i]->SetZOrder(pWindows[i-1], WINDOW_ZORDER_BEHIND); 707 708 LayoutHelper::positionBelow( m_aSeparator1, m_aMySQLSettings, RelatedControls, 3 ); 709 m_aMySQLSettings.Show(); 710 711 FreeResource(); 712 } 713 714 // ----------------------------------------------------------------------- 715 void MySQLNativePage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 716 { 717 OCommonBehaviourTabPage::fillControls( _rControlList ); 718 m_aMySQLSettings.fillControls( _rControlList ); 719 720 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aUserName)); 721 _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aPasswordRequired)); 722 } 723 // ----------------------------------------------------------------------- 724 void MySQLNativePage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 725 { 726 OCommonBehaviourTabPage::fillWindows( _rControlList ); 727 m_aMySQLSettings.fillWindows( _rControlList); 728 729 _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aSeparator1)); 730 _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aSeparator2)); 731 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aUserNameLabel)); 732 } 733 734 // ----------------------------------------------------------------------- 735 sal_Bool MySQLNativePage::FillItemSet( SfxItemSet& _rSet ) 736 { 737 sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet( _rSet ); 738 739 bChangedSomething |= m_aMySQLSettings.FillItemSet( _rSet ); 740 741 if ( m_aUserName.GetText() != m_aUserName.GetSavedValue() ) 742 { 743 _rSet.Put( SfxStringItem( DSID_USER, m_aUserName.GetText() ) ); 744 _rSet.Put( SfxStringItem( DSID_PASSWORD, String())); 745 bChangedSomething = sal_True; 746 } 747 fillBool(_rSet,&m_aPasswordRequired,DSID_PASSWORDREQUIRED,bChangedSomething); 748 749 return bChangedSomething; 750 } 751 // ----------------------------------------------------------------------- 752 void MySQLNativePage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 753 { 754 // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 755 sal_Bool bValid, bReadonly; 756 getFlags(_rSet, bValid, bReadonly); 757 758 m_aMySQLSettings.implInitControls( _rSet ); 759 760 SFX_ITEMSET_GET(_rSet, pUidItem, SfxStringItem, DSID_USER, sal_True); 761 SFX_ITEMSET_GET(_rSet, pAllowEmptyPwd, SfxBoolItem, DSID_PASSWORDREQUIRED, sal_True); 762 763 if ( bValid ) 764 { 765 m_aUserName.SetText(pUidItem->GetValue()); 766 m_aUserName.ClearModifyFlag(); 767 m_aPasswordRequired.Check(pAllowEmptyPwd->GetValue()); 768 } 769 770 OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); 771 } 772 773 // ----------------------------------------------------------------------- 774 SfxTabPage* ODriversSettings::CreateMySQLJDBC( Window* pParent, const SfxItemSet& _rAttrSet ) 775 { 776 return ( new OGeneralSpecialJDBCDetailsPage( pParent,PAGE_MYSQL_JDBC, _rAttrSet,DSID_MYSQL_PORTNUMBER ) ); 777 } 778 // ----------------------------------------------------------------------- 779 SfxTabPage* ODriversSettings::CreateMySQLNATIVE( Window* pParent, const SfxItemSet& _rAttrSet ) 780 { 781 return ( new MySQLNativePage( pParent, _rAttrSet ) ); 782 } 783 784 // ----------------------------------------------------------------------- 785 SfxTabPage* ODriversSettings::CreateOracleJDBC( Window* pParent, const SfxItemSet& _rAttrSet ) 786 { 787 return ( new OGeneralSpecialJDBCDetailsPage( pParent,PAGE_ORACLE_JDBC, _rAttrSet,DSID_ORACLE_PORTNUMBER) ); 788 } 789 790 791 //======================================================================== 792 //= OAdabasDetailsPage 793 //======================================================================== 794 OAdabasDetailsPage::OAdabasDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 795 :OCommonBehaviourTabPage(pParent, PAGE_ADABAS, _rCoreAttrs, CBTP_USE_CHARSET ,false) 796 ,m_aFTHostname (this, ModuleRes(FT_HOSTNAME)) 797 ,m_aEDHostname (this, ModuleRes(ET_HOSTNAME)) 798 ,m_aFL_1 (this, ModuleRes( FL_SEPARATOR1) ) 799 ,m_FT_CACHE_SIZE( this, ModuleRes( FT_CACHE_SIZE ) ) 800 ,m_NF_CACHE_SIZE( this, ModuleRes( NF_CACHE_SIZE ) ) 801 ,m_FT_DATA_INCREMENT( this, ModuleRes( FT_DATA_INCREMENT ) ) 802 ,m_NF_DATA_INCREMENT( this, ModuleRes( NF_DATA_INCREMENT ) ) 803 ,m_aFL_2( this, ModuleRes( FL_SEPARATOR2 ) ) 804 ,m_FT_CTRLUSERNAME( this, ModuleRes( FT_CTRLUSERNAME ) ) 805 ,m_ET_CTRLUSERNAME( this, ModuleRes( ET_CTRLUSERNAME ) ) 806 ,m_FT_CTRLPASSWORD( this, ModuleRes( FT_CTRLPASSWORD ) ) 807 ,m_ET_CTRLPASSWORD( this, ModuleRes( ET_CTRLPASSWORD ) ) 808 ,m_CB_SHUTDB( this, ModuleRes( CB_SHUTDB ) ) 809 ,m_PB_STAT( this, ModuleRes( PB_STAT ) ) 810 { 811 m_aEDHostname.SetModifyHdl(getControlModifiedLink()); 812 813 FreeResource(); 814 815 m_PB_STAT.SetClickHdl( LINK(this,OAdabasDetailsPage,PBClickHdl)); 816 817 m_CB_SHUTDB.SetClickHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); 818 m_NF_CACHE_SIZE.SetModifyHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); 819 m_NF_DATA_INCREMENT.SetModifyHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); 820 m_ET_CTRLUSERNAME.SetModifyHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); 821 m_ET_CTRLPASSWORD.SetModifyHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); 822 823 m_ET_CTRLUSERNAME.SetLoseFocusHdl( LINK(this,OAdabasDetailsPage,LoseFocusHdl)); 824 m_ET_CTRLPASSWORD.SetLoseFocusHdl( LINK(this,OAdabasDetailsPage,LoseFocusHdl)); 825 826 m_NF_DATA_INCREMENT.SetMin(20); 827 m_NF_DATA_INCREMENT.SetMax(LONG_MAX); 828 m_NF_DATA_INCREMENT.SetValue(20); 829 m_NF_DATA_INCREMENT.SetDecimalDigits(0); 830 831 m_NF_CACHE_SIZE.SetMin(4); 832 m_NF_CACHE_SIZE.SetMax(LONG_MAX); 833 m_NF_CACHE_SIZE.SetValue(4); 834 m_NF_CACHE_SIZE.SetDecimalDigits(0); 835 836 Window* pWindows[] = { &m_aFTHostname,&m_aEDHostname 837 ,&m_FT_CACHE_SIZE,&m_NF_CACHE_SIZE 838 ,&m_FT_DATA_INCREMENT,&m_NF_DATA_INCREMENT 839 ,&m_FT_CTRLUSERNAME,&m_ET_CTRLUSERNAME 840 ,&m_FT_CTRLPASSWORD,&m_ET_CTRLPASSWORD 841 ,&m_CB_SHUTDB 842 ,m_pCharsetLabel, m_pCharset,&m_PB_STAT}; 843 844 sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); 845 for (sal_Int32 i=1; i < nCount; ++i) 846 pWindows[i]->SetZOrder(pWindows[i-1], WINDOW_ZORDER_BEHIND); 847 } 848 849 // ----------------------------------------------------------------------- 850 SfxTabPage* ODriversSettings::CreateAdabas( Window* pParent, const SfxItemSet& _rAttrSet ) 851 { 852 return ( new OAdabasDetailsPage( pParent, _rAttrSet ) ); 853 } 854 855 // ----------------------------------------------------------------------- 856 void OAdabasDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 857 { 858 OCommonBehaviourTabPage::fillControls(_rControlList); 859 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDHostname)); 860 _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_NF_CACHE_SIZE)); 861 _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_NF_DATA_INCREMENT)); 862 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_ET_CTRLUSERNAME)); 863 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_ET_CTRLPASSWORD)); 864 _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_CB_SHUTDB)); 865 } 866 // ----------------------------------------------------------------------- 867 void OAdabasDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 868 { 869 OCommonBehaviourTabPage::fillWindows(_rControlList); 870 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTHostname)); 871 _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); 872 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_FT_CACHE_SIZE)); 873 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_FT_DATA_INCREMENT)); 874 _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_2)); 875 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_FT_CTRLUSERNAME)); 876 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_FT_CTRLPASSWORD)); 877 _rControlList.push_back(new ODisableWrapper<PushButton>(&m_PB_STAT)); 878 } 879 // ----------------------------------------------------------------------- 880 void OAdabasDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 881 { 882 // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 883 sal_Bool bValid, bReadonly; 884 getFlags(_rSet, bValid, bReadonly); 885 886 SFX_ITEMSET_GET(_rSet, pHostName, SfxStringItem, DSID_CONN_HOSTNAME, sal_True); 887 SFX_ITEMSET_GET(_rSet, pCtrlUserItem, SfxStringItem, DSID_CONN_CTRLUSER, sal_True); 888 SFX_ITEMSET_GET(_rSet, pCtrlPwdItem, SfxStringItem, DSID_CONN_CTRLPWD, sal_True); 889 SFX_ITEMSET_GET(_rSet, pShutItem, SfxBoolItem, DSID_CONN_SHUTSERVICE, sal_True); 890 SFX_ITEMSET_GET(_rSet, pIncItem, SfxInt32Item, DSID_CONN_DATAINC, sal_True); 891 SFX_ITEMSET_GET(_rSet, pCacheItem, SfxInt32Item, DSID_CONN_CACHESIZE, sal_True); 892 if ( bValid ) 893 { 894 m_aEDHostname.SetText(pHostName->GetValue()); 895 m_aEDHostname.ClearModifyFlag(); 896 m_CB_SHUTDB.Check( pShutItem->GetValue() ); 897 m_NF_DATA_INCREMENT.SetValue( pIncItem->GetValue() ); 898 m_NF_CACHE_SIZE.SetValue( pCacheItem->GetValue() ); 899 m_ET_CTRLUSERNAME.SetText(pCtrlUserItem->GetValue()); 900 m_ET_CTRLPASSWORD.SetText(pCtrlPwdItem->GetValue()); 901 m_CB_SHUTDB.Enable(m_ET_CTRLUSERNAME.GetText().Len() && m_ET_CTRLPASSWORD.GetText().Len()); 902 } 903 904 OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); 905 } 906 // ----------------------------------------------------------------------- 907 sal_Bool OAdabasDetailsPage::FillItemSet( SfxItemSet& _rSet ) 908 { 909 sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); 910 911 fillString(_rSet,&m_aEDHostname,DSID_CONN_HOSTNAME,bChangedSomething); 912 fillBool(_rSet,&m_CB_SHUTDB,DSID_CONN_SHUTSERVICE,bChangedSomething); 913 fillInt32(_rSet,&m_NF_DATA_INCREMENT,DSID_CONN_DATAINC,bChangedSomething ); 914 fillInt32(_rSet,&m_NF_CACHE_SIZE,DSID_CONN_CACHESIZE,bChangedSomething ); 915 fillString(_rSet,&m_ET_CTRLUSERNAME,DSID_CONN_CTRLUSER,bChangedSomething ); 916 fillString(_rSet,&m_ET_CTRLPASSWORD,DSID_CONN_CTRLPWD,bChangedSomething ); 917 918 return bChangedSomething; 919 } 920 //------------------------------------------------------------------------ 921 IMPL_LINK( OAdabasDetailsPage, AttributesChangedHdl, void *, EMPTYARG ) 922 { 923 m_CB_SHUTDB.Enable(m_ET_CTRLUSERNAME.GetText().Len() && m_ET_CTRLPASSWORD.GetText().Len()); 924 bAttrsChanged = sal_True; 925 callModifiedHdl(); 926 return 0; 927 } 928 //------------------------------------------------------------------------ 929 IMPL_LINK( OAdabasDetailsPage, LoseFocusHdl, Edit *, /*pEdit*/ ) 930 { 931 m_CB_SHUTDB.Enable(m_ET_CTRLUSERNAME.GetText().Len() && m_ET_CTRLPASSWORD.GetText().Len()); 932 return 0; 933 } 934 //------------------------------------------------------------------------ 935 IMPL_LINK( OAdabasDetailsPage, PBClickHdl, Button *, /*pButton*/ ) 936 { 937 OSL_ENSURE(m_pAdminDialog,"No Admin dialog set! ->GPF"); 938 if ( m_pAdminDialog ) 939 { 940 m_pAdminDialog->saveDatasource(); 941 try 942 { 943 Reference< XConnection > xConnection = m_pAdminDialog->createConnection().first; 944 if ( xConnection.is() ) 945 { 946 OAdabasStatistics aDlg(this,m_sUser,xConnection,m_pAdminDialog->getORB()); 947 aDlg.Execute(); 948 ::comphelper::disposeComponent(xConnection); 949 } 950 } 951 catch(Exception&) 952 { 953 } 954 } 955 956 return 0; 957 } 958 959 960 //======================================================================== 961 //= OLDAPDetailsPage 962 //======================================================================== 963 OLDAPDetailsPage::OLDAPDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 964 :OCommonBehaviourTabPage(pParent, PAGE_LDAP, _rCoreAttrs,0,false) 965 ,m_aFL_1 (this, ModuleRes( FL_SEPARATOR1) ) 966 ,m_aBaseDN (this, ModuleRes(FT_BASEDN)) 967 ,m_aETBaseDN (this, ModuleRes(ET_BASEDN)) 968 ,m_aCBUseSSL (this, ModuleRes(CB_USESSL)) 969 ,m_aPortNumber (this, ModuleRes(FT_PORTNUMBER)) 970 ,m_aNFPortNumber (this, ModuleRes(NF_PORTNUMBER)) 971 ,m_aFTRowCount (this, ModuleRes(FT_LDAPROWCOUNT)) 972 ,m_aNFRowCount (this, ModuleRes(NF_LDAPROWCOUNT)) 973 { 974 m_aETBaseDN.SetModifyHdl(getControlModifiedLink()); 975 m_aCBUseSSL.SetToggleHdl(getControlModifiedLink()); 976 m_aNFPortNumber.SetModifyHdl(getControlModifiedLink()); 977 m_aNFRowCount.SetModifyHdl(getControlModifiedLink()); 978 979 m_aNFRowCount.SetUseThousandSep(sal_False); 980 m_iNormalPort = 389; 981 m_iSSLPort = 636; 982 m_aCBUseSSL.SetClickHdl(LINK(this, OLDAPDetailsPage,OnCheckBoxClick)); 983 FreeResource(); 984 } 985 986 // ----------------------------------------------------------------------- 987 SfxTabPage* ODriversSettings::CreateLDAP( Window* pParent, const SfxItemSet& _rAttrSet ) 988 { 989 return ( new OLDAPDetailsPage( pParent, _rAttrSet ) ); 990 } 991 992 // ----------------------------------------------------------------------- 993 sal_Bool OLDAPDetailsPage::FillItemSet( SfxItemSet& _rSet ) 994 { 995 sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); 996 997 fillString(_rSet,&m_aETBaseDN,DSID_CONN_LDAP_BASEDN,bChangedSomething); 998 fillInt32(_rSet,&m_aNFPortNumber,DSID_CONN_LDAP_PORTNUMBER,bChangedSomething); 999 fillInt32(_rSet,&m_aNFRowCount,DSID_CONN_LDAP_ROWCOUNT,bChangedSomething); 1000 fillBool(_rSet,&m_aCBUseSSL,DSID_CONN_LDAP_USESSL,bChangedSomething); 1001 return bChangedSomething; 1002 } 1003 //------------------------------------------------------------------------ 1004 IMPL_LINK( OLDAPDetailsPage, OnCheckBoxClick, CheckBox*, pCheckBox ) 1005 { 1006 callModifiedHdl(); 1007 if ( pCheckBox == &m_aCBUseSSL) 1008 { 1009 if ( m_aCBUseSSL.IsChecked() ) 1010 { 1011 m_iNormalPort = static_cast<sal_Int32>(m_aNFPortNumber.GetValue()); 1012 m_aNFPortNumber.SetValue(m_iSSLPort); 1013 } 1014 else 1015 { 1016 m_iSSLPort = static_cast<sal_Int32>(m_aNFPortNumber.GetValue()); 1017 m_aNFPortNumber.SetValue(m_iNormalPort); 1018 } 1019 } 1020 return 0; 1021 } 1022 1023 // ----------------------------------------------------------------------- 1024 void OLDAPDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 1025 { 1026 OCommonBehaviourTabPage::fillControls(_rControlList); 1027 _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aETBaseDN)); 1028 _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aCBUseSSL)); 1029 _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_aNFPortNumber)); 1030 _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_aNFRowCount)); 1031 } 1032 // ----------------------------------------------------------------------- 1033 void OLDAPDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 1034 { 1035 OCommonBehaviourTabPage::fillWindows(_rControlList); 1036 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aBaseDN)); 1037 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aPortNumber)); 1038 _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTRowCount)); 1039 _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); 1040 } 1041 // ----------------------------------------------------------------------- 1042 void OLDAPDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 1043 { 1044 // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 1045 sal_Bool bValid, bReadonly; 1046 getFlags(_rSet, bValid, bReadonly); 1047 1048 1049 SFX_ITEMSET_GET(_rSet, pBaseDN, SfxStringItem, DSID_CONN_LDAP_BASEDN, sal_True); 1050 SFX_ITEMSET_GET(_rSet, pUseSSL, SfxBoolItem, DSID_CONN_LDAP_USESSL, sal_True); 1051 SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, DSID_CONN_LDAP_PORTNUMBER, sal_True); 1052 SFX_ITEMSET_GET(_rSet, pRowCount, SfxInt32Item, DSID_CONN_LDAP_ROWCOUNT, sal_True); 1053 1054 if ( bValid ) 1055 { 1056 m_aETBaseDN.SetText(pBaseDN->GetValue()); 1057 m_aNFPortNumber.SetValue(pPortNumber->GetValue()); 1058 m_aNFRowCount.SetValue(pRowCount->GetValue()); 1059 m_aCBUseSSL.Check(pUseSSL->GetValue()); 1060 } 1061 1062 OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); 1063 } 1064 1065 1066 //======================================================================== 1067 //= OTextDetailsPage 1068 //======================================================================== 1069 DBG_NAME(OTextDetailsPage) 1070 //------------------------------------------------------------------------ 1071 OTextDetailsPage::OTextDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) 1072 :OCommonBehaviourTabPage(pParent, PAGE_TEXT, _rCoreAttrs, 0, false ) 1073 { 1074 DBG_CTOR(OTextDetailsPage,NULL); 1075 1076 m_pTextConnectionHelper = new OTextConnectionHelper( this, TC_EXTENSION | TC_HEADER | TC_SEPARATORS | TC_CHARSET ); 1077 FreeResource(); 1078 } 1079 1080 // ----------------------------------------------------------------------- 1081 OTextDetailsPage::~OTextDetailsPage() 1082 { 1083 DELETEZ(m_pTextConnectionHelper); 1084 1085 DBG_DTOR(OTextDetailsPage,NULL); 1086 } 1087 1088 // ----------------------------------------------------------------------- 1089 SfxTabPage* ODriversSettings::CreateText( Window* pParent, const SfxItemSet& _rAttrSet ) 1090 { 1091 return ( new OTextDetailsPage( pParent, _rAttrSet ) ); 1092 } 1093 // ----------------------------------------------------------------------- 1094 void OTextDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) 1095 { 1096 OCommonBehaviourTabPage::fillControls(_rControlList); 1097 m_pTextConnectionHelper->fillControls(_rControlList); 1098 1099 } 1100 // ----------------------------------------------------------------------- 1101 void OTextDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) 1102 { 1103 OCommonBehaviourTabPage::fillWindows(_rControlList); 1104 m_pTextConnectionHelper->fillWindows(_rControlList); 1105 1106 } 1107 // ----------------------------------------------------------------------- 1108 void OTextDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) 1109 { 1110 // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) 1111 sal_Bool bValid, bReadonly; 1112 getFlags(_rSet, bValid, bReadonly); 1113 1114 m_pTextConnectionHelper->implInitControls(_rSet, bValid); 1115 OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); 1116 } 1117 1118 // ----------------------------------------------------------------------- 1119 sal_Bool OTextDetailsPage::FillItemSet( SfxItemSet& rSet ) 1120 { 1121 sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(rSet); 1122 bChangedSomething = m_pTextConnectionHelper->FillItemSet(rSet, bChangedSomething); 1123 return bChangedSomething; 1124 } 1125 1126 // ----------------------------------------------------------------------- 1127 sal_Bool OTextDetailsPage::prepareLeave() 1128 { 1129 return m_pTextConnectionHelper->prepareLeave(); 1130 } 1131 1132 //------------------------------------------------------------------------ 1133 SfxTabPage* ODriversSettings::CreateGeneratedValuesPage( Window* _pParent, const SfxItemSet& _rAttrSet ) 1134 { 1135 return new GeneratedValuesPage( _pParent, _rAttrSet ); 1136 } 1137 1138 //------------------------------------------------------------------------ 1139 SfxTabPage* ODriversSettings::CreateSpecialSettingsPage( Window* _pParent, const SfxItemSet& _rAttrSet ) 1140 { 1141 ::rtl::OUString eType = ODbDataSourceAdministrationHelper::getDatasourceType( _rAttrSet ); 1142 DataSourceMetaData aMetaData( eType ); 1143 return new SpecialSettingsPage( _pParent, _rAttrSet, aMetaData ); 1144 } 1145 //......................................................................... 1146 } // namespace dbaui 1147 //......................................................................... 1148