summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/dlg/adminpages.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/ui/dlg/adminpages.hxx')
-rw-r--r--dbaccess/source/ui/dlg/adminpages.hxx303
1 files changed, 303 insertions, 0 deletions
diff --git a/dbaccess/source/ui/dlg/adminpages.hxx b/dbaccess/source/ui/dlg/adminpages.hxx
new file mode 100644
index 000000000000..be6b923c2997
--- /dev/null
+++ b/dbaccess/source/ui/dlg/adminpages.hxx
@@ -0,0 +1,303 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _DBAUI_ADMINPAGES_HXX_
+#define _DBAUI_ADMINPAGES_HXX_
+
+#ifndef _SFXTABDLG_HXX
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _DBAUI_DSNTYPES_HXX_
+#include "dsntypes.hxx"
+#endif
+#ifndef _DBAUI_COMMON_TYPES_HXX_
+#include "commontypes.hxx"
+#endif
+#ifndef _SVTOOLS_WIZARDMACHINE_HXX_
+#include <svtools/wizardmachine.hxx>
+#endif
+#ifndef _SV_FIELD_HXX
+#include <vcl/field.hxx>
+#endif
+#ifndef _SV_FIXED_HXX
+#include <vcl/fixed.hxx>
+#endif
+
+
+class NumericField;
+class Edit;
+//.........................................................................
+namespace dbaui
+{
+//.........................................................................
+ /// helper class to wrap the savevalue and disable call
+ class SAL_NO_VTABLE ISaveValueWrapper
+ {
+ public:
+ virtual bool SaveValue() = 0;
+ virtual bool Disable() = 0;
+ };
+
+ template < class T > class OSaveValueWrapper : public ISaveValueWrapper
+ {
+ T* m_pSaveValue;
+ public:
+ OSaveValueWrapper(T* _pSaveValue) : m_pSaveValue(_pSaveValue)
+ { OSL_ENSURE(m_pSaveValue,"Illegal argument!"); }
+
+ virtual bool SaveValue() { m_pSaveValue->SaveValue(); return true;} // bool return value only for stl
+ virtual bool Disable() { m_pSaveValue->Disable(); return true;} // bool return value only for stl
+ };
+
+ template < class T > class ODisableWrapper : public ISaveValueWrapper
+ {
+ T* m_pSaveValue;
+ public:
+ ODisableWrapper(T* _pSaveValue) : m_pSaveValue(_pSaveValue)
+ { OSL_ENSURE(m_pSaveValue,"Illegal argument!"); }
+
+ virtual bool SaveValue() { return true;} // bool return value only for stl
+ virtual bool Disable() { m_pSaveValue->Disable(); return true;} // bool return value only for stl
+ };
+
+ struct TSaveValueWrapperFunctor : public ::std::unary_function< ISaveValueWrapper, bool>
+ {
+ bool operator() (ISaveValueWrapper* lhs)
+ {
+ return lhs->SaveValue();
+ }
+ };
+ struct TDisableWrapperFunctor : public ::std::unary_function< ISaveValueWrapper, bool>
+ {
+ bool operator() (ISaveValueWrapper* lhs)
+ {
+ return lhs->Disable();
+ }
+ };
+
+ struct TDeleteWrapperFunctor : public ::std::unary_function< ISaveValueWrapper, bool>
+ {
+ bool operator() (ISaveValueWrapper* lhs)
+ {
+ delete lhs;
+ return true;
+ }
+ };
+
+ //=========================================================================
+ //= OGenericAdministrationPage
+ //=========================================================================
+ class IDatabaseSettingsDialog;
+ class IItemSetHelper;
+ class OGenericAdministrationPage :public SfxTabPage
+ ,public ::svt::IWizardPageController
+ {
+ private:
+ Link m_aModifiedHandler; /// to be called if something on the page has been modified
+ sal_Bool m_abEnableRoadmap;
+ protected:
+ IDatabaseSettingsDialog* m_pAdminDialog;
+ IItemSetHelper* m_pItemSetHelper;
+ FixedText* m_pFT_HeaderText;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ m_xORB;
+ public:
+ OGenericAdministrationPage(Window* _pParent, const ResId& _rId, const SfxItemSet& _rAttrSet);
+ ~OGenericAdministrationPage();
+
+ /// set a handler which gets called every time something on the page has been modified
+ void SetModifiedHandler(const Link& _rHandler) { m_aModifiedHandler = _rHandler; }
+
+ /** Sets the ParentDialog
+ @param _pAdminDialog
+ the ParentDialog
+ @param _pItemSetHelper
+ the itemset helper
+ */
+ inline void SetAdminDialog(IDatabaseSettingsDialog* _pDialog,IItemSetHelper* _pItemSetHelper)
+ {
+ OSL_ENSURE(_pDialog && _pItemSetHelper,"Values are NULL!");
+ m_pAdminDialog = _pDialog;
+ m_pItemSetHelper = _pItemSetHelper;
+ }
+
+ /** Sets the ServiceFactory
+ @param _rxORB
+ The service factory.
+ */
+ virtual void SetServiceFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > _rxORB)
+ {
+ m_xORB = _rxORB;
+ }
+
+ /** opens a dialog filled with all data sources available for this type and
+ returns the selected on.
+ @param _eType
+ The type for which the data source dialog should be opened.
+ @param _sReturn
+ <OUT/> contains the selected name.
+ @return
+ <FALSE/> if an error occured, otherwise <TRUE/>
+ */
+ sal_Bool getSelectedDataSource(::rtl::OUString& _sReturn,::rtl::OUString& _sCurr);
+
+ // svt::IWizardPageController
+ virtual void initializePage();
+ virtual sal_Bool commitPage( ::svt::WizardTypes::CommitPageReason _eReason );
+ virtual bool canAdvance() const;
+
+ void SetRoadmapStateValue( sal_Bool _bDoEnable ) { m_abEnableRoadmap = _bDoEnable; }
+ bool GetRoadmapStateValue() const { return m_abEnableRoadmap; }
+
+ protected:
+ /// default implementation: call FillItemSet, call prepareLeave,
+ virtual int DeactivatePage(SfxItemSet* pSet);
+ using SfxTabPage::DeactivatePage;
+ /// default implementation: call implInitControls with the given item set and _bSaveValue = sal_False
+ virtual void Reset(const SfxItemSet& _rCoreAttrs);
+ /// default implementation: call implInitControls with the given item set and _bSaveValue = sal_True
+ virtual void ActivatePage(const SfxItemSet& _rSet);
+
+ // TabPage overridables
+ virtual void ActivatePage();
+
+ protected:
+ void callModifiedHdl() const { if (m_aModifiedHandler.IsSet()) m_aModifiedHandler.Call((void*)this); }
+
+ /// called from within DeactivatePage. The page is allowed to be deactivated if this method returns sal_True
+ virtual sal_Bool prepareLeave() { return sal_True; }
+
+ /** called from within Reset and ActivatePage, use to initialize the controls with the items from the given set
+ @param _bSaveValue if set to sal_True, the implementation should call SaveValue on all relevant controls
+ */
+ virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
+
+ /// analyze the invalid and the readonly flag which may be present in the set
+ void getFlags(const SfxItemSet& _rSet, sal_Bool& _rValid, sal_Bool& _rReadonly);
+
+ /** will be called inside <method>implInitControls</method> to save the value if necessary
+ @param _rControlList
+ The list must be filled with the controls.
+ It is not allowed to clear the list before pusching data into it.
+ */
+ virtual void fillControls(::std::vector< ISaveValueWrapper* >& _rControlList) = 0;
+
+ /** will be called inside <method>implInitControls</method> to disable if necessary
+ @param _rControlList
+ The list must be filled with the controls.
+ It is not allowed to clear the list before pusching data into it.
+ */
+ virtual void fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList) = 0;
+
+ public:
+ /** fills the Boolean value into the item set when the value changed.
+ @param _rSet
+ The item set where to put the new value into.
+ @param _pCheckBox
+ The check box which is checked.
+ @param _nID
+ The id in the itemset to set whith the new value.
+ @param _bChangedSomething
+ <TRUE/> if something changed otherwise <FALSE/>
+ @param _bRevertValue
+ set to <TRUE/> if the display value should be reverted before putting it into the set
+ */
+ static void fillBool( SfxItemSet& _rSet, CheckBox* _pCheckBox, USHORT _nID, sal_Bool& _bChangedSomething, bool _bRevertValue = false);
+
+ /** fills the int value into the item set when the value changed.
+ @param _rSet
+ The item set where to put the new value into.
+ @param _pEdit
+ The check box which is checked.
+ @param _nID
+ The id in the itemset to set whith the new value.
+ @param _bChangedSomething
+ <TRUE/> if something changed otherwise <FALSE/>
+ */
+ static void fillInt32(SfxItemSet& _rSet,NumericField* _pEdit,USHORT _nID,sal_Bool& _bChangedSomething);
+
+ /** fills the String value into the item set when the value changed.
+ @param _rSet
+ The item set where to put the new value into.
+ @param _pEdit
+ The check box which is checked.
+ @param _nID
+ The id in the itemset to set whith the new value.
+ @param _bChangedSomething
+ <TRUE/> if something changed otherwise <FALSE/>
+ */
+ static void fillString(SfxItemSet& _rSet,Edit* _pEdit,USHORT _nID,sal_Bool& _bChangedSomething);
+
+ protected:
+ // used to set the right Pane header of a wizard to bold
+ void SetControlFontWeight(Window* _pWindow, FontWeight _eWeight = WEIGHT_BOLD);
+ void SetHeaderText( USHORT _nFTResId, USHORT _StringResId);
+
+ /** This link be used for controls where the tabpage does not need to take any special action when the control
+ is modified. The implementation just calls callModifiedHdl.
+ */
+ DECL_LINK(OnControlModified, Control*);
+ DECL_LINK(OnTestConnectionClickHdl,PushButton*);
+
+ /// may be used in SetXXXHdl calls to controls, is a link to <method>OnControlModified</method>
+ virtual Link getControlModifiedLink() { return LINK(this, OGenericAdministrationPage, OnControlModified); }
+ };
+
+ //=========================================================================
+ //= ControlRelation
+ //=========================================================================
+ enum ControlRelation
+ {
+ RelatedControls, UnrelatedControls
+ };
+
+ //=========================================================================
+ //= LayoutHelper
+ //=========================================================================
+ class LayoutHelper
+ {
+ public:
+ static void positionBelow(
+ const Control& _rReference,
+ Control& _rControl,
+ const ControlRelation _eRelation,
+ const long _nIndentAppFont
+ );
+ /** fits the button size to be large enough to contain the buttons text
+ */
+ static void fitSizeRightAligned( PushButton& io_button );
+ // why is CalcMinimumSize not a virtual method of ::Window?
+ };
+
+//.........................................................................
+} // namespace dbaui
+//.........................................................................
+
+#endif // _DBAUI_ADMINPAGES_HXX_
+
+