Files
libreoffice/dbaccess/source/ui/dlg/adminpages.hxx
2000-12-07 13:15:42 +00:00

517 lines
19 KiB
C++

/*************************************************************************
*
* $RCSfile: adminpages.hxx,v $
*
* $Revision: 1.16 $
*
* last change: $Author: oj $ $Date: 2000-12-07 14:15:42 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc..
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifndef _DBAUI_ADMINPAGES_HXX_
#define _DBAUI_ADMINPAGES_HXX_
#ifndef _SFXTABDLG_HXX
#include <sfx2/tabdlg.hxx>
#endif
#ifndef _SV_FIXED_HXX
#include <vcl/fixed.hxx>
#endif
#ifndef _SV_LSTBOX_HXX
#include <vcl/lstbox.hxx>
#endif
#ifndef _SV_EDIT_HXX
#include <vcl/edit.hxx>
#endif
#ifndef _SV_BUTTON_HXX
#include <vcl/imagebtn.hxx>
#endif
#ifndef _SV_GROUP_HXX
#include <vcl/group.hxx>
#endif
#ifndef _SV_COMBOBOX_HXX
#include <vcl/combobox.hxx>
#endif
#ifndef _DBAUI_DSNTYPES_HXX_
#include "dsntypes.hxx"
#endif
#ifndef _DBAUI_CHARSETS_HXX_
#include "charsets.hxx"
#endif
#ifndef _DBAUI_CURLEDIT_HXX_
#include "curledit.hxx"
#endif
#ifndef _DBAUI_TABLETREE_HXX_
#include "tabletree.hxx"
#endif
#ifndef _DBAUI_COMMON_TYPES_HXX_
#include "commontypes.hxx"
#endif
#ifndef _UCBHELPER_CONTENT_HXX
#include <ucbhelper/content.hxx>
#endif
//.........................................................................
namespace dbaui
{
//.........................................................................
//=========================================================================
//= OGenericAdministrationPage
//=========================================================================
class OGenericAdministrationPage : public SfxTabPage
{
protected:
Link m_aModifiedHandler; /// to be called if something on the page has been modified
public:
OGenericAdministrationPage(Window* _pParent, const ResId& _rId, const SfxItemSet& _rAttrSet);
/// set a handler which gets called every time something on the page has been modified
void SetModifiedHandler(const Link& _rHandler) { m_aModifiedHandler = _rHandler; }
protected:
/// default implementation: call FillItemSet, call checkItems,
virtual int DeactivatePage(SfxItemSet* pSet);
/// 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);
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 checkItems() { 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);
protected:
/** 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*);
/// may be used in SetXXXHdl calls to controls, is a link to <method>OnControlModified</method>
Link getControlModifiedLink() { return LINK(this, OGenericAdministrationPage, OnControlModified); }
};
//=========================================================================
//= OGeneralPage
//=========================================================================
/**
*/
class OGeneralPage : public OGenericAdministrationPage
{
OGeneralPage(Window* pParent, const SfxItemSet& _rItems);
private:
// dialog controls
FixedText m_aNameLabel;
Edit m_aName;
GroupBox m_aTypeBox;
FixedText m_aDatasourceTypeLabel;
ListBox m_aDatasourceType;
FixedText m_aConnectionLabel;
OConnectionURLEdit m_aConnection;
PushButton m_aBrowseConnection;
// FixedText m_aTimeoutLabel;
// Edit m_aTimeoutNumber;
// ListBox m_aTimeoutUnit;
FixedText m_aSpecialMessage;
ODsnTypeCollection* m_pCollection; /// the DSN type collection instance
DECLARE_STL_MAP(DATASOURCE_TYPE, String, ::std::less< DATASOURCE_TYPE >, SelectionHistory);
DATASOURCE_TYPE m_eCurrentSelection; /// currently selected type
SelectionHistory m_aSelectionHistory; /// last selected ConnectURLs for all types
Link m_aTypeSelectHandler; /// to be called if a new type is selected
Link m_aNameModifiedHandler; /// to be called whenever the name of the data source is changed by the user
sal_Bool m_bDisplayingInvalid : 1; // the currently displayed data source is deleted
public:
static SfxTabPage* Create(Window* pParent, const SfxItemSet& _rAttrSet);
/// set a handler which gets called every time the user selects a new type
void SetTypeSelectHandler(const Link& _rHandler) { m_aTypeSelectHandler = _rHandler; }
/// get the currently selected datasource type
DATASOURCE_TYPE GetSelectedType() const { return m_eCurrentSelection; }
/// set a handler which gets called every time the user changes the data source name
void SetNameModifyHandler(const Link& _rHandler) { m_aNameModifiedHandler = _rHandler; }
/// get the current name the user wants the data source to have
String GetCurrentName() const { return m_aName.GetText(); }
protected:
// SfxTabPage overridables
virtual BOOL FillItemSet(SfxItemSet& _rCoreAttrs);
virtual void Reset(const SfxItemSet& _rCoreAttrs);
virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
virtual sal_Bool checkItems();
virtual void GetFocus();
protected:
void onTypeSelected(DATASOURCE_TYPE _eType);
void initializeHistory();
sal_Bool isBrowseable(DATASOURCE_TYPE _eType) const;
StringBag getInstalledAdabasDBDirs(const String &_rPath,const ::ucb::ResultSetInclude& _reResultSetInclude);
StringBag getInstalledAdabasDBs(const String &_rConfigDir,const String &_rWorkDir);
DECL_LINK(OnDatasourceTypeSelected, ListBox*);
DECL_LINK(OnBrowseConnections, PushButton*);
DECL_LINK(OnNameModified, Edit*);
};
//=========================================================================
//= OCommonBehaviourTabPage
//=========================================================================
#define CBTP_NONE 0x0000
#define CBTP_USE_UIDPWD 0x0001
#define CBTP_USE_CHARSET 0x0002
#define CBTP_USE_OPTIONS 0x0004
/** eases the implementation of tab pages handling user/password and/or character
set and/or generic options input
<BR>
The controls to be used habe to be defined within the resource, as usual, but
this class does all the handling necessary.
*/
class OCommonBehaviourTabPage : public OGenericAdministrationPage
{
protected:
FixedText* m_pUserNameLabel;
Edit* m_pUserName;
FixedText* m_pPasswordLabel;
Edit* m_pPassword;
CheckBox* m_pPasswordRequired;
FixedText* m_pOptionsLabel;
Edit* m_pOptions;
FixedText* m_pCharsetLabel;
ListBox* m_pCharset;
OCharsetDisplay m_aCharsets;
USHORT m_nControlFlags;
public:
virtual BOOL FillItemSet (SfxItemSet& _rCoreAttrs);
virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
protected:
OCommonBehaviourTabPage(Window* pParent, USHORT nResId, const SfxItemSet& _rCoreAttrs, USHORT nControlFlags);
// nControlFlags ist eine Kombination der CBTP_xxx-Konstanten
virtual ~OCommonBehaviourTabPage();
};
//========================================================================
//= ODbaseDetailsPage
//========================================================================
class ODbaseDetailsPage : public OCommonBehaviourTabPage
{
public:
static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
virtual BOOL FillItemSet ( SfxItemSet& _rCoreAttrs );
/// get the SfxPoolItem ids used by this tab page
static sal_Int32* getDetailIds();
private:
GroupBox m_aFrame;
CheckBox m_aShowDeleted;
PushButton m_aIndexes;
String m_sDsn;
protected:
ODbaseDetailsPage(Window* pParent, const SfxItemSet& _rCoreAttrs);
~ODbaseDetailsPage();
protected:
virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
private:
DECL_LINK( OnButtonClicked, Button * );
};
//========================================================================
//= OJdbcDetailsPage
//========================================================================
class OJdbcDetailsPage : public OCommonBehaviourTabPage
{
public:
static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
virtual BOOL FillItemSet ( SfxItemSet& _rCoreAttrs );
/// get the SfxPoolItem ids used by this tab page
static sal_Int32* getDetailIds();
private:
FixedText m_aDriverLabel;
Edit m_aDriver;
FixedText m_aJdbcUrlLabel;
OConnectionURLEdit m_aJdbcUrl;
FixedLine m_aSeparator1;
OJdbcDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
~OJdbcDetailsPage();
virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
};
//========================================================================
//= OOdbcDetailsPage
//========================================================================
class OOdbcDetailsPage : public OCommonBehaviourTabPage
{
public:
static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
/// get the SfxPoolItem ids used by this tab page
static sal_Int32* getDetailIds();
private:
FixedLine m_aSeparator1;
OOdbcDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
};
//========================================================================
//= OAdabasDetailsPage
//========================================================================
class OAdabasDetailsPage : public OCommonBehaviourTabPage
{
public:
static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
/// get the SfxPoolItem ids used by this tab page
static sal_Int32* getDetailIds();
private:
FixedLine m_aSeparator1;
OAdabasDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
};
//========================================================================
//= OTextDetailsPage
//========================================================================
class OTextDetailsPage : public OCommonBehaviourTabPage
{
public:
static SfxTabPage* Create( Window* pParent, const SfxItemSet& _rAttrSet );
virtual BOOL FillItemSet ( SfxItemSet& _rCoreAttrs );
/// get the SfxPoolItem ids used by this tab page
static sal_Int32* getDetailIds();
private:
CheckBox m_aHeader;
FixedText m_aFieldSeparatorLabel;
ComboBox m_aFieldSeparator;
FixedText m_aTextSeparatorLabel;
ComboBox m_aTextSeparator;
FixedText m_aDecimalSeparatorLabel;
ComboBox m_aDecimalSeparator;
FixedText m_aThousandsSeparatorLabel;
ComboBox m_aThousandsSeparator;
FixedLine m_aSeparator1;
FixedText m_aExtensionLabel;
ComboBox m_aExtension;
String m_aFieldSeparatorList;
String m_aTextSeparatorList;
OTextDetailsPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
~OTextDetailsPage();
private:
String GetSeparator( const ComboBox& rBox, const String& rList );
void SetSeparator( ComboBox& rBox, const String& rList, const String& rVal );
virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
virtual sal_Bool checkItems();
};
//========================================================================
//= OTableSubscriptionPage
//========================================================================
class ODbAdminDialog;
class OTableSubscriptionPage : public OGenericAdministrationPage
{
friend class ODbAdminDialog;
private:
GroupBox m_aTables;
RadioButton m_aIncludeAll;
RadioButton m_aIncludeNone;
RadioButton m_aIncludeSelected;
OTableTreeListBox m_aTablesList;
CheckBox m_aSuppressVersionColumns;
sal_Bool m_bCheckedAll : 1;
sal_Bool m_bCatalogAtStart : 1;
sal_Bool m_bInitializingControls : 1;
::rtl::OUString m_sCatalogSeparator;
ODbAdminDialog* m_pAdminDialog; /** needed for translating an SfxItemSet into Sequence< PropertyValue >
(for building an XConnection)
*/
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
m_xCurrentConnection; /// valid as long as the page is active
::com::sun::star::uno::Sequence< ::rtl::OUString >
m_aLastDetailedSelection;
RadioButton* m_pLastCheckedButton;
public:
static SfxTabPage* Create( Window* _pParent, const SfxItemSet& _rAttrSet);
virtual BOOL FillItemSet(SfxItemSet& _rCoreAttrs);
virtual void ActivatePage(const SfxItemSet& _rSet);
virtual int DeactivatePage(SfxItemSet* _pSet);
void setServiceFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > _rxORB)
{ m_aTablesList.setServiceFactory(_rxORB); }
protected:
void SetAdminDialog(ODbAdminDialog* _pDialog) { m_pAdminDialog = _pDialog; }
private:
OTableSubscriptionPage( Window* pParent, const SfxItemSet& _rCoreAttrs );
~OTableSubscriptionPage();
/** check the tables in <member>m_aTablesList</member> according to <arg>_rTables</arg>
*/
void implCheckTables(const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rTables);
/** return the current selection in <member>m_aTablesList</member>
*/
::com::sun::star::uno::Sequence< ::rtl::OUString > collectDetailedSelection() const;
void CheckAll( BOOL bCheck=TRUE );
DECL_LINK( OnRadioButtonClicked, Button* );
virtual void implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
};
//.........................................................................
} // namespace dbaui
//.........................................................................
#endif // _DBAUI_ADMINPAGES_HXX_
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.15 2000/11/30 08:32:30 fs
* #80003# changed some sal_uInt16 to sal_Int32 (need some -1's)
*
* Revision 1.14 2000/11/29 22:29:40 fs
* #80003# implementation of the character set map changed
*
* Revision 1.13 2000/11/28 13:47:31 fs
* #80152# m_bDisplayingDeleted renamed in m_bDisplayingInvalid
*
* Revision 1.12 2000/11/28 11:41:42 oj
* #80827# check dbroot if dbconfig failed
*
* Revision 1.11 2000/11/22 15:44:05 oj
* #80269# remove property long names
*
* Revision 1.10 2000/11/10 17:35:28 fs
* no parameter in checkItems anymore - did not make sense in the context it is called / some small bug fixes
*
* Revision 1.9 2000/11/02 15:20:04 fs
* #79983# +isBrowseable / #79830# +checkItems
*
* Revision 1.8 2000/10/30 15:22:44 fs
* no password fields anymore - don't want to have them in and _data source aministration_ dialog
*
* Revision 1.7 2000/10/24 12:11:15 fs
* functionality added: browsing for system data sources (ODBC/Adabas/dbase/text)
*
* Revision 1.6 2000/10/20 09:53:17 fs
* handling for the SuppresVersionColumns property of a data source
*
* Revision 1.5 2000/10/13 16:03:34 fs
* Separator changed to string / getDetailIds
*
* Revision 1.4 2000/10/12 16:20:42 fs
* new implementations ... still under construction
*
* Revision 1.3 2000/10/11 11:31:03 fs
* new implementations - still under construction
*
* Revision 1.2 2000/10/09 12:39:29 fs
* some (a lot of) new imlpementations - still under development
*
* Revision 1.1 2000/10/05 10:04:22 fs
* initial checkin
*
*
* Revision 1.0 26.09.00 11:46:15 fs
************************************************************************/