diff options
Diffstat (limited to 'dbaccess/source/ui/dlg/detailpages.cxx')
-rw-r--r-- | dbaccess/source/ui/dlg/detailpages.cxx | 1154 |
1 files changed, 1154 insertions, 0 deletions
diff --git a/dbaccess/source/ui/dlg/detailpages.cxx b/dbaccess/source/ui/dlg/detailpages.cxx new file mode 100644 index 000000000000..69b91b2456a9 --- /dev/null +++ b/dbaccess/source/ui/dlg/detailpages.cxx @@ -0,0 +1,1154 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: detailpages.cxx,v $ + * $Revision: 1.53.18.1 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_dbaccess.hxx" + +#include "detailpages.hxx" +#include "sqlmessage.hxx" +#include "dsmeta.hxx" +#include "advancedsettings.hxx" +#include "DbAdminImpl.hxx" +#include "dsitems.hxx" +#include "dbfindex.hxx" +#include "localresaccess.hxx" +#include "dsnItem.hxx" + +#include "dbaccess_helpid.hrc" +#include "dbu_dlg.hrc" +#include "dbadmin.hrc" + +#ifndef _SFXITEMSET_HXX +#include <svtools/itemset.hxx> +#endif +#ifndef _SFXSTRITEM_HXX +#include <svtools/stritem.hxx> +#endif +#ifndef _SFXENUMITEM_HXX +#include <svtools/eitem.hxx> +#endif +#ifndef _SFXINTITEM_HXX +#include <svtools/intitem.hxx> +#endif +#ifndef _SV_MSGBOX_HXX +#include <vcl/msgbox.hxx> +#endif +#ifndef _SV_MNEMONIC_HXX +#include <vcl/mnemonic.hxx> +#endif +#ifndef _SVTOOLS_CJKOPTIONS_HXX +#include <svtools/cjkoptions.hxx> +#endif +#include <jvmaccess/virtualmachine.hxx> +#ifndef DBAUI_ADABASPAGE_HRC +#include "AdabasPage.hrc" +#endif +#ifndef _DBAUI_ADASTAT_HXX_ +#include "AdabasStat.hxx" +#endif +#ifndef _CONNECTIVITY_COMMONTOOLS_HXX_ +#include <connectivity/CommonTools.hxx> +#endif +#ifndef DBAUI_DRIVERSETTINGS_HXX +#include "DriverSettings.hxx" +#endif +#ifndef _DBAUI_DBADMIN_HXX_ +#include "dbadmin.hxx" +#endif +#ifndef _COMPHELPER_TYPES_HXX_ +#include <comphelper/types.hxx> +#endif +#include "AutoControls.hrc" + +//......................................................................... +namespace dbaui +{ +//......................................................................... + + using namespace ::com::sun::star::uno; + using namespace ::com::sun::star::sdbc; + using namespace ::com::sun::star::beans; + using namespace ::com::sun::star::lang; + using namespace ::com::sun::star::container; + using namespace ::dbtools; + + //======================================================================== + //= OCommonBehaviourTabPage + //======================================================================== + DBG_NAME(OCommonBehaviourTabPage) + //------------------------------------------------------------------------ + OCommonBehaviourTabPage::OCommonBehaviourTabPage(Window* pParent, USHORT nResId, const SfxItemSet& _rCoreAttrs, + sal_uInt32 nControlFlags,bool _bFreeResource) + + :OGenericAdministrationPage(pParent, ModuleRes(nResId), _rCoreAttrs) + ,m_pOptionsLabel(NULL) + ,m_pOptions(NULL) + ,m_pDataConvertFixedLine(NULL) + ,m_pCharsetLabel(NULL) + ,m_pCharset(NULL) + ,m_pAutoFixedLine(NULL) + ,m_pAutoRetrievingEnabled(NULL) + ,m_pAutoIncrementLabel(NULL) + ,m_pAutoIncrement(NULL) + ,m_pAutoRetrievingLabel(NULL) + ,m_pAutoRetrieving(NULL) + ,m_nControlFlags(nControlFlags) + { + DBG_CTOR(OCommonBehaviourTabPage,NULL); + + if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) + { + m_pOptionsLabel = new FixedText(this, ModuleRes(FT_OPTIONS)); + m_pOptions = new Edit(this, ModuleRes(ET_OPTIONS)); + m_pOptions->SetModifyHdl(getControlModifiedLink()); + } + + if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) + { + m_pDataConvertFixedLine = new FixedLine(this, ModuleRes(FL_DATACONVERT)); + m_pCharsetLabel = new FixedText(this, ModuleRes(FT_CHARSET)); + m_pCharset = new CharSetListBox(this, ModuleRes(LB_CHARSET)); + m_pCharset->SetSelectHdl(getControlModifiedLink()); + } + + Window* pWindows[] = { m_pAutoRetrievingEnabled, m_pAutoFixedLine, + m_pAutoIncrementLabel, m_pAutoIncrement, + m_pAutoRetrievingLabel, m_pAutoRetrieving }; + + sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); + for (sal_Int32 i=1; i < nCount; ++i) + { + if ( pWindows[i] ) + { + Window* pPrev = pWindows[i-1]; + for (sal_Int32 j = i-1; pPrev == NULL && j >= 0 ; --j) + { + pPrev = pWindows[j]; + } + if ( pPrev ) + pWindows[i]->SetZOrder(pPrev, WINDOW_ZORDER_BEHIND); + } + } + + if ( _bFreeResource ) + FreeResource(); + } + + // ----------------------------------------------------------------------- + OCommonBehaviourTabPage::~OCommonBehaviourTabPage() + { + DELETEZ(m_pOptionsLabel); + DELETEZ(m_pOptions); + + DELETEZ(m_pDataConvertFixedLine); + DELETEZ(m_pCharsetLabel); + DELETEZ(m_pCharset); + + DELETEZ(m_pAutoFixedLine); + DELETEZ(m_pAutoIncrementLabel); + DELETEZ(m_pAutoIncrement); + + DELETEZ(m_pAutoRetrievingEnabled); + DELETEZ(m_pAutoRetrievingLabel); + DELETEZ(m_pAutoRetrieving); + + DBG_DTOR(OCommonBehaviourTabPage,NULL); + } + + // ----------------------------------------------------------------------- + void OCommonBehaviourTabPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) + { + _rControlList.push_back(new ODisableWrapper<FixedText>(m_pOptionsLabel)); + } + + if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) + { + _rControlList.push_back(new ODisableWrapper<FixedLine>(m_pDataConvertFixedLine)); + _rControlList.push_back(new ODisableWrapper<FixedText>(m_pCharsetLabel)); + } + } + // ----------------------------------------------------------------------- + void OCommonBehaviourTabPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) + _rControlList.push_back(new OSaveValueWrapper<Edit>(m_pOptions)); + + if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) + _rControlList.push_back(new OSaveValueWrapper<ListBox>(m_pCharset)); + } + + // ----------------------------------------------------------------------- + void OCommonBehaviourTabPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + // collect the items + SFX_ITEMSET_GET(_rSet, pOptionsItem, SfxStringItem, DSID_ADDITIONALOPTIONS, sal_True); + SFX_ITEMSET_GET(_rSet, pCharsetItem, SfxStringItem, DSID_CHARSET, sal_True); + + // forward the values to the controls + if (bValid) + { + if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) + { + m_pOptions->SetText(pOptionsItem->GetValue()); + m_pOptions->ClearModifyFlag(); + } + + if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) + { + m_pCharset->SelectEntryByIanaName( pCharsetItem->GetValue() ); + } + } + OGenericAdministrationPage::implInitControls(_rSet, _bSaveValue); + } + // ----------------------------------------------------------------------- + sal_Bool OCommonBehaviourTabPage::FillItemSet(SfxItemSet& _rSet) + { + sal_Bool bChangedSomething = sal_False; + + if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS) + { + fillString(_rSet,m_pOptions,DSID_ADDITIONALOPTIONS,bChangedSomething); + } + + if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET) + { + if ( m_pCharset->StoreSelectedCharSet( _rSet, DSID_CHARSET ) ) + bChangedSomething = sal_True; + } + + return bChangedSomething; + } + + //======================================================================== + //= ODbaseDetailsPage + //======================================================================== + DBG_NAME(ODbaseDetailsPage) + //------------------------------------------------------------------------ + ODbaseDetailsPage::ODbaseDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_DBASE, _rCoreAttrs, CBTP_USE_CHARSET ,false) + ,m_aShowDeleted (this, ModuleRes(CB_SHOWDELETEDROWS)) + ,m_aFL_1 (this, ModuleRes( FL_SEPARATOR1) ) + ,m_aFT_Message (this, ModuleRes( FT_SPECIAL_MESSAGE) ) + ,m_aIndexes (this, ModuleRes(PB_INDICIES)) + { + DBG_CTOR(ODbaseDetailsPage,NULL); + + m_aIndexes.SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked)); + m_aShowDeleted.SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked)); + + // correct the z-order which is mixed-up because the base class constructed some controls before we did + m_pCharset->SetZOrder(&m_aShowDeleted, WINDOW_ZORDER_BEFOR); + + FreeResource(); + } + + // ----------------------------------------------------------------------- + ODbaseDetailsPage::~ODbaseDetailsPage() + { + + DBG_DTOR(ODbaseDetailsPage,NULL); + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateDbase( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new ODbaseDetailsPage( pParent, _rAttrSet ) ); + } + + // ----------------------------------------------------------------------- + void ODbaseDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillControls(_rControlList); + _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aShowDeleted)); + } + // ----------------------------------------------------------------------- + void ODbaseDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillWindows(_rControlList); + _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFT_Message)); + _rControlList.push_back(new ODisableWrapper<PushButton>(&m_aIndexes)); + } + // ----------------------------------------------------------------------- + void ODbaseDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + // get the DSN string (needed for the index dialog) + SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True); + SFX_ITEMSET_GET(_rSet, pTypesItem, DbuTypeCollectionItem, DSID_TYPECOLLECTION, sal_True); + ::dbaccess::ODsnTypeCollection* pTypeCollection = pTypesItem ? pTypesItem->getCollection() : NULL; + if (pTypeCollection && pUrlItem && pUrlItem->GetValue().Len()) + m_sDsn = pTypeCollection->cutPrefix(pUrlItem->GetValue()); + + // get the other relevant items + SFX_ITEMSET_GET(_rSet, pDeletedItem, SfxBoolItem, DSID_SHOWDELETEDROWS, sal_True); + + if ( bValid ) + { + m_aShowDeleted.Check( pDeletedItem->GetValue() ); + m_aFT_Message.Show(m_aShowDeleted.IsChecked()); + } + + OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); + } + + // ----------------------------------------------------------------------- + sal_Bool ODbaseDetailsPage::FillItemSet( SfxItemSet& _rSet ) + { + sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); + + fillBool(_rSet,&m_aShowDeleted,DSID_SHOWDELETEDROWS,bChangedSomething); + return bChangedSomething; + } + + //------------------------------------------------------------------------ + IMPL_LINK( ODbaseDetailsPage, OnButtonClicked, Button*, pButton ) + { + if (&m_aIndexes == pButton) + { + ODbaseIndexDialog aIndexDialog(this, m_sDsn); + aIndexDialog.Execute(); + } + else + { + m_aFT_Message.Show(m_aShowDeleted.IsChecked()); + // it was one of the checkboxes -> we count as modified from now on + callModifiedHdl(); + } + + return 0; + } + + //======================================================================== + //= OAdoDetailsPage + //======================================================================== + DBG_NAME(OAdoDetailsPage) + // ----------------------------------------------------------------------- + OAdoDetailsPage::OAdoDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_ADO, _rCoreAttrs, CBTP_USE_CHARSET ) + { + DBG_CTOR(OAdoDetailsPage,NULL); + + } + + // ----------------------------------------------------------------------- + OAdoDetailsPage::~OAdoDetailsPage() + { + + DBG_DTOR(OAdoDetailsPage,NULL); + } + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateAdo( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OAdoDetailsPage( pParent, _rAttrSet ) ); + } + + // ----------------------------------------------------------------------- + //======================================================================== + //= OOdbcDetailsPage + //======================================================================== + OOdbcDetailsPage::OOdbcDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_ODBC, _rCoreAttrs, CBTP_USE_CHARSET | CBTP_USE_OPTIONS,false) + ,m_aFL_1 (this, ModuleRes(FL_SEPARATOR1)) + ,m_aUseCatalog (this, ModuleRes(CB_USECATALOG)) + { + m_aUseCatalog.SetToggleHdl(getControlModifiedLink()); + FreeResource(); + + Window* pWindows[] = { m_pCharsetLabel, m_pCharset + ,m_pOptionsLabel,m_pOptions,&m_aUseCatalog + }; + + sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); + for (sal_Int32 i=1; i < nCount; ++i) + pWindows[i]->SetZOrder(pWindows[i-1], WINDOW_ZORDER_BEHIND); + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateODBC( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OOdbcDetailsPage( pParent, _rAttrSet ) ); + } + + // ----------------------------------------------------------------------- + sal_Bool OOdbcDetailsPage::FillItemSet( SfxItemSet& _rSet ) + { + sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); + fillBool(_rSet,&m_aUseCatalog,DSID_USECATALOG,bChangedSomething); + return bChangedSomething; + } + // ----------------------------------------------------------------------- + void OOdbcDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillControls(_rControlList); + _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aUseCatalog)); + } + // ----------------------------------------------------------------------- + void OOdbcDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillWindows(_rControlList); + _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); + } + // ----------------------------------------------------------------------- + void OOdbcDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + SFX_ITEMSET_GET(_rSet, pUseCatalogItem, SfxBoolItem, DSID_USECATALOG, sal_True); + + if ( bValid ) + m_aUseCatalog.Check(pUseCatalogItem->GetValue()); + + OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); + } + //======================================================================== + //= OOdbcDetailsPage + //======================================================================== + OUserDriverDetailsPage::OUserDriverDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_USERDRIVER, _rCoreAttrs, + CBTP_USE_CHARSET | CBTP_USE_OPTIONS ,false) + ,m_aFTHostname (this, ModuleRes(FT_HOSTNAME)) + ,m_aEDHostname (this, ModuleRes(ET_HOSTNAME)) + ,m_aPortNumber (this, ModuleRes(FT_PORTNUMBER)) + ,m_aNFPortNumber (this, ModuleRes(NF_PORTNUMBER)) + ,m_aUseCatalog (this, ModuleRes(CB_USECATALOG)) + { + m_aUseCatalog.SetToggleHdl(getControlModifiedLink()); + FreeResource(); + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateUser( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OUserDriverDetailsPage( pParent, _rAttrSet ) ); + } + + // ----------------------------------------------------------------------- + sal_Bool OUserDriverDetailsPage::FillItemSet( SfxItemSet& _rSet ) + { + sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); + + fillInt32(_rSet,&m_aNFPortNumber,DSID_CONN_PORTNUMBER,bChangedSomething); + fillString(_rSet,&m_aEDHostname,DSID_CONN_HOSTNAME,bChangedSomething); + fillBool(_rSet,&m_aUseCatalog,DSID_USECATALOG,bChangedSomething); + + return bChangedSomething; + } + // ----------------------------------------------------------------------- + void OUserDriverDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillControls(_rControlList); + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDHostname)); + _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aUseCatalog)); + _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_aNFPortNumber)); + } + // ----------------------------------------------------------------------- + void OUserDriverDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillWindows(_rControlList); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTHostname)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aPortNumber)); + } + // ----------------------------------------------------------------------- + void OUserDriverDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + SFX_ITEMSET_GET(_rSet, pUseCatalogItem, SfxBoolItem, DSID_USECATALOG, sal_True); + SFX_ITEMSET_GET(_rSet, pHostName, SfxStringItem, DSID_CONN_HOSTNAME, sal_True); + SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, DSID_CONN_PORTNUMBER, sal_True); + + if ( bValid ) + { + m_aEDHostname.SetText(pHostName->GetValue()); + m_aEDHostname.ClearModifyFlag(); + + m_aNFPortNumber.SetValue(pPortNumber->GetValue()); + m_aNFPortNumber.ClearModifyFlag(); + + m_aUseCatalog.Check(pUseCatalogItem->GetValue()); + } + + OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); + } + //======================================================================== + //= OMySQLODBCDetailsPage + //======================================================================== + OMySQLODBCDetailsPage::OMySQLODBCDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_MYSQL_ODBC, _rCoreAttrs, CBTP_USE_CHARSET ) + { + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateMySQLODBC( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OMySQLODBCDetailsPage( pParent, _rAttrSet ) ); + } + + //======================================================================== + //= OMySQLJDBCDetailsPage + //======================================================================== + OGeneralSpecialJDBCDetailsPage::OGeneralSpecialJDBCDetailsPage( Window* pParent,USHORT _nResId, const SfxItemSet& _rCoreAttrs ,USHORT _nPortId) + :OCommonBehaviourTabPage(pParent, _nResId, _rCoreAttrs, CBTP_USE_CHARSET ,false) + ,m_aFL_1 (this, ModuleRes( FL_SEPARATOR1) ) + ,m_aFTHostname (this, ModuleRes(FT_HOSTNAME)) + ,m_aEDHostname (this, ModuleRes(ET_HOSTNAME)) + ,m_aPortNumber (this, ModuleRes(FT_PORTNUMBER)) + ,m_aNFPortNumber (this, ModuleRes(NF_PORTNUMBER)) + ,m_aFTSocket (this, ModuleRes(FT_SOCKET)) + ,m_aEDSocket (this, ModuleRes(ET_SOCKET)) + ,m_aFTDriverClass (this, ModuleRes(FT_JDBCDRIVERCLASS)) + ,m_aEDDriverClass (this, ModuleRes(ET_JDBCDRIVERCLASS)) + ,m_aTestJavaDriver (this, ModuleRes(PB_TESTDRIVERCLASS)) + ,m_nPortId(_nPortId) + ,m_bUseClass(true) + { + SFX_ITEMSET_GET(_rCoreAttrs, pUrlItem, SfxStringItem, DSID_CONNECTURL, sal_True); + SFX_ITEMSET_GET(_rCoreAttrs, pTypesItem, DbuTypeCollectionItem, DSID_TYPECOLLECTION, sal_True); + ::dbaccess::ODsnTypeCollection* pTypeCollection = pTypesItem ? pTypesItem->getCollection() : NULL; + if (pTypeCollection && pUrlItem && pUrlItem->GetValue().Len() ) + { + m_sDefaultJdbcDriverName = pTypeCollection->getJavaDriverClass(pUrlItem->GetValue()); + } + if ( m_sDefaultJdbcDriverName.Len() ) + { + m_aEDDriverClass.SetModifyHdl(getControlModifiedLink()); + m_aEDDriverClass.SetModifyHdl(LINK(this, OGeneralSpecialJDBCDetailsPage, OnEditModified)); + m_aTestJavaDriver.SetClickHdl(LINK(this,OGeneralSpecialJDBCDetailsPage,OnTestJavaClickHdl)); + } + else + { + m_bUseClass = false; + m_aFTDriverClass.Show(FALSE); + m_aEDDriverClass.Show(FALSE); + m_aTestJavaDriver.Show(FALSE); + } + + m_aFTSocket.Show(PAGE_MYSQL_JDBC == _nResId && !m_bUseClass); + m_aEDSocket.Show(PAGE_MYSQL_JDBC == _nResId && !m_bUseClass); + + m_aEDHostname.SetModifyHdl(getControlModifiedLink()); + m_aNFPortNumber.SetModifyHdl(getControlModifiedLink()); + m_aEDSocket.SetModifyHdl(getControlModifiedLink()); + + Window* pWindows[] = { &m_aFTHostname,&m_aEDHostname, + &m_aPortNumber,&m_aNFPortNumber,&m_aFTSocket,&m_aEDSocket, + &m_aFTDriverClass, &m_aEDDriverClass,&m_aTestJavaDriver, + m_pCharsetLabel, m_pCharset}; + + sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); + for (sal_Int32 i=1; i < nCount; ++i) + pWindows[i]->SetZOrder(pWindows[i-1], WINDOW_ZORDER_BEHIND); + + FreeResource(); + } + + // ----------------------------------------------------------------------- + void OGeneralSpecialJDBCDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillControls(_rControlList); + if ( m_bUseClass ) + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDDriverClass)); + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDHostname)); + _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_aNFPortNumber)); + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDSocket)); + } + // ----------------------------------------------------------------------- + void OGeneralSpecialJDBCDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillWindows(_rControlList); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTHostname)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aPortNumber)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTSocket)); + if ( m_bUseClass ) + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTDriverClass)); + _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); + } + + // ----------------------------------------------------------------------- + sal_Bool OGeneralSpecialJDBCDetailsPage::FillItemSet( SfxItemSet& _rSet ) + { + sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); + if ( m_bUseClass ) + fillString(_rSet,&m_aEDDriverClass,DSID_JDBCDRIVERCLASS,bChangedSomething); + fillString(_rSet,&m_aEDHostname,DSID_CONN_HOSTNAME,bChangedSomething); + fillString(_rSet,&m_aEDSocket,DSID_CONN_SOCKET,bChangedSomething); + fillInt32(_rSet,&m_aNFPortNumber,m_nPortId,bChangedSomething ); + + return bChangedSomething; + } + // ----------------------------------------------------------------------- + void OGeneralSpecialJDBCDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + SFX_ITEMSET_GET(_rSet, pDrvItem, SfxStringItem, DSID_JDBCDRIVERCLASS, sal_True); + SFX_ITEMSET_GET(_rSet, pHostName, SfxStringItem, DSID_CONN_HOSTNAME, sal_True); + SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, m_nPortId, sal_True); + SFX_ITEMSET_GET(_rSet, pSocket, SfxStringItem, DSID_CONN_SOCKET, sal_True); + + if ( bValid ) + { + if ( m_bUseClass ) + { + m_aEDDriverClass.SetText(pDrvItem->GetValue()); + m_aEDDriverClass.ClearModifyFlag(); + } + + m_aEDHostname.SetText(pHostName->GetValue()); + m_aEDHostname.ClearModifyFlag(); + + m_aNFPortNumber.SetValue(pPortNumber->GetValue()); + m_aNFPortNumber.ClearModifyFlag(); + + m_aEDSocket.SetText(pSocket->GetValue()); + m_aEDSocket.ClearModifyFlag(); + } + + OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); + + // to get the correcxt value when saveValue was called by base class + if ( m_bUseClass && !m_aEDDriverClass.GetText().Len() ) + { + m_aEDDriverClass.SetText(m_sDefaultJdbcDriverName); + m_aEDDriverClass.SetModifyFlag(); + } + } + // ----------------------------------------------------------------------- + IMPL_LINK(OGeneralSpecialJDBCDetailsPage, OnTestJavaClickHdl, PushButton*, /*_pButton*/) + { + OSL_ENSURE(m_pAdminDialog,"No Admin dialog set! ->GPF"); + OSL_ENSURE(m_bUseClass,"Who called me?"); + + sal_Bool bSuccess = sal_False; + try + { + if ( m_aEDDriverClass.GetText().Len() ) + { +// TODO chage jvmaccess + ::rtl::Reference< jvmaccess::VirtualMachine > xJVM = ::connectivity::getJavaVM(m_pAdminDialog->getORB()); + bSuccess = ::connectivity::existsJavaClassByName(xJVM,m_aEDDriverClass.GetText()); + } + } + catch(Exception&) + { + } + + USHORT nMessage = bSuccess ? STR_JDBCDRIVER_SUCCESS : STR_JDBCDRIVER_NO_SUCCESS; + OSQLMessageBox aMsg( this, String( ModuleRes( nMessage ) ), String() ); + aMsg.Execute(); + return 0L; + } + // ----------------------------------------------------------------------- + IMPL_LINK(OGeneralSpecialJDBCDetailsPage, OnEditModified, Edit*, _pEdit) + { + if ( m_bUseClass && _pEdit == &m_aEDDriverClass ) + m_aTestJavaDriver.Enable( m_aEDDriverClass.GetText().Len() != 0 ); + + // tell the listener we were modified + callModifiedHdl(); + return 0L; + } + + //======================================================================== + //= MySQLNativePage + //======================================================================== + MySQLNativePage::MySQLNativePage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_MYSQL_NATIVE, _rCoreAttrs, CBTP_USE_CHARSET, false ) + ,m_aSeparator1 ( this, ModuleRes( FL_SEPARATOR1) ) + ,m_aMySQLSettings ( *this, getControlModifiedLink() ) + ,m_aSeparator2 ( this, ModuleRes(FL_SEPARATOR2)) + ,m_aUserNameLabel ( this, ModuleRes(FT_USERNAME)) + ,m_aUserName ( this, ModuleRes(ET_USERNAME)) + ,m_aPasswordRequired ( this, ModuleRes(CB_PASSWORD_REQUIRED)) + { + m_aUserName.SetModifyHdl(getControlModifiedLink()); + + Window* pWindows[] = { &m_aMySQLSettings, &m_aSeparator2, &m_aUserNameLabel, &m_aUserName, + &m_aPasswordRequired, m_pCharsetLabel, m_pCharset}; + sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); + for (sal_Int32 i=1; i < nCount; ++i) + pWindows[i]->SetZOrder(pWindows[i-1], WINDOW_ZORDER_BEHIND); + + LayoutHelper::positionBelow( m_aSeparator1, m_aMySQLSettings, RelatedControls, 3 ); + m_aMySQLSettings.Show(); + + FreeResource(); + } + + // ----------------------------------------------------------------------- + void MySQLNativePage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillControls( _rControlList ); + m_aMySQLSettings.fillControls( _rControlList ); + + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aUserName)); + _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aPasswordRequired)); + } + // ----------------------------------------------------------------------- + void MySQLNativePage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillWindows( _rControlList ); + m_aMySQLSettings.fillWindows( _rControlList); + + _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aSeparator1)); + _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aSeparator2)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aUserNameLabel)); + } + + // ----------------------------------------------------------------------- + sal_Bool MySQLNativePage::FillItemSet( SfxItemSet& _rSet ) + { + sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet( _rSet ); + + bChangedSomething |= m_aMySQLSettings.FillItemSet( _rSet ); + + if ( m_aUserName.GetText() != m_aUserName.GetSavedValue() ) + { + _rSet.Put( SfxStringItem( DSID_USER, m_aUserName.GetText() ) ); + _rSet.Put( SfxStringItem( DSID_PASSWORD, String())); + bChangedSomething = sal_True; + } + fillBool(_rSet,&m_aPasswordRequired,DSID_PASSWORDREQUIRED,bChangedSomething); + + return bChangedSomething; + } + // ----------------------------------------------------------------------- + void MySQLNativePage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + m_aMySQLSettings.implInitControls( _rSet ); + + SFX_ITEMSET_GET(_rSet, pUidItem, SfxStringItem, DSID_USER, sal_True); + SFX_ITEMSET_GET(_rSet, pAllowEmptyPwd, SfxBoolItem, DSID_PASSWORDREQUIRED, sal_True); + + if ( bValid ) + { + m_aUserName.SetText(pUidItem->GetValue()); + m_aUserName.ClearModifyFlag(); + m_aPasswordRequired.Check(pAllowEmptyPwd->GetValue()); + } + + OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateMySQLJDBC( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OGeneralSpecialJDBCDetailsPage( pParent,PAGE_MYSQL_JDBC, _rAttrSet,DSID_MYSQL_PORTNUMBER ) ); + } + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateMySQLNATIVE( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new MySQLNativePage( pParent, _rAttrSet ) ); + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateOracleJDBC( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OGeneralSpecialJDBCDetailsPage( pParent,PAGE_ORACLE_JDBC, _rAttrSet,DSID_ORACLE_PORTNUMBER) ); + } + + + //======================================================================== + //= OAdabasDetailsPage + //======================================================================== + OAdabasDetailsPage::OAdabasDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_ADABAS, _rCoreAttrs, CBTP_USE_CHARSET ,false) + ,m_aFTHostname (this, ModuleRes(FT_HOSTNAME)) + ,m_aEDHostname (this, ModuleRes(ET_HOSTNAME)) + ,m_aFL_1 (this, ModuleRes( FL_SEPARATOR1) ) + ,m_FT_CACHE_SIZE( this, ModuleRes( FT_CACHE_SIZE ) ) + ,m_NF_CACHE_SIZE( this, ModuleRes( NF_CACHE_SIZE ) ) + ,m_FT_DATA_INCREMENT( this, ModuleRes( FT_DATA_INCREMENT ) ) + ,m_NF_DATA_INCREMENT( this, ModuleRes( NF_DATA_INCREMENT ) ) + ,m_aFL_2( this, ModuleRes( FL_SEPARATOR2 ) ) + ,m_FT_CTRLUSERNAME( this, ModuleRes( FT_CTRLUSERNAME ) ) + ,m_ET_CTRLUSERNAME( this, ModuleRes( ET_CTRLUSERNAME ) ) + ,m_FT_CTRLPASSWORD( this, ModuleRes( FT_CTRLPASSWORD ) ) + ,m_ET_CTRLPASSWORD( this, ModuleRes( ET_CTRLPASSWORD ) ) + ,m_CB_SHUTDB( this, ModuleRes( CB_SHUTDB ) ) + ,m_PB_STAT( this, ModuleRes( PB_STAT ) ) + { + m_aEDHostname.SetModifyHdl(getControlModifiedLink()); + + FreeResource(); + + m_PB_STAT.SetClickHdl( LINK(this,OAdabasDetailsPage,PBClickHdl)); + + m_CB_SHUTDB.SetClickHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); + m_NF_CACHE_SIZE.SetModifyHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); + m_NF_DATA_INCREMENT.SetModifyHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); + m_ET_CTRLUSERNAME.SetModifyHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); + m_ET_CTRLPASSWORD.SetModifyHdl( LINK(this,OAdabasDetailsPage,AttributesChangedHdl)); + + m_ET_CTRLUSERNAME.SetLoseFocusHdl( LINK(this,OAdabasDetailsPage,LoseFocusHdl)); + m_ET_CTRLPASSWORD.SetLoseFocusHdl( LINK(this,OAdabasDetailsPage,LoseFocusHdl)); + + m_NF_DATA_INCREMENT.SetMin(20); + m_NF_DATA_INCREMENT.SetMax(LONG_MAX); + m_NF_DATA_INCREMENT.SetValue(20); + m_NF_DATA_INCREMENT.SetDecimalDigits(0); + + m_NF_CACHE_SIZE.SetMin(4); + m_NF_CACHE_SIZE.SetMax(LONG_MAX); + m_NF_CACHE_SIZE.SetValue(4); + m_NF_CACHE_SIZE.SetDecimalDigits(0); + + Window* pWindows[] = { &m_aFTHostname,&m_aEDHostname + ,&m_FT_CACHE_SIZE,&m_NF_CACHE_SIZE + ,&m_FT_DATA_INCREMENT,&m_NF_DATA_INCREMENT + ,&m_FT_CTRLUSERNAME,&m_ET_CTRLUSERNAME + ,&m_FT_CTRLPASSWORD,&m_ET_CTRLPASSWORD + ,&m_CB_SHUTDB + ,m_pCharsetLabel, m_pCharset,&m_PB_STAT}; + + sal_Int32 nCount = sizeof(pWindows) / sizeof(pWindows[0]); + for (sal_Int32 i=1; i < nCount; ++i) + pWindows[i]->SetZOrder(pWindows[i-1], WINDOW_ZORDER_BEHIND); + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateAdabas( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OAdabasDetailsPage( pParent, _rAttrSet ) ); + } + + // ----------------------------------------------------------------------- + void OAdabasDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillControls(_rControlList); + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aEDHostname)); + _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_NF_CACHE_SIZE)); + _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_NF_DATA_INCREMENT)); + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_ET_CTRLUSERNAME)); + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_ET_CTRLPASSWORD)); + _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_CB_SHUTDB)); + } + // ----------------------------------------------------------------------- + void OAdabasDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillWindows(_rControlList); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTHostname)); + _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_FT_CACHE_SIZE)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_FT_DATA_INCREMENT)); + _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_2)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_FT_CTRLUSERNAME)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_FT_CTRLPASSWORD)); + _rControlList.push_back(new ODisableWrapper<PushButton>(&m_PB_STAT)); + } + // ----------------------------------------------------------------------- + void OAdabasDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + SFX_ITEMSET_GET(_rSet, pHostName, SfxStringItem, DSID_CONN_HOSTNAME, sal_True); + SFX_ITEMSET_GET(_rSet, pCtrlUserItem, SfxStringItem, DSID_CONN_CTRLUSER, sal_True); + SFX_ITEMSET_GET(_rSet, pCtrlPwdItem, SfxStringItem, DSID_CONN_CTRLPWD, sal_True); + SFX_ITEMSET_GET(_rSet, pShutItem, SfxBoolItem, DSID_CONN_SHUTSERVICE, sal_True); + SFX_ITEMSET_GET(_rSet, pIncItem, SfxInt32Item, DSID_CONN_DATAINC, sal_True); + SFX_ITEMSET_GET(_rSet, pCacheItem, SfxInt32Item, DSID_CONN_CACHESIZE, sal_True); + if ( bValid ) + { + m_aEDHostname.SetText(pHostName->GetValue()); + m_aEDHostname.ClearModifyFlag(); + m_CB_SHUTDB.Check( pShutItem->GetValue() ); + m_NF_DATA_INCREMENT.SetValue( pIncItem->GetValue() ); + m_NF_CACHE_SIZE.SetValue( pCacheItem->GetValue() ); + m_ET_CTRLUSERNAME.SetText(pCtrlUserItem->GetValue()); + m_ET_CTRLPASSWORD.SetText(pCtrlPwdItem->GetValue()); + m_CB_SHUTDB.Enable(m_ET_CTRLUSERNAME.GetText().Len() && m_ET_CTRLPASSWORD.GetText().Len()); + } + + OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); + } + // ----------------------------------------------------------------------- + sal_Bool OAdabasDetailsPage::FillItemSet( SfxItemSet& _rSet ) + { + sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); + + fillString(_rSet,&m_aEDHostname,DSID_CONN_HOSTNAME,bChangedSomething); + fillBool(_rSet,&m_CB_SHUTDB,DSID_CONN_SHUTSERVICE,bChangedSomething); + fillInt32(_rSet,&m_NF_DATA_INCREMENT,DSID_CONN_DATAINC,bChangedSomething ); + fillInt32(_rSet,&m_NF_CACHE_SIZE,DSID_CONN_CACHESIZE,bChangedSomething ); + fillString(_rSet,&m_ET_CTRLUSERNAME,DSID_CONN_CTRLUSER,bChangedSomething ); + fillString(_rSet,&m_ET_CTRLPASSWORD,DSID_CONN_CTRLPWD,bChangedSomething ); + + return bChangedSomething; + } + //------------------------------------------------------------------------ + IMPL_LINK( OAdabasDetailsPage, AttributesChangedHdl, void *, EMPTYARG ) + { + m_CB_SHUTDB.Enable(m_ET_CTRLUSERNAME.GetText().Len() && m_ET_CTRLPASSWORD.GetText().Len()); + bAttrsChanged = TRUE; + callModifiedHdl(); + return 0; + } + //------------------------------------------------------------------------ + IMPL_LINK( OAdabasDetailsPage, LoseFocusHdl, Edit *, /*pEdit*/ ) + { + m_CB_SHUTDB.Enable(m_ET_CTRLUSERNAME.GetText().Len() && m_ET_CTRLPASSWORD.GetText().Len()); + return 0; + } + //------------------------------------------------------------------------ + IMPL_LINK( OAdabasDetailsPage, PBClickHdl, Button *, /*pButton*/ ) + { + OSL_ENSURE(m_pAdminDialog,"No Admin dialog set! ->GPF"); + if ( m_pAdminDialog ) + { + m_pAdminDialog->saveDatasource(); + try + { + Reference< XConnection > xConnection = m_pAdminDialog->createConnection().first; + if ( xConnection.is() ) + { + OAdabasStatistics aDlg(this,m_sUser,xConnection,m_pAdminDialog->getORB()); + aDlg.Execute(); + ::comphelper::disposeComponent(xConnection); + } + } + catch(Exception&) + { + } + } + + return 0; + } + + + //======================================================================== + //= OLDAPDetailsPage + //======================================================================== + OLDAPDetailsPage::OLDAPDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_LDAP, _rCoreAttrs,0,false) + ,m_aFL_1 (this, ModuleRes( FL_SEPARATOR1) ) + ,m_aBaseDN (this, ModuleRes(FT_BASEDN)) + ,m_aETBaseDN (this, ModuleRes(ET_BASEDN)) + ,m_aCBUseSSL (this, ModuleRes(CB_USESSL)) + ,m_aPortNumber (this, ModuleRes(FT_PORTNUMBER)) + ,m_aNFPortNumber (this, ModuleRes(NF_PORTNUMBER)) + ,m_aFTRowCount (this, ModuleRes(FT_LDAPROWCOUNT)) + ,m_aNFRowCount (this, ModuleRes(NF_LDAPROWCOUNT)) + { + m_aETBaseDN.SetModifyHdl(getControlModifiedLink()); + m_aCBUseSSL.SetToggleHdl(getControlModifiedLink()); + m_aNFPortNumber.SetModifyHdl(getControlModifiedLink()); + m_aNFRowCount.SetModifyHdl(getControlModifiedLink()); + + m_aNFRowCount.SetUseThousandSep(sal_False); + m_iNormalPort = 389; + m_iSSLPort = 636; + m_aCBUseSSL.SetClickHdl(LINK(this, OLDAPDetailsPage,OnCheckBoxClick)); + FreeResource(); + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateLDAP( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OLDAPDetailsPage( pParent, _rAttrSet ) ); + } + + // ----------------------------------------------------------------------- + sal_Bool OLDAPDetailsPage::FillItemSet( SfxItemSet& _rSet ) + { + sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet); + + fillString(_rSet,&m_aETBaseDN,DSID_CONN_LDAP_BASEDN,bChangedSomething); + fillInt32(_rSet,&m_aNFPortNumber,DSID_CONN_LDAP_PORTNUMBER,bChangedSomething); + fillInt32(_rSet,&m_aNFRowCount,DSID_CONN_LDAP_ROWCOUNT,bChangedSomething); + fillBool(_rSet,&m_aCBUseSSL,DSID_CONN_LDAP_USESSL,bChangedSomething); + return bChangedSomething; + } + //------------------------------------------------------------------------ + IMPL_LINK( OLDAPDetailsPage, OnCheckBoxClick, CheckBox*, pCheckBox ) + { + callModifiedHdl(); + if ( pCheckBox == &m_aCBUseSSL) + { + if ( m_aCBUseSSL.IsChecked() ) + { + m_iNormalPort = static_cast<sal_Int32>(m_aNFPortNumber.GetValue()); + m_aNFPortNumber.SetValue(m_iSSLPort); + } + else + { + m_iSSLPort = static_cast<sal_Int32>(m_aNFPortNumber.GetValue()); + m_aNFPortNumber.SetValue(m_iNormalPort); + } + } + return 0; + } + + // ----------------------------------------------------------------------- + void OLDAPDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillControls(_rControlList); + _rControlList.push_back(new OSaveValueWrapper<Edit>(&m_aETBaseDN)); + _rControlList.push_back(new OSaveValueWrapper<CheckBox>(&m_aCBUseSSL)); + _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_aNFPortNumber)); + _rControlList.push_back(new OSaveValueWrapper<NumericField>(&m_aNFRowCount)); + } + // ----------------------------------------------------------------------- + void OLDAPDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillWindows(_rControlList); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aBaseDN)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aPortNumber)); + _rControlList.push_back(new ODisableWrapper<FixedText>(&m_aFTRowCount)); + _rControlList.push_back(new ODisableWrapper<FixedLine>(&m_aFL_1)); + } + // ----------------------------------------------------------------------- + void OLDAPDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + + SFX_ITEMSET_GET(_rSet, pBaseDN, SfxStringItem, DSID_CONN_LDAP_BASEDN, sal_True); + SFX_ITEMSET_GET(_rSet, pUseSSL, SfxBoolItem, DSID_CONN_LDAP_USESSL, sal_True); + SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, DSID_CONN_LDAP_PORTNUMBER, sal_True); + SFX_ITEMSET_GET(_rSet, pRowCount, SfxInt32Item, DSID_CONN_LDAP_ROWCOUNT, sal_True); + + if ( bValid ) + { + m_aETBaseDN.SetText(pBaseDN->GetValue()); + m_aNFPortNumber.SetValue(pPortNumber->GetValue()); + m_aNFRowCount.SetValue(pRowCount->GetValue()); + m_aCBUseSSL.Check(pUseSSL->GetValue()); + } + + OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); + } + + + //======================================================================== + //= OTextDetailsPage + //======================================================================== + DBG_NAME(OTextDetailsPage) + //------------------------------------------------------------------------ + OTextDetailsPage::OTextDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs ) + :OCommonBehaviourTabPage(pParent, PAGE_TEXT, _rCoreAttrs, 0, false ) + { + DBG_CTOR(OTextDetailsPage,NULL); + + m_pTextConnectionHelper = new OTextConnectionHelper( this, TC_EXTENSION | TC_HEADER | TC_SEPARATORS | TC_CHARSET ); + FreeResource(); + } + + // ----------------------------------------------------------------------- + OTextDetailsPage::~OTextDetailsPage() + { + DELETEZ(m_pTextConnectionHelper); + + DBG_DTOR(OTextDetailsPage,NULL); + } + + // ----------------------------------------------------------------------- + SfxTabPage* ODriversSettings::CreateText( Window* pParent, const SfxItemSet& _rAttrSet ) + { + return ( new OTextDetailsPage( pParent, _rAttrSet ) ); + } + // ----------------------------------------------------------------------- + void OTextDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillControls(_rControlList); + m_pTextConnectionHelper->fillControls(_rControlList); + + } + // ----------------------------------------------------------------------- + void OTextDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) + { + OCommonBehaviourTabPage::fillWindows(_rControlList); + m_pTextConnectionHelper->fillWindows(_rControlList); + + } + // ----------------------------------------------------------------------- + void OTextDetailsPage::implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue) + { + // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa) + sal_Bool bValid, bReadonly; + getFlags(_rSet, bValid, bReadonly); + + m_pTextConnectionHelper->implInitControls(_rSet, bValid); + OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue); + } + + // ----------------------------------------------------------------------- + sal_Bool OTextDetailsPage::FillItemSet( SfxItemSet& rSet ) + { + sal_Bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(rSet); + bChangedSomething = m_pTextConnectionHelper->FillItemSet(rSet, bChangedSomething); + return bChangedSomething; + } + + // ----------------------------------------------------------------------- + sal_Bool OTextDetailsPage::prepareLeave() + { + return m_pTextConnectionHelper->prepareLeave(); + } + + //------------------------------------------------------------------------ + SfxTabPage* ODriversSettings::CreateGeneratedValuesPage( Window* _pParent, const SfxItemSet& _rAttrSet ) + { + return new GeneratedValuesPage( _pParent, _rAttrSet ); + } + + //------------------------------------------------------------------------ + SfxTabPage* ODriversSettings::CreateSpecialSettingsPage( Window* _pParent, const SfxItemSet& _rAttrSet ) + { + ::rtl::OUString eType = ODbDataSourceAdministrationHelper::getDatasourceType( _rAttrSet ); + DataSourceMetaData aMetaData( eType ); + return new SpecialSettingsPage( _pParent, _rAttrSet, aMetaData ); + } +//......................................................................... +} // namespace dbaui +//......................................................................... |