diff options
author | Oliver Bolte <obo@openoffice.org> | 2009-02-20 10:24:14 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2009-02-20 10:24:14 +0000 |
commit | 7b47fbbc3076f300ab4f762a53ec49c11b5c930d (patch) | |
tree | 466bcb0b99d3e8a68b22186a1be82c169895daed /dbaccess | |
parent | 5d42a185769c162366a20c5d3cd997d6ed0d0c61 (diff) |
#i99305#,#i99132# remove DOS lineends, remove solenv/unxmacxp/inc/poll.h
Diffstat (limited to 'dbaccess')
-rw-r--r-- | dbaccess/inc/dbaccess_helpid.hrc | 954 | ||||
-rw-r--r-- | dbaccess/source/core/dataaccess/ModelImpl.cxx | 2898 | ||||
-rw-r--r-- | dbaccess/source/core/dataaccess/ModelImpl.hxx | 1256 | ||||
-rw-r--r-- | dbaccess/source/ext/macromigration/macromigrationpages.cxx | 728 | ||||
-rw-r--r-- | dbaccess/source/ui/control/FieldDescControl.cxx | 4352 | ||||
-rw-r--r-- | dbaccess/source/ui/dlg/ExtensionNotPresent.src | 182 | ||||
-rw-r--r-- | dbaccess/source/ui/inc/sqledit.hxx | 184 | ||||
-rw-r--r-- | dbaccess/util/hidother.src | 1038 |
8 files changed, 5796 insertions, 5796 deletions
diff --git a/dbaccess/inc/dbaccess_helpid.hrc b/dbaccess/inc/dbaccess_helpid.hrc index 57ccd7bfcdb5..746f79da53d2 100644 --- a/dbaccess/inc/dbaccess_helpid.hrc +++ b/dbaccess/inc/dbaccess_helpid.hrc @@ -1,477 +1,477 @@ -/*************************************************************************
- *
- * 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: dbaccess_helpid.hrc,v $
- * $Revision: 1.73 $
- *
- * 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 _DBA_DBACCESS_HELPID_HRC_
-#define _DBA_DBACCESS_HELPID_HRC_
-
-#ifndef _SOLAR_HRC
-#include <svtools/solar.hrc> // HID_DBACCESS_START
-#endif
-
-#define HID_DSADMIN_CHARSET (HID_DBACCESS_START + 9)
-
-#define HID_DLG_FILTERCRIT (HID_DBACCESS_START + 15)
-#define HID_DLG_ORDERCRIT (HID_DBACCESS_START + 16)
-
-#define HID_DATABROWSE_HEADER (HID_DBACCESS_START + 17)
-#define HID_CTL_TABBROWSER (HID_DBACCESS_START + 18)
-#define UID_DATABROWSE_DATAWINDOW (HID_DBACCESS_START + 19)
-#define HID_CTL_TREEVIEW (HID_DBACCESS_START + 20)
-#define UID_CTL_CONTENT (HID_DBACCESS_START + 21)
-#define HID_TLB_TABBROWSER (HID_DBACCESS_START + 22)
-#define HID_TLB_TREELISTBOX (HID_DBACCESS_START + 23)
-#define HID_DSADMIN_DIALOG (HID_DBACCESS_START + 24)
-
-
-#define HID_DSADMIN_TABCONTROL (HID_DBACCESS_START + 27)
-#define HID_DSADMIN_PAGE_GENERAL (HID_DBACCESS_START + 28)
-#define HID_DSADMIN_PAGE_DBASE (HID_DBACCESS_START + 29)
-#define HID_DSADMIN_PAGE_JDBC (HID_DBACCESS_START + 30)
-#define HID_DSADMIN_PAGE_ODBC (HID_DBACCESS_START + 31)
-#define HID_DSADMIN_PAGE_ADABAS (HID_DBACCESS_START + 32)
-#define HID_DSADMIN_PAGE_TEXT (HID_DBACCESS_START + 33)
-#define HID_DSADMIN_TABLE_SUBSCRIPTION (HID_DBACCESS_START + 34)
-#define HID_DSADMIN_DSACTIONS_NEWDS (HID_DBACCESS_START + 35)
-#define HID_DSADMIN_DSACTIONS_DELETEDS (HID_DBACCESS_START + 36)
-#define HID_DSADMIN_DSACTIONS_RESTOREDS (HID_DBACCESS_START + 37)
-#define HID_DSADMIN_DSNAME (HID_DBACCESS_START + 38)
-#define HID_DSADMIN_DSTYPE (HID_DBACCESS_START + 39)
-#define HID_DSADMIN_URL_GENERAL (HID_DBACCESS_START + 40)
-#define HID_DSADMIN_BROWSECONN (HID_DBACCESS_START + 41)
-#define HID_DSADMIN_LOGINTIMEOUT_NUMBER (HID_DBACCESS_START + 42)
-#define HID_DSADMIN_LOGINTIMEOUT_UNIT (HID_DBACCESS_START + 43)
-#define HID_DSADMIN_SHOWDELETED (HID_DBACCESS_START + 44)
-#define HID_DSADMIN_ALLOWLONG (HID_DBACCESS_START + 45)
-#define HID_DSADMIN_DBASE_INDICIES (HID_DBACCESS_START + 46)
-#define HID_DSADMIN_DRIVERCLASS (HID_DBACCESS_START + 47)
-#define HID_DSADMIN_ODBC_OPTIONS (HID_DBACCESS_START + 48)
-#define HID_DSADMIN_TEXT_HEADER (HID_DBACCESS_START + 49)
-#define HID_DSADMIN_FIELD_SEPARATOR (HID_DBACCESS_START + 50)
-#define HID_DSADMIN_TEXT_SEPARATOR (HID_DBACCESS_START + 51)
-#define HID_DSADMIN_DECIMAL_SEPARATOR (HID_DBACCESS_START + 52)
-#define HID_DSADMIN_THOUSANDS_SEPARATOR (HID_DBACCESS_START + 53)
-#define HID_DSADMIN_EXTENSION (HID_DBACCESS_START + 54)
-#define HID_DSADMIN_ALL_TABLES (HID_DBACCESS_START + 55)
-#define HID_DSADMIN_NO_TABLES (HID_DBACCESS_START + 56)
-#define HID_DSADMIN_SELECT_TABLES (HID_DBACCESS_START + 57)
-#define HID_DSADMIN_TABLE_SELECTOR (HID_DBACCESS_START + 58)
-#define HID_DSADMIN_SUPPRESS_VERSIONCL (HID_DBACCESS_START + 59)
-
-#define HID_GENERIC_SQL_ERROR (HID_DBACCESS_START + 60)
-
-#define HID_BROWSER_COLUMNFORMAT (HID_DBACCESS_START + 61)
-#define HID_BROWSER_COLUMNWIDTH (HID_DBACCESS_START + 62)
-#define HID_BROWSER_TABLEFORMAT (HID_DBACCESS_START + 63)
-#define HID_BROWSER_ROWHEIGHT (HID_DBACCESS_START + 64)
-#define HID_BROWSER_EDIT_DATABASE (HID_DBACCESS_START + 65)
-#define HID_BROWSER_CLOSECONN (HID_DBACCESS_START + 66)
-#define HID_BROWSER_REFRESHCONN (HID_DBACCESS_START + 67)
-
-#define HID_DLG_ROWHEIGHT (HID_DBACCESS_START + 68)
-#define HID_DLG_COLWIDTH (HID_DBACCESS_START + 69)
-
-
-#define HID_TLB_QUERYDESIGN (HID_DBACCESS_START + 70)
-#define HID_CTL_QRYSQLEDIT (HID_DBACCESS_START + 71)
-#define HID_DSADMIN_SPECIAL_MESSAGE (HID_DBACCESS_START + 72)
-
-#define HID_BROWSER_QUERY_CREATE_TEXT (HID_DBACCESS_START + 73)
-
-#define HID_DLG_ERROR (HID_DBACCESS_START + 74)
-#define HID_DLG_TEXT (HID_DBACCESS_START + 75)
-#define UID_SQLERROR_BUTTONMORE (HID_DBACCESS_START + 76)
-#define HID_DLG_SAVE_AS (HID_DBACCESS_START + 77)
-
-#define HID_BROWSER_QUERY_EDIT (HID_DBACCESS_START + 78)
-#define HID_BROWSER_QUERY_DELETE (HID_DBACCESS_START + 79)
-
-#define HID_DSADMIN_USER_ADO (HID_DBACCESS_START + 80)
-#define HID_DSADMIN_PWDREC_ADO (HID_DBACCESS_START + 81)
-#define HID_DSADMIN_CONNURL_ADOPAGE (HID_DBACCESS_START + 82)
-#define HID_DSADMIN_PAGE_ADO (HID_DBACCESS_START + 83)
-
-
-#define HID_JOINSH_ADDTAB_CLOSE (HID_DBACCESS_START + 84)
-#define HID_JOINSH_ADDTAB_TABLELIST (HID_DBACCESS_START + 85)
-#define HID_CTL_QRYDGNTAB (HID_DBACCESS_START + 86)
-#define HID_DLG_QRY_JOIN (HID_DBACCESS_START + 87)
-#define HID_DLG_QRY_JOINTYPE (HID_DBACCESS_START + 88)
-#define HID_JOINSH_ADDTAB_QUERYLIST (HID_DBACCESS_START + 89)
-#define HID_DLG_QRY_HELPTEXT (HID_DBACCESS_START + 92)
-
-#define HID_CTL_QRYDGNCRIT (HID_DBACCESS_START + 93)
-#define HID_QRYDGN_ROW_VISIBLE (HID_DBACCESS_START + 94)
-#define HID_QRYDGN_ROW_TABLE (HID_DBACCESS_START + 95)
-#define HID_QRYDGN_ROW_FIELD (HID_DBACCESS_START + 96)
-#define HID_QRYDGN_ROW_ORDER (HID_DBACCESS_START + 97)
-#define HID_QRYDGN_ROW_FUNCTION (HID_DBACCESS_START + 98)
-#define HID_QRYDGN_ROW_ALIAS (HID_DBACCESS_START + 99)
-#define HID_QRYDGN_ROW_CRIT (HID_DBACCESS_START + 100)
-
-#define HID_QUERY_FUNCTION (HID_DBACCESS_START + 101)
-#define HID_QUERY_TABLENAME (HID_DBACCESS_START + 102)
-#define HID_QUERY_ALIASNAME (HID_DBACCESS_START + 103)
-#define HID_QUERY_DISTINCT (HID_DBACCESS_START + 104)
-
-#define HID_BROWSER_QUERY_CREATE_DESIGN (HID_DBACCESS_START + 105)
-
-#define HID_DSADMIN_QUERIES (HID_DBACCESS_START + 106)
-#define HID_DSADMIN_QUERIES_NEW (HID_DBACCESS_START + 107)
-#define HID_DSADMIN_QUERIES_EDIT (HID_DBACCESS_START + 108)
-#define HID_DSADMIN_QUERIES_DELETE (HID_DBACCESS_START + 109)
-#define HID_DSADMIN_QUERYADMINISTRATION (HID_DBACCESS_START + 110)
-
-
-#define HID_TAB_DESIGN_TABLE_DESC (HID_DBACCESS_START + 111)
-#define HID_TAB_DESIGN_FIELDCONTROL (HID_DBACCESS_START + 112)
-#define HID_TABLE_DESIGN_HELP_WINDOW (HID_DBACCESS_START + 113)
-#define HID_TAB_DESIGN_DESCWIN (HID_DBACCESS_START + 114)
-#define HID_TAB_DESIGN_TABLE_PROPS (HID_DBACCESS_START + 115)
-#define HID_TABDESIGN_BACKGROUND (HID_DBACCESS_START + 116)
-#define HID_CTL_TABLEEDIT (HID_DBACCESS_START + 117)
-#define HID_TABDESIGN_NAMECELL (HID_DBACCESS_START + 118)
-#define HID_TABDESIGN_TYPECELL (HID_DBACCESS_START + 119)
-#define HID_TABDESIGN_COMMENTCELL (HID_DBACCESS_START + 120)
-#define SID_TABLEDESIGN_INSERTROWS (HID_DBACCESS_START + 121)
-#define SID_TABLEDESIGN_TABED_PRIMARYKEY (HID_DBACCESS_START + 122)
-#define HID_TLB_TABLEDESIGN (HID_DBACCESS_START + 123)
-#define HID_TAB_DESIGN_HELP_TEXT_FRAME (HID_DBACCESS_START + 124)
-#define HID_TABLE_DESIGN_TABPAGE_GENERAL (HID_DBACCESS_START + 125)
-#define HID_TAB_ENT_DEFAULT (HID_DBACCESS_START + 126)
-#define HID_TAB_ENT_FORMAT_SAMPLE (HID_DBACCESS_START + 127)
-#define HID_TAB_ENT_FORMAT (HID_DBACCESS_START + 128)
-#define HID_TAB_ENT_BOOL_DEFAULT (HID_DBACCESS_START + 129)
-#define HID_TAB_ENT_REQUIRED (HID_DBACCESS_START + 130)
-#define HID_TAB_ENT_AUTOINCREMENT (HID_DBACCESS_START + 131)
-#define HID_TAB_ENT_TEXT_LEN (HID_DBACCESS_START + 132)
-#define HID_TAB_ENT_TYPE (HID_DBACCESS_START + 133)
-#define HID_TAB_ENT_COLUMNNAME (HID_DBACCESS_START + 134)
-#define HID_TAB_ENT_NUMTYP (HID_DBACCESS_START + 135)
-#define HID_TAB_ENT_LEN (HID_DBACCESS_START + 136)
-#define HID_TAB_ENT_SCALE (HID_DBACCESS_START + 137)
-#define HID_BROWSER_TABLE_CREATE_DESIGN (HID_DBACCESS_START + 138)
-#define HID_BROWSER_TABLE_EDIT (HID_DBACCESS_START + 139)
-#define HID_BROWSER_TABLE_DELETE (HID_DBACCESS_START + 140)
-#define HID_SQLERROR_EXCHAIN_ERRORS (HID_DBACCESS_START + 141)
-#define HID_SQLERROR_EXCHAIN_TEXT (HID_DBACCESS_START + 142)
-#define HID_TAB_WIZ_COLUMN_SELECT (HID_DBACCESS_START + 146)
-#define HID_TAB_WIZ_TYPE_SELECT (HID_DBACCESS_START + 147)
-#define HID_TAB_NAMEMATCHING_COLS_AVAIL (HID_DBACCESS_START + 148)
-#define HID_TAB_NAMEMATCHING_COLS_ASSIGN (HID_DBACCESS_START + 149)
-#define HID_TAB_WIZ_COPYTABLE (HID_DBACCESS_START + 150)
-#define HID_TAB_WIZ_TABLENAME_EDIT (HID_DBACCESS_START + 151)
-#define HID_CTL_RELATIONTAB (HID_DBACCESS_START + 152)
-#define HID_TLB_RELATIONDESIGN (HID_DBACCESS_START + 153)
-#define HID_RELATIONDIALOG_LEFTFIELDCELL (HID_DBACCESS_START + 154)
-#define HID_RELATIONDIALOG_RIGHTFIELDCELL (HID_DBACCESS_START + 155)
-#define HID_RELDLG_KEYFIELDS (HID_DBACCESS_START + 156)
-#define HID_BROWSER_RELATION_DESIGN (HID_DBACCESS_START + 157)
-#define HID_TABLE_DESIGN_NO_CONNECTION (HID_DBACCESS_START + 158)
-#define HID_DSADMIN_CREATEDATABASE (HID_DBACCESS_START + 159)
-#define HID_BROWSER_COLUMNINFO (HID_DBACCESS_START + 160)
-#define HID_DSADMIN_USECATALOG (HID_DBACCESS_START + 161)
-#define HID_BROWSER_VIEW_CREATE_DESIGN (HID_DBACCESS_START + 162)
-#define HID_DSADMIN_DOCUMENTS (HID_DBACCESS_START + 166)
-#define HID_DSADMIN_DOCUMENTLINKS (HID_DBACCESS_START + 167)
-#define HID_DSADMIN_FILTER_EXPLANATION (HID_DBACCESS_START + 168)
-#define HID_CONFIRM_DROP_BUTTON_ALL (HID_DBACCESS_START + 169)
-#define HID_DSBROWSER_BOOKMARK_SELECTED (HID_DBACCESS_START + 170)
-#define HID_DSADMIN_TABLE_TOOLBOX (HID_DBACCESS_START + 171)
-#define HID_DSADMIN_QUERY_TOOLBOX (HID_DBACCESS_START + 172)
-#define HID_DSADMIN_BOOKMARK_TOOLBOX (HID_DBACCESS_START + 173)
-#define HID_DSADMIN_PAGE_LDAP (HID_DBACCESS_START + 174)
-#define HID_DSADMIN_LDAP_HOSTNAME (HID_DBACCESS_START + 175)
-#define HID_DSADMIN_LDAP_BASEDN (HID_DBACCESS_START + 176)
-#define HID_DSADMIN_LDAP_PORTNUMBER (HID_DBACCESS_START + 177)
-#define HID_DSBROWSER_BOOKMARKSELECTED (HID_DBACCESS_START + 178)
-#define HID_DSBROWSER_DISCONNECTING (HID_DBACCESS_START + 179)
-#define HID_TAB_PAGE_USERADMIN (HID_DBACCESS_START + 180)
-#define HID_TAB_PAGE_PBUSER (HID_DBACCESS_START + 181)
-#define HID_TAB_PAGE_PBCHGPWD (HID_DBACCESS_START + 182)
-#define HID_TAB_PAGE_PBUSERDELETE (HID_DBACCESS_START + 183)
-#define HID_TAB_PAGE_TBLGRANTS (HID_DBACCESS_START + 184)
-#define HID_TAB_PAGE_LBUSER (HID_DBACCESS_START + 185)
-#define HID_DSBROWSER_DIRECTSQL (HID_DBACCESS_START + 186)
-#define HID_DSADMIN_LDAP_ROWCOUNT (HID_DBACCESS_START + 187)
-#define HID_BROWSER_QUERY_EDITSQL (HID_DBACCESS_START + 189)
-#define HID_DSADMIN_PAGE_MOZILLA (HID_DBACCESS_START + 190)
-#define HID_DSADMIN_MOZILLA_PROFILE_NAME (HID_DBACCESS_START + 191)
-#define HID_DSADMIN_THUNDERBIRD_PROFILE_NAME (HID_DBACCESS_START + 192)
-#define HID_BROWSER_OPEN_DOCUMENT (HID_DBACCESS_START + 193)
-#define HID_BROWSER_EDIT_DOCUMENT (HID_DBACCESS_START + 194)
-#define HID_BROWSER_BEW_DOCUMENT (HID_DBACCESS_START + 195)
-#define HID_DLG_PASSWORD (HID_DBACCESS_START + 196)
-
-#define HID_DLGIDX_NEWINDEX (HID_DBACCESS_START + 197)
-#define HID_DLGIDX_DROPINDEX (HID_DBACCESS_START + 198)
-#define HID_DLGIDX_RENAMEINDEX (HID_DBACCESS_START + 199)
-#define HID_DLGIDX_SAVEINDEX (HID_DBACCESS_START + 200)
-#define HID_DLGIDX_RESETINDEX (HID_DBACCESS_START + 201)
-#define HID_DLGIDX_INDEXLIST (HID_DBACCESS_START + 202)
-#define UID_DLGINDEX_INDEXDETAILS_BACK (HID_DBACCESS_START + 203)
-#define UID_DLGINDEX_INDEXDETAILS_MAIN (HID_DBACCESS_START + 204)
-#define HID_DLGINDEX_INDEXDETAILS_FIELD (HID_DBACCESS_START + 205)
-#define HID_DLGINDEX_INDEXDETAILS_SORTORDER (HID_DBACCESS_START + 206)
-
-#define HID_DOCLINKEDIT_URL (HID_DBACCESS_START + 207)
-#define HID_QUERY_SQLMODE (HID_DBACCESS_START + 208)
-
-#define HID_BROWSER_REFRESH_REBUILDVIEW (HID_DBACCESS_START + 209)
-#define HID_BROWSER_RENAME_ENTRY (HID_DBACCESS_START + 210)
-
-#define HID_QUERY_EDIT_JOINCONNECTION (HID_DBACCESS_START + 211)
-
-#define HID_DLG_QRY_WINDOW_CONTROL (HID_DBACCESS_START + 212)
-#define HID_DLG_QRY_LEFT_TABLE (HID_DBACCESS_START + 213)
-#define HID_DLG_QRY_RIGHT_TABLE (HID_DBACCESS_START + 214)
-
-#define HID_DLG_REL_CASC_DEL (HID_DBACCESS_START + 215)
-#define HID_DLG_REL_NO_CASC_DEL (HID_DBACCESS_START + 216)
-#define HID_DLG_REL_CASC_DEL_NULL (HID_DBACCESS_START + 217)
-#define HID_DLG_REL_CASC_DEL_DEFAULT (HID_DBACCESS_START + 218)
-
-#define HID_DLG_REL_CASC_UPD (HID_DBACCESS_START + 219)
-#define HID_DLG_REL_NO_CASC_UPD (HID_DBACCESS_START + 220)
-#define HID_DLG_REL_CASC_UPD_NULL (HID_DBACCESS_START + 221)
-#define HID_DLG_REL_CASC_UPD_DEFAULT (HID_DBACCESS_START + 222)
-#define HID_BROWSER_SAVE_RECORD (HID_DBACCESS_START + 223)
-#define HID_BROWSER_UNDO_RECORD (HID_DBACCESS_START + 224)
-
-#define HID_DSADMIN_SQL92CHECK (HID_DBACCESS_START + 225)
-#define HID_DSADMIN_AUTOINCREMENTVALUE (HID_DBACCESS_START + 226)
-#define HID_DOCUMENT_CREATE_REPWIZ (HID_DBACCESS_START + 227)
-#define HID_TAB_AUTOINCREMENTVALUE (HID_DBACCESS_START + 228)
-#define HID_DSADMIN_RETRIEVE_AUTO (HID_DBACCESS_START + 229)
-#define HID_DSADMIN_AUTORETRIEVEENABLED (HID_DBACCESS_START + 230)
-
-#define HID_DSADMIN_PAGE_MYSQL_ODBC (HID_DBACCESS_START + 231)
-#define HID_TAB_PAGE_TABLEPRIVILEGES (HID_DBACCESS_START + 232)
-
-#define HID_DSADMIN_PAGE_USERDRIVER (HID_DBACCESS_START + 233)
-#define HID_DSADMIN_USER_DEFINED (HID_DBACCESS_START + 234)
-#define HID_DSADMIN_USERDEF_OPTIONS (HID_DBACCESS_START + 235)
-#define HID_DSADMIN_CHARSET_USERDEF (HID_DBACCESS_START + 236)
-#define HID_DSADMIN_USER_LDAP (HID_DBACCESS_START + 237)
-#define HID_DSADMIN_PWDREC_LDAP (HID_DBACCESS_START + 238)
-#define HID_DSADMIN_USESSL_LDAP (HID_DBACCESS_START + 239)
-#define HID_BROWSER_QUERY_WIZARD (HID_DBACCESS_START + 237)
-
-#define HID_DLG_RENAME (HID_DBACCESS_START + 237)
-
-#define HID_DSADMIN_PAGE_MYSQL_JDBC (HID_DBACCESS_START + 238)
-
-#define HID_DSADMIN_DBASE_PATH (HID_DBACCESS_START + 239)
-#define HID_DSADMIN_MYSQL_DATABASE (HID_DBACCESS_START + 240)
-#define HID_DSADMIN_MYSQL_ODBC_DATASOURCE (HID_DBACCESS_START + 241)
-#define HID_DSADMIN_ODBC_DATASOURCE (HID_DBACCESS_START + 242)
-#define HID_DSADMIN_ADABAS_DATABASE (HID_DBACCESS_START + 243)
-#define HID_DSADMIN_MSACCESS_MDB_FILE (HID_DBACCESS_START + 244)
-#define HID_DSADMIN_PAGE_MSACCESS (HID_DBACCESS_START + 245)
-#define HID_DSADMIN_FLAT_PATH (HID_DBACCESS_START + 246)
-#define HID_DSADMIN_CALC_PATH (HID_DBACCESS_START + 247)
-#define HID_DSADMIN_ADVANCED (HID_DBACCESS_START + 248)
-#define HID_DSADMIN_BOOLEANCOMPARISON (HID_DBACCESS_START + 249)
-#define HID_DSADMIN_ORACLE_DATABASE (HID_DBACCESS_START + 250)
-
-#define UID_APP_VIEW (HID_DBACCESS_START + 251)
-#define HID_APP_TABLE_TREE (HID_DBACCESS_START + 252)
-#define HID_APP_FORM_TREE (HID_DBACCESS_START + 253)
-#define HID_APP_QUERY_TREE (HID_DBACCESS_START + 254)
-#define HID_APP_REPORT_TREE (HID_DBACCESS_START + 255)
-#define UID_APP_DETAIL_VIEW (HID_DBACCESS_START + 256)
-#define UID_APP_VIEW_VERT_SPLIT (HID_DBACCESS_START + 257)
-#define UID_APP_VIEW_BORDER_WIN (HID_DBACCESS_START + 258)
-#define HID_APP_CREATION_LIST (HID_DBACCESS_START + 259)
-#define UID_APP_SWAP_VIEW (HID_DBACCESS_START + 260)
-#define UID_DLG_TABLE_FILTER (HID_DBACCESS_START + 261)
-#define HID_APP_SWAP_ICONCONTROL (HID_DBACCESS_START + 262)
-
-#define HID_DSADMIN_APPENDTABLEALIAS (HID_DBACCESS_START + 263)
-#define HID_DSADMIN_PARAMETERNAMESUBST (HID_DBACCESS_START + 264)
-#define HID_DSADMIN_IGNOREDRIVER_PRIV (HID_DBACCESS_START + 265)
-#define HID_DSADMIN_HOSTNAME (HID_DBACCESS_START + 266)
-#define HID_DSADMIN_PORTNUMBER (HID_DBACCESS_START + 267)
-
-#define HID_APP_HELP_TEXT (HID_DBACCESS_START + 268)
-#define HID_EXPLORERDLG_COLLECTION (HID_DBACCESS_START + 269)
-#define UID_APP_DATABASE_VIEW (HID_DBACCESS_START + 270)
-#define UID_APP_TASKS_VIEW (HID_DBACCESS_START + 271)
-#define UID_APP_CONTAINER_VIEW (HID_DBACCESS_START + 272)
-#define UID_APP_TASKS_WINDOW (HID_DBACCESS_START + 273)
-#define HID_APP_DESCRIPTION_TEXT (HID_DBACCESS_START + 274)
-#define UID_APP_DETAILPAGE_HELPER (HID_DBACCESS_START + 275)
-#define HID_APP_VIEW_PREVIEW_CB (HID_DBACCESS_START + 276)
-#define HID_APP_VIEW_PREVIEW_1 (HID_DBACCESS_START + 277)
-#define HID_APP_VIEW_PREVIEW_2 (HID_DBACCESS_START + 278)
-// free
-#define UID_APP_VIEW_HORZ_SPLIT (HID_DBACCESS_START + 280)
-#define UID_APP_VIEW_PREVIEW_1 (HID_DBACCESS_START + 281)
-#define HID_APP_VIEW_PREVIEW_3 (HID_DBACCESS_START + 282)
-
-#define HID_DSADMIN_TYPE_DIALOG (HID_DBACCESS_START + 283)
-#define HID_DSADMIN_ENABLEOUTERJOIN (HID_DBACCESS_START + 284)
-#define HID_DSADMIN_ADABASADMIN (HID_DBACCESS_START + 285)
-#define HID_DSADMIN_USERADMIN (HID_DBACCESS_START + 286)
-
-#define HID_DBWIZ_PREVIOUS (HID_DBACCESS_START + 287)
-#define HID_DBWIZ_NEXT (HID_DBACCESS_START + 288)
-#define HID_DBWIZ_CANCEL (HID_DBACCESS_START + 289)
-#define HID_DBWIZ_FINISH (HID_DBACCESS_START + 290)
-#define UID_DBWIZ_HELP (HID_DBACCESS_START + 291)
-
-#define HID_DSADMIN_CATALOG (HID_DBACCESS_START + 292)
-#define HID_DSADMIN_SCHEMA (HID_DBACCESS_START + 293)
-#define HID_DSADMIN_IGNOREINDEXAPPENDIX (HID_DBACCESS_START + 294)
-#define HID_DSADMIN_DOSLINEENDS (HID_DBACCESS_START + 295)
-
-#define HID_BROWSER_ADMINISTRATE (HID_DBACCESS_START + 296)
-
-#define HID_DSADMIN_AS_BEFORE_CORRELATION_NAME (HID_DBACCESS_START + 297)
-#define HID_DSADMIN_CHECK_REQUIRED_FIELDS (HID_DBACCESS_START + 298)
-
-#define HID_PAGE_DBWIZARD_GENERALPAGE (HID_DBACCESS_START + 300)
-#define HID_PAGE_DBWIZARD_GENERAL_RB_CREATEDBDATABASE (HID_DBACCESS_START + 301)
-#define HID_PAGE_DBWIZARD_GENERAL_RB_GETEXISTINGDATABASE (HID_DBACCESS_START + 302)
-
-#define HID_PAGE_DBWIZARD_DBASE_ET_DBASELOCATION (HID_DBACCESS_START + 304)
-#define HID_PAGE_DBWIZARD_DBASE_PB_DBASELOCATION (HID_DBACCESS_START + 305)
-
-
-#define HID_PAGE_DBWIZARD_TEXT_RB_ACCESSTXTFILES (HID_DBACCESS_START + 307)
-#define HID_PAGE_DBWIZARD_TEXT_RB_ACCESSCSVFILES (HID_DBACCESS_START + 308)
-#define HID_PAGE_DBWIZARD_TEXT_RB_ACCESSOTHERFILES (HID_DBACCESS_START + 309)
-#define HID_PAGE_DBWIZARD_TEXT_ET_OWNEXTENSION (HID_DBACCESS_START + 310)
-
-
-#define HID_PAGE_DBWIZARD_TEXT_ET_LOCATIONTEXTFILE (HID_DBACCESS_START + 311)
-#define HID_PAGE_DBWIZARD_TEXT_PB_LOCATIONTEXTFILE (HID_DBACCESS_START + 312)
-#define HID_PAGE_DBWIZARD_TEXT_CB_FIELDSEPARATOR (HID_DBACCESS_START + 313)
-#define HID_PAGE_DBWIZARD_TEXT_CB_TEXTSEPARATOR (HID_DBACCESS_START + 314)
-#define HID_PAGE_DBWIZARD_TEXT_CB_DECIMALSEPARATOR (HID_DBACCESS_START + 315)
-#define HID_PAGE_DBWIZARD_TEXT_CB_THOUSANDSSEPARATOR (HID_DBACCESS_START + 316)
-
-#define HID_PAGE_DBWIZARD_MSACCESS_ET_MSACCESSLOCATION (HID_DBACCESS_START + 317)
-#define HID_PAGE_DBWIZARD_MSACCESS_PB_MSACCESSLOCATION (HID_DBACCESS_START + 318)
-
-#define HID_PAGE_DBWIZARD_LDAP_ET_HOSTSERVER (HID_DBACCESS_START + 319)
-#define HID_PAGE_DBWIZARD_LDAP_ET_BASEDN (HID_DBACCESS_START + 320)
-#define HID_PAGE_DBWIZARD_LDAP_ET_PORTNUMBER (HID_DBACCESS_START + 321)
-#define HID_PAGE_DBWIZARD_LDAP_CB_USESSL (HID_DBACCESS_START + 322)
-#define HID_PAGE_DBWIZARD_LDAP_PB_TESTLDAPCONNECTION (HID_DBACCESS_START + 323)
-
-#define HID_PAGE_DBWIZARD_ADABAS_ET_ADABASNAME (HID_DBACCESS_START + 326)
-#define HID_PAGE_DBWIZARD_ADABAS_PB_ADABASNAME (HID_DBACCESS_START + 327)
-
-#define HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAODBC (HID_DBACCESS_START + 329)
-#define HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAJDBC (HID_DBACCESS_START + 330)
-
-#define HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEDBNAME (HID_DBACCESS_START + 333)
-#define HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEHOSTSERVER (HID_DBACCESS_START + 334)
-#define HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEPORT (HID_DBACCESS_START + 335)
-#define HID_PAGE_DBWIZARD_ORACLE_ET_ORACLECLASS (HID_DBACCESS_START + 336)
-#define HID_PAGE_DBWIZARD_ORACLE_PB_TESTORACLECLASS (HID_DBACCESS_START + 337)
-
-#define HID_PAGE_DBWIZARD_JDBC_ET_JDBCURL (HID_DBACCESS_START + 340)
-#define HID_PAGE_DBWIZARD_JDBC_PB_JDBCURL (HID_DBACCESS_START + 341)
-
-#define HID_PAGE_DBWIZARD_JDBC_ET_JDBCCLASS (HID_DBACCESS_START + 342)
-#define HID_PAGE_DBWIZARD_JDBC_PB_TESTJDBCCLASS (HID_DBACCESS_START + 343)
-
-#define HID_PAGE_DBWIZARD_JDBC_ET_MYSQLDBNAME (HID_DBACCESS_START + 344)
-#define HID_PAGE_DBWIZARD_JDBC_ET_MYSQLHOSTSERVER (HID_DBACCESS_START + 345)
-#define HID_PAGE_DBWIZARD_JDBC_ET_MYSQLPORT (HID_DBACCESS_START + 346)
-#define HID_PAGE_DBWIZARD_JDBC_ET_MYSQLCLASS (HID_DBACCESS_START + 347)
-#define HID_PAGE_DBWIZARD_JDBC_PB_TESTMYSQLCLASS (HID_DBACCESS_START + 348)
-
-
-#define HID_PAGE_DBWIZARD_ADO_ET_ADOURL (HID_DBACCESS_START + 349)
-#define HID_PAGE_DBWIZARD_ADO_PB_ADOURL (HID_DBACCESS_START + 350)
-#define HID_PAGE_DBWIZARD_ADO_PB_TESTADOCONNECTION (HID_DBACCESS_START + 351)
-
-#define HID_PAGE_DBWIZARD_ODBC_ET_NAMEOFODBCDATASOURCE (HID_DBACCESS_START + 355)
-#define HID_PAGE_DBWIZARD_ODBC_PB_NAMEOFODBCDATASOURCE (HID_DBACCESS_START + 356)
-
-#define HID_PAGE_DBWIZARD_SPREADSHEET_ET_SPREADSHEETPATH (HID_DBACCESS_START + 359)
-#define HID_PAGE_DBWIZARD_SPREADSHEET_PB_SPREADSHEETPATH (HID_DBACCESS_START + 360)
-#define HID_PAGE_DBWIZARD_SPREADSHEET_CB_SPREADSHEETPASSWORDREQUIRED (HID_DBACCESS_START + 361)
-
-#define HID_PAGE_DBWIZARD_AUTHENTIFICATION_CB_GENERALPASSWORDREQUIRED (HID_DBACCESS_START + 365)
-#define HID_PAGE_DBWIZARD_AUTHENTIFICATION_ET_GENERALUSERNAME (HID_DBACCESS_START + 366)
-#define HID_PAGE_DBWIZARD_AUTHENTIFICATION_PB_TESTCONNECTION (HID_DBACCESS_START + 367)
-
-#define HID_PAGE_DBWIZARD_FINAL_RB_REGISTERDATASOURCE (HID_DBACCESS_START + 373)
-#define HID_PAGE_DBWIZARD_FINAL_RB_DONTREGISTERDATASOURCE (HID_DBACCESS_START + 374)
-#define HID_PAGE_DBWIZARD_FINAL_CB_STARTTABLEWIZARD (HID_DBACCESS_START + 375)
-#define HID_PAGE_DBWIZARD_FINAL_CB_OPENAFTERWARDS (HID_DBACCESS_START + 376)
-
-#define HID_PAGE_DBWIZARD_USERDEFINED_ET_BROWSE (HID_DBACCESS_START + 377)
-#define HID_PAGE_DBWIZARD_USERDEFINED_BROWSE (HID_DBACCESS_START + 378)
-#define HID_INDEX_DIALOG_ACTION_TB (HID_DBACCESS_START + 379)
-
-#define HID_DLG_DATABASE_WIZARD (HID_DBACCESS_START + 380)
-
-#define HID_EXTENSION_NOT_PRESENT_DLG ( HID_DBACCESS_START + 381)
-#define HID_DLG_QRY_JOIN_CONTROL ( HID_DBACCESS_START + 382)
-#define HID_DSADMIN_IGNORECURRENCY ( HID_DBACCESS_START + 383)
-
-#define HID_MACRO_MIGRATION_BACKUP_LOCATION ( HID_DBACCESS_START + 384)
-
-// this one below have hid in number space HID_SBA_START
-#define HID_DLG_ADABAS_NEWDB (HID_SBA_START + 0)
-#define HID_DLG_ADABAS_DBNAME (HID_SBA_START + 1)
-#define HID_DLG_ADABAS_SYSUSR (HID_SBA_START + 2)
-#define HID_DLG_ADABAS_SYSPWD (HID_SBA_START + 3)
-#define HID_DLG_ADABAS_CONUSR (HID_SBA_START + 4)
-#define HID_DLG_ADABAS_CONPWD (HID_SBA_START + 5)
-#define HID_DLG_ADABAS_DATADEVSPACE_SIZE (HID_SBA_START + 6)
-#define HID_DLG_ADABAS_CACHE_SIZE (HID_SBA_START + 7)
-#define HID_DLG_ADABAS_USR (HID_SBA_START + 8)
-#define HID_DLG_ADABAS_DOMAINPWD (HID_SBA_START + 9)
-#define HID_DLG_ADABAS_RESTORE (HID_SBA_START + 10)
-#define HID_DLG_ADABAS_PBRESTORE (HID_SBA_START + 11)
-#define HID_DLG_ADABAS_SYSDEVSPACE (HID_SBA_START + 12)
-#define HID_DLG_ADABAS_PBSYSDEVSPACE (HID_SBA_START + 13)
-#define HID_DLG_ADABAS_TRANSACTIONLOG (HID_SBA_START + 14)
-#define HID_DLG_ADABAS_PBTRANSACTIONLOG (HID_SBA_START + 15)
-#define HID_DLG_ADABAS_DATADEVSPACE (HID_SBA_START + 16)
-#define HID_DLG_ADABAS_PBDATADEVSPACE (HID_SBA_START + 18)
-#define HID_DLG_ADABAS_TRANSACTIONLOG_SIZE (HID_SBA_START + 19)
-#define HID_DLG_ADABAS_CON_PWD (HID_SBA_START + 20)
-#define HID_DLG_ADABAS_SYS_PWD (HID_SBA_START + 21)
-#define HID_DLG_ADABAS_DOMAIN_PWD (HID_SBA_START + 22)
-//end of HID_SBA_START
-
-// don't forget to update the file util/hidother.src
-
-
-
-#endif // _DBA_DBACCESS_HELPID_HRC_
-
-
+/************************************************************************* + * + * 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: dbaccess_helpid.hrc,v $ + * $Revision: 1.73 $ + * + * 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 _DBA_DBACCESS_HELPID_HRC_ +#define _DBA_DBACCESS_HELPID_HRC_ + +#ifndef _SOLAR_HRC +#include <svtools/solar.hrc> // HID_DBACCESS_START +#endif + +#define HID_DSADMIN_CHARSET (HID_DBACCESS_START + 9) + +#define HID_DLG_FILTERCRIT (HID_DBACCESS_START + 15) +#define HID_DLG_ORDERCRIT (HID_DBACCESS_START + 16) + +#define HID_DATABROWSE_HEADER (HID_DBACCESS_START + 17) +#define HID_CTL_TABBROWSER (HID_DBACCESS_START + 18) +#define UID_DATABROWSE_DATAWINDOW (HID_DBACCESS_START + 19) +#define HID_CTL_TREEVIEW (HID_DBACCESS_START + 20) +#define UID_CTL_CONTENT (HID_DBACCESS_START + 21) +#define HID_TLB_TABBROWSER (HID_DBACCESS_START + 22) +#define HID_TLB_TREELISTBOX (HID_DBACCESS_START + 23) +#define HID_DSADMIN_DIALOG (HID_DBACCESS_START + 24) + + +#define HID_DSADMIN_TABCONTROL (HID_DBACCESS_START + 27) +#define HID_DSADMIN_PAGE_GENERAL (HID_DBACCESS_START + 28) +#define HID_DSADMIN_PAGE_DBASE (HID_DBACCESS_START + 29) +#define HID_DSADMIN_PAGE_JDBC (HID_DBACCESS_START + 30) +#define HID_DSADMIN_PAGE_ODBC (HID_DBACCESS_START + 31) +#define HID_DSADMIN_PAGE_ADABAS (HID_DBACCESS_START + 32) +#define HID_DSADMIN_PAGE_TEXT (HID_DBACCESS_START + 33) +#define HID_DSADMIN_TABLE_SUBSCRIPTION (HID_DBACCESS_START + 34) +#define HID_DSADMIN_DSACTIONS_NEWDS (HID_DBACCESS_START + 35) +#define HID_DSADMIN_DSACTIONS_DELETEDS (HID_DBACCESS_START + 36) +#define HID_DSADMIN_DSACTIONS_RESTOREDS (HID_DBACCESS_START + 37) +#define HID_DSADMIN_DSNAME (HID_DBACCESS_START + 38) +#define HID_DSADMIN_DSTYPE (HID_DBACCESS_START + 39) +#define HID_DSADMIN_URL_GENERAL (HID_DBACCESS_START + 40) +#define HID_DSADMIN_BROWSECONN (HID_DBACCESS_START + 41) +#define HID_DSADMIN_LOGINTIMEOUT_NUMBER (HID_DBACCESS_START + 42) +#define HID_DSADMIN_LOGINTIMEOUT_UNIT (HID_DBACCESS_START + 43) +#define HID_DSADMIN_SHOWDELETED (HID_DBACCESS_START + 44) +#define HID_DSADMIN_ALLOWLONG (HID_DBACCESS_START + 45) +#define HID_DSADMIN_DBASE_INDICIES (HID_DBACCESS_START + 46) +#define HID_DSADMIN_DRIVERCLASS (HID_DBACCESS_START + 47) +#define HID_DSADMIN_ODBC_OPTIONS (HID_DBACCESS_START + 48) +#define HID_DSADMIN_TEXT_HEADER (HID_DBACCESS_START + 49) +#define HID_DSADMIN_FIELD_SEPARATOR (HID_DBACCESS_START + 50) +#define HID_DSADMIN_TEXT_SEPARATOR (HID_DBACCESS_START + 51) +#define HID_DSADMIN_DECIMAL_SEPARATOR (HID_DBACCESS_START + 52) +#define HID_DSADMIN_THOUSANDS_SEPARATOR (HID_DBACCESS_START + 53) +#define HID_DSADMIN_EXTENSION (HID_DBACCESS_START + 54) +#define HID_DSADMIN_ALL_TABLES (HID_DBACCESS_START + 55) +#define HID_DSADMIN_NO_TABLES (HID_DBACCESS_START + 56) +#define HID_DSADMIN_SELECT_TABLES (HID_DBACCESS_START + 57) +#define HID_DSADMIN_TABLE_SELECTOR (HID_DBACCESS_START + 58) +#define HID_DSADMIN_SUPPRESS_VERSIONCL (HID_DBACCESS_START + 59) + +#define HID_GENERIC_SQL_ERROR (HID_DBACCESS_START + 60) + +#define HID_BROWSER_COLUMNFORMAT (HID_DBACCESS_START + 61) +#define HID_BROWSER_COLUMNWIDTH (HID_DBACCESS_START + 62) +#define HID_BROWSER_TABLEFORMAT (HID_DBACCESS_START + 63) +#define HID_BROWSER_ROWHEIGHT (HID_DBACCESS_START + 64) +#define HID_BROWSER_EDIT_DATABASE (HID_DBACCESS_START + 65) +#define HID_BROWSER_CLOSECONN (HID_DBACCESS_START + 66) +#define HID_BROWSER_REFRESHCONN (HID_DBACCESS_START + 67) + +#define HID_DLG_ROWHEIGHT (HID_DBACCESS_START + 68) +#define HID_DLG_COLWIDTH (HID_DBACCESS_START + 69) + + +#define HID_TLB_QUERYDESIGN (HID_DBACCESS_START + 70) +#define HID_CTL_QRYSQLEDIT (HID_DBACCESS_START + 71) +#define HID_DSADMIN_SPECIAL_MESSAGE (HID_DBACCESS_START + 72) + +#define HID_BROWSER_QUERY_CREATE_TEXT (HID_DBACCESS_START + 73) + +#define HID_DLG_ERROR (HID_DBACCESS_START + 74) +#define HID_DLG_TEXT (HID_DBACCESS_START + 75) +#define UID_SQLERROR_BUTTONMORE (HID_DBACCESS_START + 76) +#define HID_DLG_SAVE_AS (HID_DBACCESS_START + 77) + +#define HID_BROWSER_QUERY_EDIT (HID_DBACCESS_START + 78) +#define HID_BROWSER_QUERY_DELETE (HID_DBACCESS_START + 79) + +#define HID_DSADMIN_USER_ADO (HID_DBACCESS_START + 80) +#define HID_DSADMIN_PWDREC_ADO (HID_DBACCESS_START + 81) +#define HID_DSADMIN_CONNURL_ADOPAGE (HID_DBACCESS_START + 82) +#define HID_DSADMIN_PAGE_ADO (HID_DBACCESS_START + 83) + + +#define HID_JOINSH_ADDTAB_CLOSE (HID_DBACCESS_START + 84) +#define HID_JOINSH_ADDTAB_TABLELIST (HID_DBACCESS_START + 85) +#define HID_CTL_QRYDGNTAB (HID_DBACCESS_START + 86) +#define HID_DLG_QRY_JOIN (HID_DBACCESS_START + 87) +#define HID_DLG_QRY_JOINTYPE (HID_DBACCESS_START + 88) +#define HID_JOINSH_ADDTAB_QUERYLIST (HID_DBACCESS_START + 89) +#define HID_DLG_QRY_HELPTEXT (HID_DBACCESS_START + 92) + +#define HID_CTL_QRYDGNCRIT (HID_DBACCESS_START + 93) +#define HID_QRYDGN_ROW_VISIBLE (HID_DBACCESS_START + 94) +#define HID_QRYDGN_ROW_TABLE (HID_DBACCESS_START + 95) +#define HID_QRYDGN_ROW_FIELD (HID_DBACCESS_START + 96) +#define HID_QRYDGN_ROW_ORDER (HID_DBACCESS_START + 97) +#define HID_QRYDGN_ROW_FUNCTION (HID_DBACCESS_START + 98) +#define HID_QRYDGN_ROW_ALIAS (HID_DBACCESS_START + 99) +#define HID_QRYDGN_ROW_CRIT (HID_DBACCESS_START + 100) + +#define HID_QUERY_FUNCTION (HID_DBACCESS_START + 101) +#define HID_QUERY_TABLENAME (HID_DBACCESS_START + 102) +#define HID_QUERY_ALIASNAME (HID_DBACCESS_START + 103) +#define HID_QUERY_DISTINCT (HID_DBACCESS_START + 104) + +#define HID_BROWSER_QUERY_CREATE_DESIGN (HID_DBACCESS_START + 105) + +#define HID_DSADMIN_QUERIES (HID_DBACCESS_START + 106) +#define HID_DSADMIN_QUERIES_NEW (HID_DBACCESS_START + 107) +#define HID_DSADMIN_QUERIES_EDIT (HID_DBACCESS_START + 108) +#define HID_DSADMIN_QUERIES_DELETE (HID_DBACCESS_START + 109) +#define HID_DSADMIN_QUERYADMINISTRATION (HID_DBACCESS_START + 110) + + +#define HID_TAB_DESIGN_TABLE_DESC (HID_DBACCESS_START + 111) +#define HID_TAB_DESIGN_FIELDCONTROL (HID_DBACCESS_START + 112) +#define HID_TABLE_DESIGN_HELP_WINDOW (HID_DBACCESS_START + 113) +#define HID_TAB_DESIGN_DESCWIN (HID_DBACCESS_START + 114) +#define HID_TAB_DESIGN_TABLE_PROPS (HID_DBACCESS_START + 115) +#define HID_TABDESIGN_BACKGROUND (HID_DBACCESS_START + 116) +#define HID_CTL_TABLEEDIT (HID_DBACCESS_START + 117) +#define HID_TABDESIGN_NAMECELL (HID_DBACCESS_START + 118) +#define HID_TABDESIGN_TYPECELL (HID_DBACCESS_START + 119) +#define HID_TABDESIGN_COMMENTCELL (HID_DBACCESS_START + 120) +#define SID_TABLEDESIGN_INSERTROWS (HID_DBACCESS_START + 121) +#define SID_TABLEDESIGN_TABED_PRIMARYKEY (HID_DBACCESS_START + 122) +#define HID_TLB_TABLEDESIGN (HID_DBACCESS_START + 123) +#define HID_TAB_DESIGN_HELP_TEXT_FRAME (HID_DBACCESS_START + 124) +#define HID_TABLE_DESIGN_TABPAGE_GENERAL (HID_DBACCESS_START + 125) +#define HID_TAB_ENT_DEFAULT (HID_DBACCESS_START + 126) +#define HID_TAB_ENT_FORMAT_SAMPLE (HID_DBACCESS_START + 127) +#define HID_TAB_ENT_FORMAT (HID_DBACCESS_START + 128) +#define HID_TAB_ENT_BOOL_DEFAULT (HID_DBACCESS_START + 129) +#define HID_TAB_ENT_REQUIRED (HID_DBACCESS_START + 130) +#define HID_TAB_ENT_AUTOINCREMENT (HID_DBACCESS_START + 131) +#define HID_TAB_ENT_TEXT_LEN (HID_DBACCESS_START + 132) +#define HID_TAB_ENT_TYPE (HID_DBACCESS_START + 133) +#define HID_TAB_ENT_COLUMNNAME (HID_DBACCESS_START + 134) +#define HID_TAB_ENT_NUMTYP (HID_DBACCESS_START + 135) +#define HID_TAB_ENT_LEN (HID_DBACCESS_START + 136) +#define HID_TAB_ENT_SCALE (HID_DBACCESS_START + 137) +#define HID_BROWSER_TABLE_CREATE_DESIGN (HID_DBACCESS_START + 138) +#define HID_BROWSER_TABLE_EDIT (HID_DBACCESS_START + 139) +#define HID_BROWSER_TABLE_DELETE (HID_DBACCESS_START + 140) +#define HID_SQLERROR_EXCHAIN_ERRORS (HID_DBACCESS_START + 141) +#define HID_SQLERROR_EXCHAIN_TEXT (HID_DBACCESS_START + 142) +#define HID_TAB_WIZ_COLUMN_SELECT (HID_DBACCESS_START + 146) +#define HID_TAB_WIZ_TYPE_SELECT (HID_DBACCESS_START + 147) +#define HID_TAB_NAMEMATCHING_COLS_AVAIL (HID_DBACCESS_START + 148) +#define HID_TAB_NAMEMATCHING_COLS_ASSIGN (HID_DBACCESS_START + 149) +#define HID_TAB_WIZ_COPYTABLE (HID_DBACCESS_START + 150) +#define HID_TAB_WIZ_TABLENAME_EDIT (HID_DBACCESS_START + 151) +#define HID_CTL_RELATIONTAB (HID_DBACCESS_START + 152) +#define HID_TLB_RELATIONDESIGN (HID_DBACCESS_START + 153) +#define HID_RELATIONDIALOG_LEFTFIELDCELL (HID_DBACCESS_START + 154) +#define HID_RELATIONDIALOG_RIGHTFIELDCELL (HID_DBACCESS_START + 155) +#define HID_RELDLG_KEYFIELDS (HID_DBACCESS_START + 156) +#define HID_BROWSER_RELATION_DESIGN (HID_DBACCESS_START + 157) +#define HID_TABLE_DESIGN_NO_CONNECTION (HID_DBACCESS_START + 158) +#define HID_DSADMIN_CREATEDATABASE (HID_DBACCESS_START + 159) +#define HID_BROWSER_COLUMNINFO (HID_DBACCESS_START + 160) +#define HID_DSADMIN_USECATALOG (HID_DBACCESS_START + 161) +#define HID_BROWSER_VIEW_CREATE_DESIGN (HID_DBACCESS_START + 162) +#define HID_DSADMIN_DOCUMENTS (HID_DBACCESS_START + 166) +#define HID_DSADMIN_DOCUMENTLINKS (HID_DBACCESS_START + 167) +#define HID_DSADMIN_FILTER_EXPLANATION (HID_DBACCESS_START + 168) +#define HID_CONFIRM_DROP_BUTTON_ALL (HID_DBACCESS_START + 169) +#define HID_DSBROWSER_BOOKMARK_SELECTED (HID_DBACCESS_START + 170) +#define HID_DSADMIN_TABLE_TOOLBOX (HID_DBACCESS_START + 171) +#define HID_DSADMIN_QUERY_TOOLBOX (HID_DBACCESS_START + 172) +#define HID_DSADMIN_BOOKMARK_TOOLBOX (HID_DBACCESS_START + 173) +#define HID_DSADMIN_PAGE_LDAP (HID_DBACCESS_START + 174) +#define HID_DSADMIN_LDAP_HOSTNAME (HID_DBACCESS_START + 175) +#define HID_DSADMIN_LDAP_BASEDN (HID_DBACCESS_START + 176) +#define HID_DSADMIN_LDAP_PORTNUMBER (HID_DBACCESS_START + 177) +#define HID_DSBROWSER_BOOKMARKSELECTED (HID_DBACCESS_START + 178) +#define HID_DSBROWSER_DISCONNECTING (HID_DBACCESS_START + 179) +#define HID_TAB_PAGE_USERADMIN (HID_DBACCESS_START + 180) +#define HID_TAB_PAGE_PBUSER (HID_DBACCESS_START + 181) +#define HID_TAB_PAGE_PBCHGPWD (HID_DBACCESS_START + 182) +#define HID_TAB_PAGE_PBUSERDELETE (HID_DBACCESS_START + 183) +#define HID_TAB_PAGE_TBLGRANTS (HID_DBACCESS_START + 184) +#define HID_TAB_PAGE_LBUSER (HID_DBACCESS_START + 185) +#define HID_DSBROWSER_DIRECTSQL (HID_DBACCESS_START + 186) +#define HID_DSADMIN_LDAP_ROWCOUNT (HID_DBACCESS_START + 187) +#define HID_BROWSER_QUERY_EDITSQL (HID_DBACCESS_START + 189) +#define HID_DSADMIN_PAGE_MOZILLA (HID_DBACCESS_START + 190) +#define HID_DSADMIN_MOZILLA_PROFILE_NAME (HID_DBACCESS_START + 191) +#define HID_DSADMIN_THUNDERBIRD_PROFILE_NAME (HID_DBACCESS_START + 192) +#define HID_BROWSER_OPEN_DOCUMENT (HID_DBACCESS_START + 193) +#define HID_BROWSER_EDIT_DOCUMENT (HID_DBACCESS_START + 194) +#define HID_BROWSER_BEW_DOCUMENT (HID_DBACCESS_START + 195) +#define HID_DLG_PASSWORD (HID_DBACCESS_START + 196) + +#define HID_DLGIDX_NEWINDEX (HID_DBACCESS_START + 197) +#define HID_DLGIDX_DROPINDEX (HID_DBACCESS_START + 198) +#define HID_DLGIDX_RENAMEINDEX (HID_DBACCESS_START + 199) +#define HID_DLGIDX_SAVEINDEX (HID_DBACCESS_START + 200) +#define HID_DLGIDX_RESETINDEX (HID_DBACCESS_START + 201) +#define HID_DLGIDX_INDEXLIST (HID_DBACCESS_START + 202) +#define UID_DLGINDEX_INDEXDETAILS_BACK (HID_DBACCESS_START + 203) +#define UID_DLGINDEX_INDEXDETAILS_MAIN (HID_DBACCESS_START + 204) +#define HID_DLGINDEX_INDEXDETAILS_FIELD (HID_DBACCESS_START + 205) +#define HID_DLGINDEX_INDEXDETAILS_SORTORDER (HID_DBACCESS_START + 206) + +#define HID_DOCLINKEDIT_URL (HID_DBACCESS_START + 207) +#define HID_QUERY_SQLMODE (HID_DBACCESS_START + 208) + +#define HID_BROWSER_REFRESH_REBUILDVIEW (HID_DBACCESS_START + 209) +#define HID_BROWSER_RENAME_ENTRY (HID_DBACCESS_START + 210) + +#define HID_QUERY_EDIT_JOINCONNECTION (HID_DBACCESS_START + 211) + +#define HID_DLG_QRY_WINDOW_CONTROL (HID_DBACCESS_START + 212) +#define HID_DLG_QRY_LEFT_TABLE (HID_DBACCESS_START + 213) +#define HID_DLG_QRY_RIGHT_TABLE (HID_DBACCESS_START + 214) + +#define HID_DLG_REL_CASC_DEL (HID_DBACCESS_START + 215) +#define HID_DLG_REL_NO_CASC_DEL (HID_DBACCESS_START + 216) +#define HID_DLG_REL_CASC_DEL_NULL (HID_DBACCESS_START + 217) +#define HID_DLG_REL_CASC_DEL_DEFAULT (HID_DBACCESS_START + 218) + +#define HID_DLG_REL_CASC_UPD (HID_DBACCESS_START + 219) +#define HID_DLG_REL_NO_CASC_UPD (HID_DBACCESS_START + 220) +#define HID_DLG_REL_CASC_UPD_NULL (HID_DBACCESS_START + 221) +#define HID_DLG_REL_CASC_UPD_DEFAULT (HID_DBACCESS_START + 222) +#define HID_BROWSER_SAVE_RECORD (HID_DBACCESS_START + 223) +#define HID_BROWSER_UNDO_RECORD (HID_DBACCESS_START + 224) + +#define HID_DSADMIN_SQL92CHECK (HID_DBACCESS_START + 225) +#define HID_DSADMIN_AUTOINCREMENTVALUE (HID_DBACCESS_START + 226) +#define HID_DOCUMENT_CREATE_REPWIZ (HID_DBACCESS_START + 227) +#define HID_TAB_AUTOINCREMENTVALUE (HID_DBACCESS_START + 228) +#define HID_DSADMIN_RETRIEVE_AUTO (HID_DBACCESS_START + 229) +#define HID_DSADMIN_AUTORETRIEVEENABLED (HID_DBACCESS_START + 230) + +#define HID_DSADMIN_PAGE_MYSQL_ODBC (HID_DBACCESS_START + 231) +#define HID_TAB_PAGE_TABLEPRIVILEGES (HID_DBACCESS_START + 232) + +#define HID_DSADMIN_PAGE_USERDRIVER (HID_DBACCESS_START + 233) +#define HID_DSADMIN_USER_DEFINED (HID_DBACCESS_START + 234) +#define HID_DSADMIN_USERDEF_OPTIONS (HID_DBACCESS_START + 235) +#define HID_DSADMIN_CHARSET_USERDEF (HID_DBACCESS_START + 236) +#define HID_DSADMIN_USER_LDAP (HID_DBACCESS_START + 237) +#define HID_DSADMIN_PWDREC_LDAP (HID_DBACCESS_START + 238) +#define HID_DSADMIN_USESSL_LDAP (HID_DBACCESS_START + 239) +#define HID_BROWSER_QUERY_WIZARD (HID_DBACCESS_START + 237) + +#define HID_DLG_RENAME (HID_DBACCESS_START + 237) + +#define HID_DSADMIN_PAGE_MYSQL_JDBC (HID_DBACCESS_START + 238) + +#define HID_DSADMIN_DBASE_PATH (HID_DBACCESS_START + 239) +#define HID_DSADMIN_MYSQL_DATABASE (HID_DBACCESS_START + 240) +#define HID_DSADMIN_MYSQL_ODBC_DATASOURCE (HID_DBACCESS_START + 241) +#define HID_DSADMIN_ODBC_DATASOURCE (HID_DBACCESS_START + 242) +#define HID_DSADMIN_ADABAS_DATABASE (HID_DBACCESS_START + 243) +#define HID_DSADMIN_MSACCESS_MDB_FILE (HID_DBACCESS_START + 244) +#define HID_DSADMIN_PAGE_MSACCESS (HID_DBACCESS_START + 245) +#define HID_DSADMIN_FLAT_PATH (HID_DBACCESS_START + 246) +#define HID_DSADMIN_CALC_PATH (HID_DBACCESS_START + 247) +#define HID_DSADMIN_ADVANCED (HID_DBACCESS_START + 248) +#define HID_DSADMIN_BOOLEANCOMPARISON (HID_DBACCESS_START + 249) +#define HID_DSADMIN_ORACLE_DATABASE (HID_DBACCESS_START + 250) + +#define UID_APP_VIEW (HID_DBACCESS_START + 251) +#define HID_APP_TABLE_TREE (HID_DBACCESS_START + 252) +#define HID_APP_FORM_TREE (HID_DBACCESS_START + 253) +#define HID_APP_QUERY_TREE (HID_DBACCESS_START + 254) +#define HID_APP_REPORT_TREE (HID_DBACCESS_START + 255) +#define UID_APP_DETAIL_VIEW (HID_DBACCESS_START + 256) +#define UID_APP_VIEW_VERT_SPLIT (HID_DBACCESS_START + 257) +#define UID_APP_VIEW_BORDER_WIN (HID_DBACCESS_START + 258) +#define HID_APP_CREATION_LIST (HID_DBACCESS_START + 259) +#define UID_APP_SWAP_VIEW (HID_DBACCESS_START + 260) +#define UID_DLG_TABLE_FILTER (HID_DBACCESS_START + 261) +#define HID_APP_SWAP_ICONCONTROL (HID_DBACCESS_START + 262) + +#define HID_DSADMIN_APPENDTABLEALIAS (HID_DBACCESS_START + 263) +#define HID_DSADMIN_PARAMETERNAMESUBST (HID_DBACCESS_START + 264) +#define HID_DSADMIN_IGNOREDRIVER_PRIV (HID_DBACCESS_START + 265) +#define HID_DSADMIN_HOSTNAME (HID_DBACCESS_START + 266) +#define HID_DSADMIN_PORTNUMBER (HID_DBACCESS_START + 267) + +#define HID_APP_HELP_TEXT (HID_DBACCESS_START + 268) +#define HID_EXPLORERDLG_COLLECTION (HID_DBACCESS_START + 269) +#define UID_APP_DATABASE_VIEW (HID_DBACCESS_START + 270) +#define UID_APP_TASKS_VIEW (HID_DBACCESS_START + 271) +#define UID_APP_CONTAINER_VIEW (HID_DBACCESS_START + 272) +#define UID_APP_TASKS_WINDOW (HID_DBACCESS_START + 273) +#define HID_APP_DESCRIPTION_TEXT (HID_DBACCESS_START + 274) +#define UID_APP_DETAILPAGE_HELPER (HID_DBACCESS_START + 275) +#define HID_APP_VIEW_PREVIEW_CB (HID_DBACCESS_START + 276) +#define HID_APP_VIEW_PREVIEW_1 (HID_DBACCESS_START + 277) +#define HID_APP_VIEW_PREVIEW_2 (HID_DBACCESS_START + 278) +// free +#define UID_APP_VIEW_HORZ_SPLIT (HID_DBACCESS_START + 280) +#define UID_APP_VIEW_PREVIEW_1 (HID_DBACCESS_START + 281) +#define HID_APP_VIEW_PREVIEW_3 (HID_DBACCESS_START + 282) + +#define HID_DSADMIN_TYPE_DIALOG (HID_DBACCESS_START + 283) +#define HID_DSADMIN_ENABLEOUTERJOIN (HID_DBACCESS_START + 284) +#define HID_DSADMIN_ADABASADMIN (HID_DBACCESS_START + 285) +#define HID_DSADMIN_USERADMIN (HID_DBACCESS_START + 286) + +#define HID_DBWIZ_PREVIOUS (HID_DBACCESS_START + 287) +#define HID_DBWIZ_NEXT (HID_DBACCESS_START + 288) +#define HID_DBWIZ_CANCEL (HID_DBACCESS_START + 289) +#define HID_DBWIZ_FINISH (HID_DBACCESS_START + 290) +#define UID_DBWIZ_HELP (HID_DBACCESS_START + 291) + +#define HID_DSADMIN_CATALOG (HID_DBACCESS_START + 292) +#define HID_DSADMIN_SCHEMA (HID_DBACCESS_START + 293) +#define HID_DSADMIN_IGNOREINDEXAPPENDIX (HID_DBACCESS_START + 294) +#define HID_DSADMIN_DOSLINEENDS (HID_DBACCESS_START + 295) + +#define HID_BROWSER_ADMINISTRATE (HID_DBACCESS_START + 296) + +#define HID_DSADMIN_AS_BEFORE_CORRELATION_NAME (HID_DBACCESS_START + 297) +#define HID_DSADMIN_CHECK_REQUIRED_FIELDS (HID_DBACCESS_START + 298) + +#define HID_PAGE_DBWIZARD_GENERALPAGE (HID_DBACCESS_START + 300) +#define HID_PAGE_DBWIZARD_GENERAL_RB_CREATEDBDATABASE (HID_DBACCESS_START + 301) +#define HID_PAGE_DBWIZARD_GENERAL_RB_GETEXISTINGDATABASE (HID_DBACCESS_START + 302) + +#define HID_PAGE_DBWIZARD_DBASE_ET_DBASELOCATION (HID_DBACCESS_START + 304) +#define HID_PAGE_DBWIZARD_DBASE_PB_DBASELOCATION (HID_DBACCESS_START + 305) + + +#define HID_PAGE_DBWIZARD_TEXT_RB_ACCESSTXTFILES (HID_DBACCESS_START + 307) +#define HID_PAGE_DBWIZARD_TEXT_RB_ACCESSCSVFILES (HID_DBACCESS_START + 308) +#define HID_PAGE_DBWIZARD_TEXT_RB_ACCESSOTHERFILES (HID_DBACCESS_START + 309) +#define HID_PAGE_DBWIZARD_TEXT_ET_OWNEXTENSION (HID_DBACCESS_START + 310) + + +#define HID_PAGE_DBWIZARD_TEXT_ET_LOCATIONTEXTFILE (HID_DBACCESS_START + 311) +#define HID_PAGE_DBWIZARD_TEXT_PB_LOCATIONTEXTFILE (HID_DBACCESS_START + 312) +#define HID_PAGE_DBWIZARD_TEXT_CB_FIELDSEPARATOR (HID_DBACCESS_START + 313) +#define HID_PAGE_DBWIZARD_TEXT_CB_TEXTSEPARATOR (HID_DBACCESS_START + 314) +#define HID_PAGE_DBWIZARD_TEXT_CB_DECIMALSEPARATOR (HID_DBACCESS_START + 315) +#define HID_PAGE_DBWIZARD_TEXT_CB_THOUSANDSSEPARATOR (HID_DBACCESS_START + 316) + +#define HID_PAGE_DBWIZARD_MSACCESS_ET_MSACCESSLOCATION (HID_DBACCESS_START + 317) +#define HID_PAGE_DBWIZARD_MSACCESS_PB_MSACCESSLOCATION (HID_DBACCESS_START + 318) + +#define HID_PAGE_DBWIZARD_LDAP_ET_HOSTSERVER (HID_DBACCESS_START + 319) +#define HID_PAGE_DBWIZARD_LDAP_ET_BASEDN (HID_DBACCESS_START + 320) +#define HID_PAGE_DBWIZARD_LDAP_ET_PORTNUMBER (HID_DBACCESS_START + 321) +#define HID_PAGE_DBWIZARD_LDAP_CB_USESSL (HID_DBACCESS_START + 322) +#define HID_PAGE_DBWIZARD_LDAP_PB_TESTLDAPCONNECTION (HID_DBACCESS_START + 323) + +#define HID_PAGE_DBWIZARD_ADABAS_ET_ADABASNAME (HID_DBACCESS_START + 326) +#define HID_PAGE_DBWIZARD_ADABAS_PB_ADABASNAME (HID_DBACCESS_START + 327) + +#define HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAODBC (HID_DBACCESS_START + 329) +#define HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAJDBC (HID_DBACCESS_START + 330) + +#define HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEDBNAME (HID_DBACCESS_START + 333) +#define HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEHOSTSERVER (HID_DBACCESS_START + 334) +#define HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEPORT (HID_DBACCESS_START + 335) +#define HID_PAGE_DBWIZARD_ORACLE_ET_ORACLECLASS (HID_DBACCESS_START + 336) +#define HID_PAGE_DBWIZARD_ORACLE_PB_TESTORACLECLASS (HID_DBACCESS_START + 337) + +#define HID_PAGE_DBWIZARD_JDBC_ET_JDBCURL (HID_DBACCESS_START + 340) +#define HID_PAGE_DBWIZARD_JDBC_PB_JDBCURL (HID_DBACCESS_START + 341) + +#define HID_PAGE_DBWIZARD_JDBC_ET_JDBCCLASS (HID_DBACCESS_START + 342) +#define HID_PAGE_DBWIZARD_JDBC_PB_TESTJDBCCLASS (HID_DBACCESS_START + 343) + +#define HID_PAGE_DBWIZARD_JDBC_ET_MYSQLDBNAME (HID_DBACCESS_START + 344) +#define HID_PAGE_DBWIZARD_JDBC_ET_MYSQLHOSTSERVER (HID_DBACCESS_START + 345) +#define HID_PAGE_DBWIZARD_JDBC_ET_MYSQLPORT (HID_DBACCESS_START + 346) +#define HID_PAGE_DBWIZARD_JDBC_ET_MYSQLCLASS (HID_DBACCESS_START + 347) +#define HID_PAGE_DBWIZARD_JDBC_PB_TESTMYSQLCLASS (HID_DBACCESS_START + 348) + + +#define HID_PAGE_DBWIZARD_ADO_ET_ADOURL (HID_DBACCESS_START + 349) +#define HID_PAGE_DBWIZARD_ADO_PB_ADOURL (HID_DBACCESS_START + 350) +#define HID_PAGE_DBWIZARD_ADO_PB_TESTADOCONNECTION (HID_DBACCESS_START + 351) + +#define HID_PAGE_DBWIZARD_ODBC_ET_NAMEOFODBCDATASOURCE (HID_DBACCESS_START + 355) +#define HID_PAGE_DBWIZARD_ODBC_PB_NAMEOFODBCDATASOURCE (HID_DBACCESS_START + 356) + +#define HID_PAGE_DBWIZARD_SPREADSHEET_ET_SPREADSHEETPATH (HID_DBACCESS_START + 359) +#define HID_PAGE_DBWIZARD_SPREADSHEET_PB_SPREADSHEETPATH (HID_DBACCESS_START + 360) +#define HID_PAGE_DBWIZARD_SPREADSHEET_CB_SPREADSHEETPASSWORDREQUIRED (HID_DBACCESS_START + 361) + +#define HID_PAGE_DBWIZARD_AUTHENTIFICATION_CB_GENERALPASSWORDREQUIRED (HID_DBACCESS_START + 365) +#define HID_PAGE_DBWIZARD_AUTHENTIFICATION_ET_GENERALUSERNAME (HID_DBACCESS_START + 366) +#define HID_PAGE_DBWIZARD_AUTHENTIFICATION_PB_TESTCONNECTION (HID_DBACCESS_START + 367) + +#define HID_PAGE_DBWIZARD_FINAL_RB_REGISTERDATASOURCE (HID_DBACCESS_START + 373) +#define HID_PAGE_DBWIZARD_FINAL_RB_DONTREGISTERDATASOURCE (HID_DBACCESS_START + 374) +#define HID_PAGE_DBWIZARD_FINAL_CB_STARTTABLEWIZARD (HID_DBACCESS_START + 375) +#define HID_PAGE_DBWIZARD_FINAL_CB_OPENAFTERWARDS (HID_DBACCESS_START + 376) + +#define HID_PAGE_DBWIZARD_USERDEFINED_ET_BROWSE (HID_DBACCESS_START + 377) +#define HID_PAGE_DBWIZARD_USERDEFINED_BROWSE (HID_DBACCESS_START + 378) +#define HID_INDEX_DIALOG_ACTION_TB (HID_DBACCESS_START + 379) + +#define HID_DLG_DATABASE_WIZARD (HID_DBACCESS_START + 380) + +#define HID_EXTENSION_NOT_PRESENT_DLG ( HID_DBACCESS_START + 381) +#define HID_DLG_QRY_JOIN_CONTROL ( HID_DBACCESS_START + 382) +#define HID_DSADMIN_IGNORECURRENCY ( HID_DBACCESS_START + 383) + +#define HID_MACRO_MIGRATION_BACKUP_LOCATION ( HID_DBACCESS_START + 384) + +// this one below have hid in number space HID_SBA_START +#define HID_DLG_ADABAS_NEWDB (HID_SBA_START + 0) +#define HID_DLG_ADABAS_DBNAME (HID_SBA_START + 1) +#define HID_DLG_ADABAS_SYSUSR (HID_SBA_START + 2) +#define HID_DLG_ADABAS_SYSPWD (HID_SBA_START + 3) +#define HID_DLG_ADABAS_CONUSR (HID_SBA_START + 4) +#define HID_DLG_ADABAS_CONPWD (HID_SBA_START + 5) +#define HID_DLG_ADABAS_DATADEVSPACE_SIZE (HID_SBA_START + 6) +#define HID_DLG_ADABAS_CACHE_SIZE (HID_SBA_START + 7) +#define HID_DLG_ADABAS_USR (HID_SBA_START + 8) +#define HID_DLG_ADABAS_DOMAINPWD (HID_SBA_START + 9) +#define HID_DLG_ADABAS_RESTORE (HID_SBA_START + 10) +#define HID_DLG_ADABAS_PBRESTORE (HID_SBA_START + 11) +#define HID_DLG_ADABAS_SYSDEVSPACE (HID_SBA_START + 12) +#define HID_DLG_ADABAS_PBSYSDEVSPACE (HID_SBA_START + 13) +#define HID_DLG_ADABAS_TRANSACTIONLOG (HID_SBA_START + 14) +#define HID_DLG_ADABAS_PBTRANSACTIONLOG (HID_SBA_START + 15) +#define HID_DLG_ADABAS_DATADEVSPACE (HID_SBA_START + 16) +#define HID_DLG_ADABAS_PBDATADEVSPACE (HID_SBA_START + 18) +#define HID_DLG_ADABAS_TRANSACTIONLOG_SIZE (HID_SBA_START + 19) +#define HID_DLG_ADABAS_CON_PWD (HID_SBA_START + 20) +#define HID_DLG_ADABAS_SYS_PWD (HID_SBA_START + 21) +#define HID_DLG_ADABAS_DOMAIN_PWD (HID_SBA_START + 22) +//end of HID_SBA_START + +// don't forget to update the file util/hidother.src + + + +#endif // _DBA_DBACCESS_HELPID_HRC_ + + diff --git a/dbaccess/source/core/dataaccess/ModelImpl.cxx b/dbaccess/source/core/dataaccess/ModelImpl.cxx index 5759e8299c1c..0ccdbf8191e5 100644 --- a/dbaccess/source/core/dataaccess/ModelImpl.cxx +++ b/dbaccess/source/core/dataaccess/ModelImpl.cxx @@ -1,1449 +1,1449 @@ -/*************************************************************************
- *
- * 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: ModelImpl.cxx,v $
- * $Revision: 1.25.6.12 $
- *
- * 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 "commandcontainer.hxx"
-#include "connection.hxx"
-#include "core_resource.hrc"
-#include "core_resource.hxx"
-#include "databasecontext.hxx"
-#include "databasedocument.hxx"
-#include "datasource.hxx"
-#include "dbastrings.hrc"
-#include "ModelImpl.hxx"
-#include "userinformation.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/container/XSet.hpp>
-#include <com/sun/star/document/MacroExecMode.hpp>
-#include <com/sun/star/embed/XTransactedObject.hpp>
-#include <com/sun/star/embed/XTransactionBroadcaster.hpp>
-#include <com/sun/star/sdb/BooleanComparisonMode.hpp>
-#include <com/sun/star/script/DocumentScriptLibraryContainer.hpp>
-#include <com/sun/star/script/DocumentDialogLibraryContainer.hpp>
-#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
-#include <com/sun/star/form/XLoadable.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/interaction.hxx>
-#include <comphelper/mediadescriptor.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <comphelper/seqstream.hxx>
-#include <comphelper/sequence.hxx>
-#include <connectivity/dbexception.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <rtl/digest.h>
-#include <sfx2/signaturestate.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <tools/errcode.hxx>
-#include <tools/urlobj.hxx>
-#include <unotools/sharedunocomponent.hxx>
-
-#include <algorithm>
-
-using namespace ::com::sun::star::document;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::embed;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::task;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::view;
-using namespace ::com::sun::star::task;
-using namespace ::com::sun::star::reflection;
-using namespace ::com::sun::star::script;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace ::vos;
-using namespace ::dbtools;
-using namespace ::comphelper;
-namespace css = ::com::sun::star;
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
-//============================================================
-//= VosMutexFacade
-//============================================================
-//------------------------------------------------------------------------
-VosMutexFacade::VosMutexFacade( ::osl::Mutex& _rMutex )
- :m_rMutex( _rMutex )
-{
-}
-
-//------------------------------------------------------------------------
-void SAL_CALL VosMutexFacade::acquire()
-{
- m_rMutex.acquire();
-}
-
-//------------------------------------------------------------------------
-sal_Bool SAL_CALL VosMutexFacade::tryToAcquire()
-{
- return m_rMutex.tryToAcquire();
-}
-
-//------------------------------------------------------------------------
-void SAL_CALL VosMutexFacade::release()
-{
- m_rMutex.release();
-}
-
-//============================================================
-//= DocumentStorageAccess
-//============================================================
-DBG_NAME( DocumentStorageAccess )
-class DocumentStorageAccess : public ::cppu::WeakImplHelper2< XDocumentSubStorageSupplier
- , XTransactionListener >
-{
- typedef ::std::map< ::rtl::OUString, Reference< XStorage > > NamedStorages;
-
- ::osl::Mutex m_aMutex;
- /// all sub storages which we ever gave to the outer world
- NamedStorages m_aExposedStorages;
- ODatabaseModelImpl* m_pModelImplementation;
- bool m_bPropagateCommitToRoot;
-
-public:
- DocumentStorageAccess( ODatabaseModelImpl& _rModelImplementation )
- :m_pModelImplementation( &_rModelImplementation )
- ,m_bPropagateCommitToRoot( true )
- {
- DBG_CTOR( DocumentStorageAccess, NULL );
- }
-
-protected:
- ~DocumentStorageAccess()
- {
- DBG_DTOR( DocumentStorageAccess, NULL );
- }
-
-public:
- void dispose();
-
- void suspendCommitPropagation()
- {
- DBG_ASSERT( m_bPropagateCommitToRoot, "DocumentStorageAccess:: suspendCommitPropagation: already suspended" );
- m_bPropagateCommitToRoot = false;
- }
- void resumeCommitPropagation()
- {
- DBG_ASSERT( !m_bPropagateCommitToRoot, "DocumentStorageAccess:: suspendCommitPropagation: already suspended" );
- m_bPropagateCommitToRoot = true;
- }
-
- // XDocumentSubStorageSupplier
- virtual Reference< XStorage > SAL_CALL getDocumentSubStorage( const ::rtl::OUString& aStorageName, ::sal_Int32 nMode ) throw (RuntimeException);
- virtual Sequence< ::rtl::OUString > SAL_CALL getDocumentSubStoragesNames( ) throw (IOException, RuntimeException);
-
- // XTransactionListener
- virtual void SAL_CALL preCommit( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL commited( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL preRevert( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL reverted( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException);
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-};
-
-//--------------------------------------------------------------------------
-void DocumentStorageAccess::dispose()
-{
- ::osl::MutexGuard aGuard( m_aMutex );
-
- for ( NamedStorages::iterator loop = m_aExposedStorages.begin();
- loop != m_aExposedStorages.end();
- ++loop
- )
- {
- try
- {
- Reference< XTransactionBroadcaster > xBroadcaster( loop->second, UNO_QUERY );
- if ( xBroadcaster.is() )
- xBroadcaster->removeTransactionListener( this );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- m_aExposedStorages.clear();
-
- m_pModelImplementation = NULL;
-}
-
-//--------------------------------------------------------------------------
-Reference< XStorage > SAL_CALL DocumentStorageAccess::getDocumentSubStorage( const ::rtl::OUString& aStorageName, ::sal_Int32 nMode ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- NamedStorages::iterator pos = m_aExposedStorages.find( aStorageName );
- if ( pos == m_aExposedStorages.end() )
- {
- Reference< XStorage > xResult = m_pModelImplementation->getStorage( aStorageName, nMode );
- Reference< XTransactionBroadcaster > xBroadcaster( xResult, UNO_QUERY );
- if ( xBroadcaster.is() )
- xBroadcaster->addTransactionListener( this );
-
- pos = m_aExposedStorages.insert( NamedStorages::value_type( aStorageName, xResult ) ).first;
- }
-
- return pos->second;
-}
-
-//--------------------------------------------------------------------------
-Sequence< ::rtl::OUString > SAL_CALL DocumentStorageAccess::getDocumentSubStoragesNames( ) throw (IOException, RuntimeException)
-{
- Reference< XStorage > xRootStor( m_pModelImplementation->getRootStorage() );
- if ( !xRootStor.is() )
- return Sequence< ::rtl::OUString >();
-
- ::std::vector< ::rtl::OUString > aNames;
-
- Reference< XNameAccess > xNames( xRootStor, UNO_QUERY_THROW );
- Sequence< ::rtl::OUString > aElementNames( xNames->getElementNames() );
- for ( sal_Int32 i=0; i<aElementNames.getLength(); ++i )
- {
- if ( xRootStor->isStorageElement( aElementNames[i] ) )
- aNames.push_back( aElementNames[i] );
- }
- return aNames.empty()
- ? Sequence< ::rtl::OUString >()
- : Sequence< ::rtl::OUString >( &aNames[0], aNames.size() );
-}
-
-//--------------------------------------------------------------------------
-void SAL_CALL DocumentStorageAccess::preCommit( const css::lang::EventObject& /*aEvent*/ ) throw (Exception, RuntimeException)
-{
- // not interested in
-}
-
-//--------------------------------------------------------------------------
-void SAL_CALL DocumentStorageAccess::commited( const css::lang::EventObject& aEvent ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if ( m_pModelImplementation )
- m_pModelImplementation->setModified( sal_True );
-
- if ( m_pModelImplementation && m_bPropagateCommitToRoot )
- {
- Reference< XStorage > xStorage( aEvent.Source, UNO_QUERY );
- if ( m_pModelImplementation->isDatabaseStorage( xStorage ) )
- {
- m_pModelImplementation->commitRootStorage();
- }
- }
-}
-
-//--------------------------------------------------------------------------
-void SAL_CALL DocumentStorageAccess::preRevert( const css::lang::EventObject& /*aEvent*/ ) throw (Exception, RuntimeException)
-{
- // not interested in
-}
-
-//--------------------------------------------------------------------------
-void SAL_CALL DocumentStorageAccess::reverted( const css::lang::EventObject& /*aEvent*/ ) throw (RuntimeException)
-{
- // not interested in
-}
-
-//--------------------------------------------------------------------------
-void SAL_CALL DocumentStorageAccess::disposing( const css::lang::EventObject& Source ) throw ( RuntimeException )
-{
- ODatabaseModelImpl* pImpl = m_pModelImplementation;
- if ( pImpl )
- pImpl->disposing( Source );
-
- for ( NamedStorages::iterator find = m_aExposedStorages.begin();
- find != m_aExposedStorages.end();
- ++find
- )
- if ( find->second == Source.Source )
- {
- m_aExposedStorages.erase( find );
- break;
- }
-}
-
-//============================================================
-//= ODatabaseModelImpl
-//============================================================
-DBG_NAME(ODatabaseModelImpl)
-//--------------------------------------------------------------------------
-ODatabaseModelImpl::ODatabaseModelImpl( const Reference< XMultiServiceFactory >& _rxFactory, ODatabaseContext& _rDBContext )
- :m_xModel()
- ,m_xDataSource()
- ,m_pStorageAccess( NULL )
- ,m_aMutex()
- ,m_aMutexFacade( m_aMutex )
- ,m_aContainer(4)
- ,m_aStorages()
- ,m_aMacroMode( *this )
- ,m_nImposedMacroExecMode( MacroExecMode::NEVER_EXECUTE )
- ,m_pDBContext( &_rDBContext )
- ,m_refCount(0)
- ,m_bHasAnyObjectWithMacros( false )
- ,m_bModificationLock( false )
- ,m_bDocumentInitialized( false )
- ,m_aContext( _rxFactory )
- ,m_nLoginTimeout(0)
- ,m_bReadOnly(sal_False)
- ,m_bPasswordRequired(sal_False)
- ,m_bSuppressVersionColumns(sal_True)
- ,m_bModified(sal_False)
- ,m_bDocumentReadOnly(sal_False)
- ,m_bDisposingSubStorages( sal_False )
- ,m_pSharedConnectionManager(NULL)
- ,m_nControllerLockCount(0)
-{
- // some kind of default
- DBG_CTOR(ODatabaseModelImpl,NULL);
- m_sConnectURL = ::rtl::OUString::createFromAscii("jdbc:");
- m_aTableFilter.realloc(1);
- m_aTableFilter[0] = ::rtl::OUString::createFromAscii("%");
- impl_construct_nothrow();
-}
-
-//--------------------------------------------------------------------------
-ODatabaseModelImpl::ODatabaseModelImpl(
- const ::rtl::OUString& _rRegistrationName,
- const Reference< XMultiServiceFactory >& _rxFactory,
- ODatabaseContext& _rDBContext
- )
- :m_xModel()
- ,m_xDataSource()
- ,m_pStorageAccess( NULL )
- ,m_aMutex()
- ,m_aMutexFacade( m_aMutex )
- ,m_aContainer(4)
- ,m_aStorages()
- ,m_aMacroMode( *this )
- ,m_nImposedMacroExecMode( MacroExecMode::NEVER_EXECUTE )
- ,m_pDBContext( &_rDBContext )
- ,m_refCount(0)
- ,m_bHasAnyObjectWithMacros( false )
- ,m_bModificationLock( false )
- ,m_bDocumentInitialized( false )
- ,m_aContext( _rxFactory )
- ,m_sName(_rRegistrationName)
- ,m_nLoginTimeout(0)
- ,m_bReadOnly(sal_False)
- ,m_bPasswordRequired(sal_False)
- ,m_bSuppressVersionColumns(sal_True)
- ,m_bModified(sal_False)
- ,m_bDocumentReadOnly(sal_False)
- ,m_bDisposingSubStorages( sal_False )
- ,m_pSharedConnectionManager(NULL)
- ,m_nControllerLockCount(0)
-{
- DBG_CTOR(ODatabaseModelImpl,NULL);
- impl_construct_nothrow();
-}
-
-//--------------------------------------------------------------------------
-ODatabaseModelImpl::~ODatabaseModelImpl()
-{
- DBG_DTOR(ODatabaseModelImpl,NULL);
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::impl_construct_nothrow()
-{
- // create the property bag to hold the settings (also known as "Info" property)
- try
- {
- // the set of property value types in the bag is limited:
- Sequence< Type > aAllowedTypes(6);
- Type* pAllowedType = aAllowedTypes.getArray();
- *pAllowedType++ = ::getCppuType( static_cast< sal_Bool* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< double* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< sal_Int32* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< sal_Int16* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< Sequence< Any >* >( NULL ) );
-
- Sequence< Any > aInitArgs( 2 );
- aInitArgs[0] <<= NamedValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AutomaticAddition" ) ),
- makeAny( (sal_Bool)sal_True )
- );
- aInitArgs[1] <<= NamedValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AllowedTypes" ) ),
- makeAny( aAllowedTypes )
- );
-
- m_xSettings.set( m_aContext.createComponentWithArguments( "com.sun.star.beans.PropertyBag", aInitArgs ), UNO_QUERY_THROW );
-
- // insert the default settings
- Reference< XPropertyContainer > xContainer( m_xSettings, UNO_QUERY_THROW );
- const AsciiPropertyValue* pSettings = getDefaultDataSourceSettings();
- for ( ; pSettings->AsciiName; ++pSettings )
- {
- xContainer->addProperty(
- ::rtl::OUString::createFromAscii( pSettings->AsciiName ),
- PropertyAttribute::BOUND | PropertyAttribute::MAYBEDEFAULT,
- pSettings->DefaultValue
- );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-// -----------------------------------------------------------------------------
-namespace
-{
- // .........................................................................
- ::rtl::OUString lcl_getContainerStorageName_throw( ODatabaseModelImpl::ObjectType _eType )
- {
- const sal_Char* pAsciiName( NULL );
- switch ( _eType )
- {
- case ODatabaseModelImpl::E_FORM: pAsciiName = "forms"; break;
- case ODatabaseModelImpl::E_REPORT: pAsciiName = "reports"; break;
- case ODatabaseModelImpl::E_QUERY: pAsciiName = "queries"; break;
- case ODatabaseModelImpl::E_TABLE: pAsciiName = "tables"; break;
- default:
- throw RuntimeException();
- }
- return ::rtl::OUString::createFromAscii( pAsciiName );
- }
-
- // .........................................................................
- bool lcl_hasObjectWithMacros_throw( const ODefinitionContainer_Impl& _rObjectDefinitions, const Reference< XStorage >& _rxContainerStorage )
- {
- bool bSomeDocHasMacros = false;
-
- for ( ODefinitionContainer_Impl::const_iterator object = _rObjectDefinitions.begin();
- ( object != _rObjectDefinitions.end() ) && !bSomeDocHasMacros;
- ++object
- )
- {
-#if OSL_DEBUG_LEVEL > 0
- const ::rtl::OUString& rName( object->first ); (void)rName;
-#endif
-
- const TContentPtr& rDefinition( object->second );
- const ::rtl::OUString& rPersistentName( rDefinition->m_aProps.sPersistentName );
-
- if ( !rPersistentName.getLength() )
- { // it's a logical sub folder used to organize the real objects
- const ODefinitionContainer_Impl& rSubFoldersObjectDefinitions( dynamic_cast< const ODefinitionContainer_Impl& >( *rDefinition.get() ) );
- bSomeDocHasMacros = lcl_hasObjectWithMacros_throw( rSubFoldersObjectDefinitions, _rxContainerStorage );
- continue;
- }
-
- bSomeDocHasMacros = ODatabaseModelImpl::objectHasMacros( _rxContainerStorage, rPersistentName );
- }
- return bSomeDocHasMacros;
- }
-
- // .........................................................................
- bool lcl_hasObjectsWithMacros_nothrow( ODatabaseModelImpl& _rModel, const ODatabaseModelImpl::ObjectType _eType )
- {
- bool bSomeDocHasMacros = false;
-
- const OContentHelper_Impl& rContainerData( *_rModel.getObjectContainer( _eType ).get() );
- const ODefinitionContainer_Impl& rObjectDefinitions = dynamic_cast< const ODefinitionContainer_Impl& >( rContainerData );
-
- try
- {
- Reference< XStorage > xContainerStorage( _rModel.getStorage(
- _rModel.getObjectContainerStorageName( _eType ), ElementModes::READWRITE ) );
- // note the READWRITE here: If the storage already existed before, then the OpenMode will
- // be ignored, anyway.
- // If the storage did not yet exist, then it will be created. If the database document
- // is read-only, the OpenMode will be automatically downgraded to READ. Otherwise,
- // the storage will in fact be created as READWRITE. While this is not strictly necessary
- // for this particular use case here, it is required since the storage is *cached*, and
- // later use cases will need the READWRITE mode.
-
- if ( xContainerStorage.is() )
- bSomeDocHasMacros = lcl_hasObjectWithMacros_throw( rObjectDefinitions, xContainerStorage );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- // be on the safe side: If we can't reliably determine whether there are macros,
- // assume there actually are. Better this way, than the other way round.
- bSomeDocHasMacros = true;
- }
-
- return bSomeDocHasMacros;
- }
-}
-
-// -----------------------------------------------------------------------------
-bool ODatabaseModelImpl::objectHasMacros( const Reference< XStorage >& _rxContainerStorage, const ::rtl::OUString& _rPersistentName )
-{
- OSL_PRECOND( _rxContainerStorage.is(), "ODatabaseModelImpl::objectHasMacros: this will crash!" );
-
- bool bHasMacros = true;
- try
- {
- if ( !_rxContainerStorage->hasByName( _rPersistentName ) )
- return false;
-
- Reference< XStorage > xObjectStor( _rxContainerStorage->openStorageElement(
- _rPersistentName, ElementModes::READ ) );
-
- bHasMacros = ::sfx2::DocumentMacroMode::storageHasMacros( xObjectStor );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return bHasMacros;
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::reset()
-{
- m_bReadOnly = sal_False;
- ::std::vector< TContentPtr > aEmptyContainers( 4 );
- m_aContainer.swap( aEmptyContainers );
-
- if ( m_pStorageAccess )
- {
- m_pStorageAccess->dispose();
- m_pStorageAccess->release();
- m_pStorageAccess = NULL;
- }
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL ODatabaseModelImpl::disposing( const ::com::sun::star::lang::EventObject& Source ) throw(RuntimeException)
-{
- Reference<XConnection> xCon(Source.Source,UNO_QUERY);
- if ( xCon.is() )
- {
- bool bStore = false;
- OWeakConnectionArray::iterator aEnd = m_aConnections.end();
- for (OWeakConnectionArray::iterator i = m_aConnections.begin(); aEnd != i; ++i)
- {
- if ( xCon == i->get() )
- {
- *i = OWeakConnection();
- bStore = true;
- break;
- }
- }
-
- if ( bStore )
- commitRootStorage();
- }
- else // storage
- {
- if ( !m_bDisposingSubStorages )
- {
- Reference<XStorage> xStorage(Source.Source,UNO_QUERY);
- TStorages::iterator aFind = ::std::find_if(m_aStorages.begin(),m_aStorages.end(),
- ::std::compose1(::std::bind2nd(::std::equal_to<Reference<XStorage> >(),xStorage),::std::select2nd<TStorages::value_type>()));
- if ( aFind != m_aStorages.end() )
- m_aStorages.erase(aFind);
- }
- }
-}
-//------------------------------------------------------------------------------
-void ODatabaseModelImpl::clearConnections()
-{
- OWeakConnectionArray aConnections;
- aConnections.swap( m_aConnections );
-
- Reference< XConnection > xConn;
- for ( OWeakConnectionArray::iterator i = aConnections.begin(); aConnections.end() != i; ++i )
- {
- xConn = *i;
- if ( xConn.is() )
- {
- try
- {
- xConn->close();
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
-
- m_pSharedConnectionManager = NULL;
- m_xSharedConnectionManager = NULL;
-}
-//------------------------------------------------------------------------------
-void ODatabaseModelImpl::dispose()
-{
- // dispose the data source and the model
- try
- {
- Reference< XDataSource > xDS( m_xDataSource );
- ::comphelper::disposeComponent( xDS );
-
- Reference< XModel > xModel( m_xModel );
- ::comphelper::disposeComponent( xModel );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- m_xDataSource = WeakReference<XDataSource>();
- m_xModel = WeakReference< XModel >();
-
- ::std::vector<TContentPtr>::iterator aIter = m_aContainer.begin();
- ::std::vector<TContentPtr>::iterator aEnd = m_aContainer.end();
- for (;aIter != aEnd ; ++aIter)
- {
- if ( aIter->get() )
- (*aIter)->m_pDataSource = NULL;
- }
- m_aContainer.clear();
-
- clearConnections();
-
- m_xNumberFormatsSupplier = NULL;
-
- try
- {
- sal_Bool bStore = commitEmbeddedStorage();
- disposeStorages();
- if ( bStore )
- commitRootStorage();
-
- impl_switchToStorage_throw( NULL );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- if ( m_pStorageAccess )
- {
- m_pStorageAccess->dispose();
- m_pStorageAccess->release();
- m_pStorageAccess = NULL;
- }
-}
-// -----------------------------------------------------------------------------
-const Reference< XNumberFormatsSupplier > & ODatabaseModelImpl::getNumberFormatsSupplier()
-{
- if (!m_xNumberFormatsSupplier.is())
- {
- // the arguments : the locale of the current user
- UserInformation aUserInfo;
- Sequence< Any > aArguments(1);
- aArguments.getArray()[0] <<= aUserInfo.getUserLanguage();
-
- m_xNumberFormatsSupplier.set(
- m_aContext.createComponentWithArguments( "com.sun.star.util.NumberFormatsSupplier", aArguments ), UNO_QUERY_THROW );
- DBG_ASSERT(m_xNumberFormatsSupplier.is(), "ODatabaseModelImpl::getNumberFormatsSupplier : could not instantiate the formats supplier !");
- }
- return m_xNumberFormatsSupplier;
-}
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::attachResource( const ::rtl::OUString& _rURL, const Sequence< PropertyValue >& _rArgs )
-{
- ::comphelper::NamedValueCollection aMediaDescriptor( _rArgs );
-
- ::rtl::OUString sDocumentLocation( aMediaDescriptor.getOrDefault( "SalvagedFile", _rURL ) );
- if ( !sDocumentLocation.getLength() )
- // this indicates "the document is being recovered, but _rURL already is the real document URL,
- // not the temporary document location"
- sDocumentLocation = _rURL;
-
- if ( aMediaDescriptor.has( "SalvagedFile" ) )
- aMediaDescriptor.remove( "SalvagedFile" );
-
- m_aArgs = stripLoadArguments( aMediaDescriptor );
-
- switchToURL( sDocumentLocation, _rURL );
-}
-
-// -----------------------------------------------------------------------------
-Sequence< PropertyValue > ODatabaseModelImpl::stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments )
-{
- OSL_ENSURE( !_rArguments.has( "Model" ), "ODatabaseModelImpl::stripLoadArguments: this is suspicious (1)!" );
- OSL_ENSURE( !_rArguments.has( "ViewName" ), "ODatabaseModelImpl::stripLoadArguments: this is suspicious (2)!" );
-
- ::comphelper::NamedValueCollection aMutableArgs( _rArguments );
- aMutableArgs.remove( "Model" );
- aMutableArgs.remove( "ViewName" );
- return aMutableArgs.getPropertyValues();
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::disposeStorages() SAL_THROW(())
-{
- m_bDisposingSubStorages = sal_True;
-
- TStorages::iterator aEnd = m_aStorages.end();
- for ( TStorages::iterator aIter = m_aStorages.begin();
- aIter != aEnd ;
- ++aIter
- )
- {
- try
- {
- ::comphelper::disposeComponent( aIter->second );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- m_aStorages.clear();
-
- m_bDisposingSubStorages = sal_False;
-}
-// -----------------------------------------------------------------------------
-Reference< XSingleServiceFactory > ODatabaseModelImpl::createStorageFactory() const
-{
- return Reference< XSingleServiceFactory >( m_aContext.createComponent( "com.sun.star.embed.StorageFactory" ), UNO_QUERY_THROW );
-}
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::commitRootStorage()
-{
- Reference< XStorage > xStorage( getOrCreateRootStorage() );
-#if OSL_DEBUG_LEVEL > 0
- bool bSuccess =
-#endif
- commitStorageIfWriteable_ignoreErrors( xStorage );
- OSL_ENSURE( bSuccess || !xStorage.is(),
- "ODatabaseModelImpl::commitRootStorage: could commit the storage!" );
-}
-// -----------------------------------------------------------------------------
-Reference< XStorage > ODatabaseModelImpl::getOrCreateRootStorage()
-{
- if ( !m_xDocumentStorage.is() )
- {
- Reference< XSingleServiceFactory> xStorageFactory = createStorageFactory();
- if ( xStorageFactory.is() )
- {
- Any aSource;
- ::comphelper::NamedValueCollection aArgs( m_aArgs );
-
- aSource = aArgs.get( "Stream" );
- if ( !aSource.hasValue() )
- aSource = aArgs.get( "InputStream" );
- if ( !aSource.hasValue() && m_sDocFileLocation.getLength() )
- aSource <<= m_sDocFileLocation;
- // TODO: shouldn't we also check URL?
-
- OSL_ENSURE( aSource.hasValue(), "ODatabaseModelImpl::getOrCreateRootStorage: no source to create the storage from!" );
-
- if ( aSource.hasValue() )
- {
- Sequence< Any > aStorageCreationArgs(2);
- aStorageCreationArgs[0] = aSource;
- aStorageCreationArgs[1] <<= ElementModes::READWRITE;
-
- Reference< XStorage > xDocumentStorage;
- try
- {
- xDocumentStorage.set( xStorageFactory->createInstanceWithArguments( aStorageCreationArgs ), UNO_QUERY_THROW );
- }
- catch( const Exception& )
- {
- m_bDocumentReadOnly = sal_True;
- aStorageCreationArgs[1] <<= ElementModes::READ;
- try
- {
- xDocumentStorage.set( xStorageFactory->createInstanceWithArguments( aStorageCreationArgs ), UNO_QUERY_THROW );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- impl_switchToStorage_throw( xDocumentStorage );
- }
- }
- }
- return m_xDocumentStorage.getTyped();
-}
-// -----------------------------------------------------------------------------
-DocumentStorageAccess* ODatabaseModelImpl::getDocumentStorageAccess()
-{
- if ( !m_pStorageAccess )
- {
- m_pStorageAccess = new DocumentStorageAccess( *this );
- m_pStorageAccess->acquire();
- }
- return m_pStorageAccess;
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::modelIsDisposing( const bool _wasInitialized, ResetModelAccess )
-{
- m_xModel = Reference< XModel >();
-
- // Basic libraries and Dialog libraries are a model facet, though held at this impl class.
- // They automatically dispose themself when the model they belong to is being disposed.
- // So, to not be tempted to do anything with them, again, we reset them.
- m_xBasicLibraries.clear();
- m_xDialogLibraries.clear();
-
- m_bDocumentInitialized = _wasInitialized;
-}
-
-// -----------------------------------------------------------------------------
-Reference< XDocumentSubStorageSupplier > ODatabaseModelImpl::getDocumentSubStorageSupplier()
-{
- return getDocumentStorageAccess();
-}
-// -----------------------------------------------------------------------------
-Reference<XStorage> ODatabaseModelImpl::getStorage( const ::rtl::OUString& _sStorageName, sal_Int32 _nMode )
-{
- OSL_ENSURE(_sStorageName.getLength(),"ODatabaseModelImpl::getStorage: Invalid storage name!");
- Reference<XStorage> xStorage;
- TStorages::iterator aFind = m_aStorages.find(_sStorageName);
- if ( aFind == m_aStorages.end() )
- {
- try
- {
- Reference< XStorage > xMyStorage( getOrCreateRootStorage() );
- if ( xMyStorage.is() )
- {
- sal_Int32 nMode = m_bDocumentReadOnly ? ElementModes::READ : _nMode;
- if ( nMode == ElementModes::READ )
- {
- Reference< XNameAccess > xSubStorageNames( xMyStorage, UNO_QUERY );
- if ( xSubStorageNames.is() && !xSubStorageNames->hasByName( _sStorageName ) )
- return xStorage;
- }
-
- xStorage = xMyStorage->openStorageElement( _sStorageName, nMode );
- Reference< XTransactionBroadcaster > xBroad( xStorage, UNO_QUERY );
- if ( xBroad.is() )
- xBroad->addTransactionListener( getDocumentStorageAccess() );
- aFind = m_aStorages.insert( TStorages::value_type( _sStorageName, xStorage ) ).first;
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- if ( aFind != m_aStorages.end() )
- xStorage = aFind->second;
-
- return xStorage;
-}
-// -----------------------------------------------------------------------------
-sal_Bool ODatabaseModelImpl::commitEmbeddedStorage( sal_Bool _bPreventRootCommits )
-{
- if ( _bPreventRootCommits && m_pStorageAccess )
- m_pStorageAccess->suspendCommitPropagation();
-
- sal_Bool bStore = sal_False;
- try
- {
- TStorages::iterator aFind = m_aStorages.find(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("database")));
- if ( aFind != m_aStorages.end() )
- bStore = commitStorageIfWriteable(aFind->second);
- }
- catch(Exception&)
- {
- OSL_ENSURE(0,"Exception Caught: Could not store embedded database!");
- }
-
- if ( _bPreventRootCommits && m_pStorageAccess )
- m_pStorageAccess->resumeCommitPropagation();
-
- return bStore;
-
-}
-
-// -----------------------------------------------------------------------------
-namespace
-{
- bool lcl_storageIsWritable_nothrow( const Reference< XStorage >& _rxStorage )
- {
- if ( !_rxStorage.is() )
- return false;
-
- sal_Int32 nMode = ElementModes::READ;
- try
- {
- Reference< XPropertySet > xStorageProps( _rxStorage, UNO_QUERY_THROW );
- xStorageProps->getPropertyValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenMode" ) ) ) >>= nMode;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return ( nMode & ElementModes::WRITE ) != 0;
- }
-}
-
-// -----------------------------------------------------------------------------
-bool ODatabaseModelImpl::commitStorageIfWriteable( const Reference< XStorage >& _rxStorage ) SAL_THROW(( IOException, WrappedTargetException, RuntimeException ))
-{
- bool bSuccess = false;
- Reference<XTransactedObject> xTrans( _rxStorage, UNO_QUERY );
- if ( xTrans.is() )
- {
- if ( lcl_storageIsWritable_nothrow( _rxStorage ) )
- xTrans->commit();
- bSuccess = true;
- }
- return bSuccess;
-}
-// -----------------------------------------------------------------------------
-bool ODatabaseModelImpl::commitStorageIfWriteable_ignoreErrors( const Reference< XStorage >& _rxStorage ) SAL_THROW(())
-{
- bool bSuccess = false;
- try
- {
- bSuccess = commitStorageIfWriteable( _rxStorage );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return bSuccess;
-}
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::setModified( sal_Bool _bModified )
-{
- if ( isModifyLocked() )
- return;
-
- try
- {
- Reference< XModifiable > xModi( m_xModel.get(), UNO_QUERY );
- if ( xModi.is() )
- xModi->setModified( _bModified );
- else
- m_bModified = _bModified;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-// -----------------------------------------------------------------------------
-Reference<XDataSource> ODatabaseModelImpl::getOrCreateDataSource()
-{
- Reference<XDataSource> xDs = m_xDataSource;
- if ( !xDs.is() )
- {
- xDs = new ODatabaseSource(this);
- m_xDataSource = xDs;
- }
- return xDs;
-}
-// -----------------------------------------------------------------------------
-Reference< XModel> ODatabaseModelImpl::getModel_noCreate() const
-{
- return m_xModel;
-}
-// -----------------------------------------------------------------------------
-Reference< XModel > ODatabaseModelImpl::createNewModel_deliverOwnership( bool _bInitialize )
-{
- Reference< XModel > xModel( m_xModel );
- OSL_PRECOND( !xModel.is(), "ODatabaseModelImpl::createNewModel_deliverOwnership: not to be called if there already is a model!" );
- if ( !xModel.is() )
- {
- xModel = ODatabaseDocument::createDatabaseDocument( this, ODatabaseDocument::FactoryAccess() );
- m_xModel = xModel;
-
- try
- {
- Reference< XSet > xModelCollection;
- if ( m_aContext.createComponent( "com.sun.star.frame.GlobalEventBroadcaster", xModelCollection ) )
- xModelCollection->insert( makeAny( xModel ) );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- if ( _bInitialize )
- {
- try
- {
- Reference< XLoadable > xLoad( xModel, UNO_QUERY_THROW );
- xLoad->initNew();
- }
- catch( RuntimeException& ) { throw; }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
- return xModel;
-}
-// -----------------------------------------------------------------------------
-oslInterlockedCount SAL_CALL ODatabaseModelImpl::acquire()
-{
- return osl_incrementInterlockedCount(&m_refCount);
-}
-// -----------------------------------------------------------------------------
-oslInterlockedCount SAL_CALL ODatabaseModelImpl::release()
-{
- if ( osl_decrementInterlockedCount(&m_refCount) == 0 )
- {
- acquire(); // prevent multiple releases
- dispose();
- m_pDBContext->storeTransientProperties(*this);
- revokeDataSource();
- delete this;
- return 0;
- }
- return m_refCount;
-}
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::commitStorages() SAL_THROW(( IOException, RuntimeException ))
-{
- try
- {
- TStorages::iterator aIter = m_aStorages.begin();
- TStorages::iterator aEnd = m_aStorages.end();
- for (; aIter != aEnd ; ++aIter)
- commitStorageIfWriteable( aIter->second );
- }
- catch(const WrappedTargetException&)
- {
- // WrappedTargetException not allowed to leave
- throw IOException();
- }
-}
-
-// -----------------------------------------------------------------------------
-const AsciiPropertyValue* ODatabaseModelImpl::getDefaultDataSourceSettings()
-{
- static const AsciiPropertyValue aKnownSettings[] =
- {
- // known JDBC settings
- AsciiPropertyValue( "JavaDriverClass", makeAny( ::rtl::OUString() ) ),
- // known settings for file-based drivers
- AsciiPropertyValue( "Extension", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "CharSet", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "HeaderLine", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "FieldDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "," ) ) ) ),
- AsciiPropertyValue( "StringDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "\"" ) ) ) ),
- AsciiPropertyValue( "DecimalDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "." ) ) ) ),
- AsciiPropertyValue( "ThousandDelimiter", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "ShowDeleted", makeAny( (sal_Bool)sal_False ) ),
- // known ODBC settings
- AsciiPropertyValue( "SystemDriverSettings", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "UseCatalog", makeAny( (sal_Bool)sal_False ) ),
- // settings related to auto increment handling
- AsciiPropertyValue( "AutoIncrementCreation", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "AutoRetrievingStatement", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "IsAutoRetrievingEnabled", makeAny( (sal_Bool)sal_False ) ),
- // known Adabas D driver setting
- AsciiPropertyValue( "ShutdownDatabase", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "DataCacheSizeIncrement", makeAny( (sal_Int32)20 ) ),
- AsciiPropertyValue( "DataCacheSize", makeAny( (sal_Int32)20 ) ),
- AsciiPropertyValue( "ControlUser", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "ControlPassword", makeAny( ::rtl::OUString() ) ),
- // known LDAP driver settings
- AsciiPropertyValue( "HostName", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "PortNumber", makeAny( (sal_Int32)389 ) ),
- AsciiPropertyValue( "BaseDN", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "MaxRowCount", makeAny( (sal_Int32)100 ) ),
- // misc known driver settings
- AsciiPropertyValue( "ParameterNameSubstitution", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "AddIndexAppendix", makeAny( (sal_Bool)sal_True ) ),
- // known SDB level settings
- AsciiPropertyValue( "IgnoreDriverPrivileges", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "NoNameLengthLimit", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "AppendTableAliasName", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "GenerateASBeforeCorrelationName", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "ColumnAliasInOrderBy", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "EnableSQL92Check", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "BooleanComparisonMode", makeAny( BooleanComparisonMode::EQUAL_INTEGER ) ),
- AsciiPropertyValue( "TableTypeFilterMode", makeAny( (sal_Int32)3 ) ),
- AsciiPropertyValue( "RespectDriverResultSetType", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "UseSchemaInSelect", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "UseCatalogInSelect", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "EnableOuterJoinEscape", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "PreferDosLikeLineEnds", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "FormsCheckRequiredFields", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "EscapeDateTime", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "IgnoreCurrency", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "TypeInfoSettings", makeAny( Sequence< Any >()) ),
- AsciiPropertyValue( "LocalSocket", makeAny( ::rtl::OUString() ) ),
-
- AsciiPropertyValue( NULL, Any() )
- };
- return aKnownSettings;
-}
-
-// -----------------------------------------------------------------------------
-TContentPtr& ODatabaseModelImpl::getObjectContainer( ObjectType _eType )
-{
- OSL_PRECOND( _eType >= E_FORM && _eType <= E_TABLE, "ODatabaseModelImpl::getObjectContainer: illegal index!" );
- TContentPtr& rContentPtr = m_aContainer[ _eType ];
-
- if ( !rContentPtr.get() )
- {
- rContentPtr = TContentPtr( new ODefinitionContainer_Impl );
- rContentPtr->m_pDataSource = this;
- rContentPtr->m_aProps.aTitle = lcl_getContainerStorageName_throw( _eType );
- }
- return rContentPtr;
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::revokeDataSource() const
-{
- if ( m_pDBContext && m_sDocumentURL.getLength() )
- m_pDBContext->deregisterPrivate( m_sDocumentURL );
-}
-
-// -----------------------------------------------------------------------------
-bool ODatabaseModelImpl::adjustMacroMode_AutoReject()
-{
- return m_aMacroMode.adjustMacroMode( NULL );
-}
-
-// -----------------------------------------------------------------------------
-bool ODatabaseModelImpl::checkMacrosOnLoading()
-{
- ::comphelper::NamedValueCollection aArgs( m_aArgs );
- Reference< XInteractionHandler > xInteraction;
- xInteraction = aArgs.getOrDefault( "InteractionHandler", xInteraction );
- return m_aMacroMode.checkMacrosOnLoading( xInteraction );
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::resetMacroExecutionMode()
-{
- m_aMacroMode = ::sfx2::DocumentMacroMode( *this );
-}
-
-// -----------------------------------------------------------------------------
-Reference< XStorageBasedLibraryContainer > ODatabaseModelImpl::getLibraryContainer( bool _bScript )
-{
- Reference< XStorageBasedLibraryContainer >& rxContainer( _bScript ? m_xBasicLibraries : m_xDialogLibraries );
- if ( rxContainer.is() )
- return rxContainer;
-
- Reference< XStorageBasedDocument > xDocument( getModel_noCreate(), UNO_QUERY_THROW );
- // this is only to be called if there already exists a document model - in fact, it is
- // to be called by the document model only
-
- try
- {
- Reference< XStorageBasedLibraryContainer > (*Factory)( const Reference< XComponentContext >&, const Reference< XStorageBasedDocument >&)
- = _bScript ? &DocumentScriptLibraryContainer::create : &DocumentDialogLibraryContainer::create;
-
- rxContainer.set(
- (*Factory)( m_aContext.getUNOContext(), xDocument ),
- UNO_QUERY_THROW
- );
- }
- catch( const RuntimeException& )
- {
- throw;
- }
- catch( const Exception& )
- {
- throw WrappedTargetRuntimeException(
- ::rtl::OUString(),
- xDocument,
- ::cppu::getCaughtException()
- );
- }
- return rxContainer;
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::storeLibraryContainersTo( const Reference< XStorage >& _rxToRootStorage )
-{
- if ( m_xBasicLibraries.is() )
- m_xBasicLibraries->storeLibrariesToStorage( _rxToRootStorage );
-
- if ( m_xDialogLibraries.is() )
- m_xDialogLibraries->storeLibrariesToStorage( _rxToRootStorage );
-}
-
-// -----------------------------------------------------------------------------
-Reference< XStorage > ODatabaseModelImpl::switchToStorage( const Reference< XStorage >& _rxNewRootStorage )
-{
- if ( !_rxNewRootStorage.is() )
- throw IllegalArgumentException();
-
- return impl_switchToStorage_throw( _rxNewRootStorage );
-}
-
-// -----------------------------------------------------------------------------
-namespace
-{
- void lcl_modifyListening( ::sfx2::IModifiableDocument& _rDocument,
- const Reference< XStorage >& _rxStorage, ::rtl::Reference< ::sfx2::DocumentStorageModifyListener >& _inout_rListener,
- ::vos::IMutex& _rMutex, bool _bListen )
- {
- Reference< XModifiable > xModify( _rxStorage, UNO_QUERY );
- OSL_ENSURE( xModify.is() || !_rxStorage.is(), "lcl_modifyListening: storage can't notify us!" );
-
- if ( xModify.is() && !_bListen && _inout_rListener.is() )
- {
- xModify->removeModifyListener( _inout_rListener.get() );
- }
-
- if ( _inout_rListener.is() )
- {
- _inout_rListener->dispose();
- _inout_rListener = NULL;
- }
-
- if ( xModify.is() && _bListen )
- {
- _inout_rListener = new ::sfx2::DocumentStorageModifyListener( _rDocument, _rMutex );
- xModify->addModifyListener( _inout_rListener.get() );
- }
- }
-}
-
-// -----------------------------------------------------------------------------
-namespace
-{
- static void lcl_rebaseScriptStorage_throw( const Reference< XStorageBasedLibraryContainer >& _rxContainer,
- const Reference< XStorage >& _rxNewRootStorage )
- {
- if ( _rxContainer.is() )
- {
- if ( _rxNewRootStorage.is() )
- _rxContainer->setRootStorage( _rxNewRootStorage );
-// else
- // TODO: what to do here? dispose the container?
- }
- }
-}
-
-// -----------------------------------------------------------------------------
-Reference< XStorage > ODatabaseModelImpl::impl_switchToStorage_throw( const Reference< XStorage >& _rxNewRootStorage )
-{
- // stop listening for modifications at the old storage
- lcl_modifyListening( *this, m_xDocumentStorage.getTyped(), m_pStorageModifyListener, m_aMutexFacade, false );
-
- // set new storage
- m_xDocumentStorage.reset( _rxNewRootStorage, SharedStorage::TakeOwnership );
-
- // start listening for modifications
- lcl_modifyListening( *this, m_xDocumentStorage.getTyped(), m_pStorageModifyListener, m_aMutexFacade, true );
-
- // forward new storage to Basic and Dialog library containers
- lcl_rebaseScriptStorage_throw( m_xBasicLibraries, m_xDocumentStorage.getTyped() );
- lcl_rebaseScriptStorage_throw( m_xDialogLibraries, m_xDocumentStorage.getTyped() );
-
- m_bReadOnly = !lcl_storageIsWritable_nothrow( m_xDocumentStorage.getTyped() );
- // TODO: our data source, if it exists, must broadcast the change of its ReadOnly property
-
- return m_xDocumentStorage.getTyped();
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::switchToURL( const ::rtl::OUString& _rDocumentLocation, const ::rtl::OUString& _rDocumentURL )
-{
- // register at the database context, or change registration
- if ( _rDocumentURL != m_sDocumentURL )
- {
- if ( m_pDBContext )
- {
- if ( m_sDocumentURL.getLength() )
- m_pDBContext->nameChangePrivate( m_sDocumentURL, _rDocumentURL );
- else
- m_pDBContext->registerPrivate( _rDocumentURL, this );
- }
-
- if ( ( m_sName == m_sDocumentURL ) // our name is our old URL
- || ( !m_sName.getLength() ) // we do not have a name, yet (i.e. are not registered at the database context)
- )
- {
- INetURLObject aURL( _rDocumentURL );
- if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )
- {
- m_sName = _rDocumentURL;
- // TODO: our data source must broadcast the change of the Name property
- }
- }
- }
-
- // remember both
- m_sDocFileLocation = _rDocumentLocation.getLength() ? _rDocumentLocation : _rDocumentURL;
- m_sDocumentURL = _rDocumentURL;
-}
-
-// -----------------------------------------------------------------------------
-bool ODatabaseModelImpl::isDatabaseStorage( const Reference< XStorage >& _rxStorage ) const
-{
- TStorages::const_iterator pos = m_aStorages.find( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "database" ) ) );
- if ( ( pos != m_aStorages.end() )
- && ( pos->second == _rxStorage )
- )
- {
- return true;
- }
- return false;
-}
-
-// -----------------------------------------------------------------------------
-::rtl::OUString ODatabaseModelImpl::getObjectContainerStorageName( const ObjectType _eType )
-{
- return lcl_getContainerStorageName_throw( _eType );
-}
-
-// -----------------------------------------------------------------------------
-sal_Int16 ODatabaseModelImpl::getCurrentMacroExecMode() const
-{
- sal_Int16 nCurrentMode = MacroExecMode::NEVER_EXECUTE;
- try
- {
- ::comphelper::NamedValueCollection aArgs( m_aArgs );
- nCurrentMode = aArgs.getOrDefault( "MacroExecutionMode", nCurrentMode );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return nCurrentMode;
-}
-
-// -----------------------------------------------------------------------------
-sal_Bool ODatabaseModelImpl::setCurrentMacroExecMode( sal_uInt16 nMacroMode )
-{
- try
- {
- ::comphelper::NamedValueCollection aArgs( m_aArgs );
- aArgs.put( "MacroExecutionMode", nMacroMode );
- aArgs >>= m_aArgs;
- return sal_True;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- return sal_False;
-}
-
-// -----------------------------------------------------------------------------
-::rtl::OUString ODatabaseModelImpl::getDocumentLocation() const
-{
- // don't return getURL() (or m_sDocumentURL, which is the same). In case we were recovered
- // after a previous crash of OOo, m_sDocFileLocation points to the file which were loaded from,
- // and this is the one we need for security checks.
- return getDocFileLocation();
-}
-
-// -----------------------------------------------------------------------------
-Reference< XStorage > ODatabaseModelImpl::getLastCommitDocumentStorage()
-{
- // we do not support signing the scripting storages, so we're allowed to
- // return <NULL/> here.
- return Reference< XStorage >();
-}
-
-// -----------------------------------------------------------------------------
-sal_Bool ODatabaseModelImpl::documentStorageHasMacros() const
-{
- // does our root storage contain macros?
- if ( ::sfx2::DocumentMacroMode::storageHasMacros( const_cast< ODatabaseModelImpl* >( this )->getOrCreateRootStorage() ) )
- {
- return true;
- }
-
- // do we have forms or reports with macros?
- if ( lcl_hasObjectsWithMacros_nothrow( const_cast< ODatabaseModelImpl& >( *this ), E_FORM )
- || lcl_hasObjectsWithMacros_nothrow( const_cast< ODatabaseModelImpl& >( *this ), E_REPORT )
- )
- {
- const_cast< ODatabaseModelImpl* >( this )->m_bHasAnyObjectWithMacros = true;
- return true;
- }
-
- return false;
-}
-
-// -----------------------------------------------------------------------------
-Reference< XEmbeddedScripts > ODatabaseModelImpl::getEmbeddedDocumentScripts() const
-{
- return Reference< XEmbeddedScripts >( getModel_noCreate(), UNO_QUERY );
-}
-
-// -----------------------------------------------------------------------------
-sal_Int16 ODatabaseModelImpl::getScriptingSignatureState() const
-{
- // no support for signatures at the moment
- return SIGNATURESTATE_NOSIGNATURES;
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::showBrokenSignatureWarning( const Reference< XInteractionHandler >& /*_rxInteraction*/ ) const
-{
- OSL_ENSURE( false, "ODatabaseModelImpl::showBrokenSignatureWarning: signatures can't be broken - we do not support them!" );
-}
-
-// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::storageIsModified()
-{
- setModified( sal_True );
-}
-
-// -----------------------------------------------------------------------------
-ModelDependentComponent::ModelDependentComponent( const ::rtl::Reference< ODatabaseModelImpl >& _model )
- :m_pImpl( _model )
- ,m_aMutex( _model->getSharedMutex() )
-{
-}
-
-// -----------------------------------------------------------------------------
-ModelDependentComponent::~ModelDependentComponent()
-{
-}
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
+/************************************************************************* + * + * 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: ModelImpl.cxx,v $ + * $Revision: 1.25.6.12 $ + * + * 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 "commandcontainer.hxx" +#include "connection.hxx" +#include "core_resource.hrc" +#include "core_resource.hxx" +#include "databasecontext.hxx" +#include "databasedocument.hxx" +#include "datasource.hxx" +#include "dbastrings.hrc" +#include "ModelImpl.hxx" +#include "userinformation.hxx" + +/** === begin UNO includes === **/ +#include <com/sun/star/container/XSet.hpp> +#include <com/sun/star/document/MacroExecMode.hpp> +#include <com/sun/star/embed/XTransactedObject.hpp> +#include <com/sun/star/embed/XTransactionBroadcaster.hpp> +#include <com/sun/star/sdb/BooleanComparisonMode.hpp> +#include <com/sun/star/script/DocumentScriptLibraryContainer.hpp> +#include <com/sun/star/script/DocumentDialogLibraryContainer.hpp> +#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> +#include <com/sun/star/form/XLoadable.hpp> +/** === end UNO includes === **/ + +#include <comphelper/interaction.hxx> +#include <comphelper/mediadescriptor.hxx> +#include <comphelper/namedvaluecollection.hxx> +#include <comphelper/seqstream.hxx> +#include <comphelper/sequence.hxx> +#include <connectivity/dbexception.hxx> +#include <cppuhelper/exc_hlp.hxx> +#include <cppuhelper/typeprovider.hxx> +#include <rtl/digest.h> +#include <sfx2/signaturestate.hxx> +#include <tools/debug.hxx> +#include <tools/diagnose_ex.h> +#include <tools/errcode.hxx> +#include <tools/urlobj.hxx> +#include <unotools/sharedunocomponent.hxx> + +#include <algorithm> + +using namespace ::com::sun::star::document; +using namespace ::com::sun::star::sdbc; +using namespace ::com::sun::star::sdbcx; +using namespace ::com::sun::star::sdb; +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::embed; +using namespace ::com::sun::star::container; +using namespace ::com::sun::star::util; +using namespace ::com::sun::star::io; +using namespace ::com::sun::star::task; +using namespace ::com::sun::star::ucb; +using namespace ::com::sun::star::frame; +using namespace ::com::sun::star::view; +using namespace ::com::sun::star::task; +using namespace ::com::sun::star::reflection; +using namespace ::com::sun::star::script; +using namespace ::cppu; +using namespace ::osl; +using namespace ::vos; +using namespace ::dbtools; +using namespace ::comphelper; +namespace css = ::com::sun::star; + +//........................................................................ +namespace dbaccess +{ +//........................................................................ + +//============================================================ +//= VosMutexFacade +//============================================================ +//------------------------------------------------------------------------ +VosMutexFacade::VosMutexFacade( ::osl::Mutex& _rMutex ) + :m_rMutex( _rMutex ) +{ +} + +//------------------------------------------------------------------------ +void SAL_CALL VosMutexFacade::acquire() +{ + m_rMutex.acquire(); +} + +//------------------------------------------------------------------------ +sal_Bool SAL_CALL VosMutexFacade::tryToAcquire() +{ + return m_rMutex.tryToAcquire(); +} + +//------------------------------------------------------------------------ +void SAL_CALL VosMutexFacade::release() +{ + m_rMutex.release(); +} + +//============================================================ +//= DocumentStorageAccess +//============================================================ +DBG_NAME( DocumentStorageAccess ) +class DocumentStorageAccess : public ::cppu::WeakImplHelper2< XDocumentSubStorageSupplier + , XTransactionListener > +{ + typedef ::std::map< ::rtl::OUString, Reference< XStorage > > NamedStorages; + + ::osl::Mutex m_aMutex; + /// all sub storages which we ever gave to the outer world + NamedStorages m_aExposedStorages; + ODatabaseModelImpl* m_pModelImplementation; + bool m_bPropagateCommitToRoot; + +public: + DocumentStorageAccess( ODatabaseModelImpl& _rModelImplementation ) + :m_pModelImplementation( &_rModelImplementation ) + ,m_bPropagateCommitToRoot( true ) + { + DBG_CTOR( DocumentStorageAccess, NULL ); + } + +protected: + ~DocumentStorageAccess() + { + DBG_DTOR( DocumentStorageAccess, NULL ); + } + +public: + void dispose(); + + void suspendCommitPropagation() + { + DBG_ASSERT( m_bPropagateCommitToRoot, "DocumentStorageAccess:: suspendCommitPropagation: already suspended" ); + m_bPropagateCommitToRoot = false; + } + void resumeCommitPropagation() + { + DBG_ASSERT( !m_bPropagateCommitToRoot, "DocumentStorageAccess:: suspendCommitPropagation: already suspended" ); + m_bPropagateCommitToRoot = true; + } + + // XDocumentSubStorageSupplier + virtual Reference< XStorage > SAL_CALL getDocumentSubStorage( const ::rtl::OUString& aStorageName, ::sal_Int32 nMode ) throw (RuntimeException); + virtual Sequence< ::rtl::OUString > SAL_CALL getDocumentSubStoragesNames( ) throw (IOException, RuntimeException); + + // XTransactionListener + virtual void SAL_CALL preCommit( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL commited( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL preRevert( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL reverted( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException); + + // XEventListener + virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException); +}; + +//-------------------------------------------------------------------------- +void DocumentStorageAccess::dispose() +{ + ::osl::MutexGuard aGuard( m_aMutex ); + + for ( NamedStorages::iterator loop = m_aExposedStorages.begin(); + loop != m_aExposedStorages.end(); + ++loop + ) + { + try + { + Reference< XTransactionBroadcaster > xBroadcaster( loop->second, UNO_QUERY ); + if ( xBroadcaster.is() ) + xBroadcaster->removeTransactionListener( this ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + } + + m_aExposedStorages.clear(); + + m_pModelImplementation = NULL; +} + +//-------------------------------------------------------------------------- +Reference< XStorage > SAL_CALL DocumentStorageAccess::getDocumentSubStorage( const ::rtl::OUString& aStorageName, ::sal_Int32 nMode ) throw (RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + NamedStorages::iterator pos = m_aExposedStorages.find( aStorageName ); + if ( pos == m_aExposedStorages.end() ) + { + Reference< XStorage > xResult = m_pModelImplementation->getStorage( aStorageName, nMode ); + Reference< XTransactionBroadcaster > xBroadcaster( xResult, UNO_QUERY ); + if ( xBroadcaster.is() ) + xBroadcaster->addTransactionListener( this ); + + pos = m_aExposedStorages.insert( NamedStorages::value_type( aStorageName, xResult ) ).first; + } + + return pos->second; +} + +//-------------------------------------------------------------------------- +Sequence< ::rtl::OUString > SAL_CALL DocumentStorageAccess::getDocumentSubStoragesNames( ) throw (IOException, RuntimeException) +{ + Reference< XStorage > xRootStor( m_pModelImplementation->getRootStorage() ); + if ( !xRootStor.is() ) + return Sequence< ::rtl::OUString >(); + + ::std::vector< ::rtl::OUString > aNames; + + Reference< XNameAccess > xNames( xRootStor, UNO_QUERY_THROW ); + Sequence< ::rtl::OUString > aElementNames( xNames->getElementNames() ); + for ( sal_Int32 i=0; i<aElementNames.getLength(); ++i ) + { + if ( xRootStor->isStorageElement( aElementNames[i] ) ) + aNames.push_back( aElementNames[i] ); + } + return aNames.empty() + ? Sequence< ::rtl::OUString >() + : Sequence< ::rtl::OUString >( &aNames[0], aNames.size() ); +} + +//-------------------------------------------------------------------------- +void SAL_CALL DocumentStorageAccess::preCommit( const css::lang::EventObject& /*aEvent*/ ) throw (Exception, RuntimeException) +{ + // not interested in +} + +//-------------------------------------------------------------------------- +void SAL_CALL DocumentStorageAccess::commited( const css::lang::EventObject& aEvent ) throw (RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + + if ( m_pModelImplementation ) + m_pModelImplementation->setModified( sal_True ); + + if ( m_pModelImplementation && m_bPropagateCommitToRoot ) + { + Reference< XStorage > xStorage( aEvent.Source, UNO_QUERY ); + if ( m_pModelImplementation->isDatabaseStorage( xStorage ) ) + { + m_pModelImplementation->commitRootStorage(); + } + } +} + +//-------------------------------------------------------------------------- +void SAL_CALL DocumentStorageAccess::preRevert( const css::lang::EventObject& /*aEvent*/ ) throw (Exception, RuntimeException) +{ + // not interested in +} + +//-------------------------------------------------------------------------- +void SAL_CALL DocumentStorageAccess::reverted( const css::lang::EventObject& /*aEvent*/ ) throw (RuntimeException) +{ + // not interested in +} + +//-------------------------------------------------------------------------- +void SAL_CALL DocumentStorageAccess::disposing( const css::lang::EventObject& Source ) throw ( RuntimeException ) +{ + ODatabaseModelImpl* pImpl = m_pModelImplementation; + if ( pImpl ) + pImpl->disposing( Source ); + + for ( NamedStorages::iterator find = m_aExposedStorages.begin(); + find != m_aExposedStorages.end(); + ++find + ) + if ( find->second == Source.Source ) + { + m_aExposedStorages.erase( find ); + break; + } +} + +//============================================================ +//= ODatabaseModelImpl +//============================================================ +DBG_NAME(ODatabaseModelImpl) +//-------------------------------------------------------------------------- +ODatabaseModelImpl::ODatabaseModelImpl( const Reference< XMultiServiceFactory >& _rxFactory, ODatabaseContext& _rDBContext ) + :m_xModel() + ,m_xDataSource() + ,m_pStorageAccess( NULL ) + ,m_aMutex() + ,m_aMutexFacade( m_aMutex ) + ,m_aContainer(4) + ,m_aStorages() + ,m_aMacroMode( *this ) + ,m_nImposedMacroExecMode( MacroExecMode::NEVER_EXECUTE ) + ,m_pDBContext( &_rDBContext ) + ,m_refCount(0) + ,m_bHasAnyObjectWithMacros( false ) + ,m_bModificationLock( false ) + ,m_bDocumentInitialized( false ) + ,m_aContext( _rxFactory ) + ,m_nLoginTimeout(0) + ,m_bReadOnly(sal_False) + ,m_bPasswordRequired(sal_False) + ,m_bSuppressVersionColumns(sal_True) + ,m_bModified(sal_False) + ,m_bDocumentReadOnly(sal_False) + ,m_bDisposingSubStorages( sal_False ) + ,m_pSharedConnectionManager(NULL) + ,m_nControllerLockCount(0) +{ + // some kind of default + DBG_CTOR(ODatabaseModelImpl,NULL); + m_sConnectURL = ::rtl::OUString::createFromAscii("jdbc:"); + m_aTableFilter.realloc(1); + m_aTableFilter[0] = ::rtl::OUString::createFromAscii("%"); + impl_construct_nothrow(); +} + +//-------------------------------------------------------------------------- +ODatabaseModelImpl::ODatabaseModelImpl( + const ::rtl::OUString& _rRegistrationName, + const Reference< XMultiServiceFactory >& _rxFactory, + ODatabaseContext& _rDBContext + ) + :m_xModel() + ,m_xDataSource() + ,m_pStorageAccess( NULL ) + ,m_aMutex() + ,m_aMutexFacade( m_aMutex ) + ,m_aContainer(4) + ,m_aStorages() + ,m_aMacroMode( *this ) + ,m_nImposedMacroExecMode( MacroExecMode::NEVER_EXECUTE ) + ,m_pDBContext( &_rDBContext ) + ,m_refCount(0) + ,m_bHasAnyObjectWithMacros( false ) + ,m_bModificationLock( false ) + ,m_bDocumentInitialized( false ) + ,m_aContext( _rxFactory ) + ,m_sName(_rRegistrationName) + ,m_nLoginTimeout(0) + ,m_bReadOnly(sal_False) + ,m_bPasswordRequired(sal_False) + ,m_bSuppressVersionColumns(sal_True) + ,m_bModified(sal_False) + ,m_bDocumentReadOnly(sal_False) + ,m_bDisposingSubStorages( sal_False ) + ,m_pSharedConnectionManager(NULL) + ,m_nControllerLockCount(0) +{ + DBG_CTOR(ODatabaseModelImpl,NULL); + impl_construct_nothrow(); +} + +//-------------------------------------------------------------------------- +ODatabaseModelImpl::~ODatabaseModelImpl() +{ + DBG_DTOR(ODatabaseModelImpl,NULL); +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::impl_construct_nothrow() +{ + // create the property bag to hold the settings (also known as "Info" property) + try + { + // the set of property value types in the bag is limited: + Sequence< Type > aAllowedTypes(6); + Type* pAllowedType = aAllowedTypes.getArray(); + *pAllowedType++ = ::getCppuType( static_cast< sal_Bool* >( NULL ) ); + *pAllowedType++ = ::getCppuType( static_cast< double* >( NULL ) ); + *pAllowedType++ = ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) ); + *pAllowedType++ = ::getCppuType( static_cast< sal_Int32* >( NULL ) ); + *pAllowedType++ = ::getCppuType( static_cast< sal_Int16* >( NULL ) ); + *pAllowedType++ = ::getCppuType( static_cast< Sequence< Any >* >( NULL ) ); + + Sequence< Any > aInitArgs( 2 ); + aInitArgs[0] <<= NamedValue( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AutomaticAddition" ) ), + makeAny( (sal_Bool)sal_True ) + ); + aInitArgs[1] <<= NamedValue( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AllowedTypes" ) ), + makeAny( aAllowedTypes ) + ); + + m_xSettings.set( m_aContext.createComponentWithArguments( "com.sun.star.beans.PropertyBag", aInitArgs ), UNO_QUERY_THROW ); + + // insert the default settings + Reference< XPropertyContainer > xContainer( m_xSettings, UNO_QUERY_THROW ); + const AsciiPropertyValue* pSettings = getDefaultDataSourceSettings(); + for ( ; pSettings->AsciiName; ++pSettings ) + { + xContainer->addProperty( + ::rtl::OUString::createFromAscii( pSettings->AsciiName ), + PropertyAttribute::BOUND | PropertyAttribute::MAYBEDEFAULT, + pSettings->DefaultValue + ); + } + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } +} + +// ----------------------------------------------------------------------------- +namespace +{ + // ......................................................................... + ::rtl::OUString lcl_getContainerStorageName_throw( ODatabaseModelImpl::ObjectType _eType ) + { + const sal_Char* pAsciiName( NULL ); + switch ( _eType ) + { + case ODatabaseModelImpl::E_FORM: pAsciiName = "forms"; break; + case ODatabaseModelImpl::E_REPORT: pAsciiName = "reports"; break; + case ODatabaseModelImpl::E_QUERY: pAsciiName = "queries"; break; + case ODatabaseModelImpl::E_TABLE: pAsciiName = "tables"; break; + default: + throw RuntimeException(); + } + return ::rtl::OUString::createFromAscii( pAsciiName ); + } + + // ......................................................................... + bool lcl_hasObjectWithMacros_throw( const ODefinitionContainer_Impl& _rObjectDefinitions, const Reference< XStorage >& _rxContainerStorage ) + { + bool bSomeDocHasMacros = false; + + for ( ODefinitionContainer_Impl::const_iterator object = _rObjectDefinitions.begin(); + ( object != _rObjectDefinitions.end() ) && !bSomeDocHasMacros; + ++object + ) + { +#if OSL_DEBUG_LEVEL > 0 + const ::rtl::OUString& rName( object->first ); (void)rName; +#endif + + const TContentPtr& rDefinition( object->second ); + const ::rtl::OUString& rPersistentName( rDefinition->m_aProps.sPersistentName ); + + if ( !rPersistentName.getLength() ) + { // it's a logical sub folder used to organize the real objects + const ODefinitionContainer_Impl& rSubFoldersObjectDefinitions( dynamic_cast< const ODefinitionContainer_Impl& >( *rDefinition.get() ) ); + bSomeDocHasMacros = lcl_hasObjectWithMacros_throw( rSubFoldersObjectDefinitions, _rxContainerStorage ); + continue; + } + + bSomeDocHasMacros = ODatabaseModelImpl::objectHasMacros( _rxContainerStorage, rPersistentName ); + } + return bSomeDocHasMacros; + } + + // ......................................................................... + bool lcl_hasObjectsWithMacros_nothrow( ODatabaseModelImpl& _rModel, const ODatabaseModelImpl::ObjectType _eType ) + { + bool bSomeDocHasMacros = false; + + const OContentHelper_Impl& rContainerData( *_rModel.getObjectContainer( _eType ).get() ); + const ODefinitionContainer_Impl& rObjectDefinitions = dynamic_cast< const ODefinitionContainer_Impl& >( rContainerData ); + + try + { + Reference< XStorage > xContainerStorage( _rModel.getStorage( + _rModel.getObjectContainerStorageName( _eType ), ElementModes::READWRITE ) ); + // note the READWRITE here: If the storage already existed before, then the OpenMode will + // be ignored, anyway. + // If the storage did not yet exist, then it will be created. If the database document + // is read-only, the OpenMode will be automatically downgraded to READ. Otherwise, + // the storage will in fact be created as READWRITE. While this is not strictly necessary + // for this particular use case here, it is required since the storage is *cached*, and + // later use cases will need the READWRITE mode. + + if ( xContainerStorage.is() ) + bSomeDocHasMacros = lcl_hasObjectWithMacros_throw( rObjectDefinitions, xContainerStorage ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + // be on the safe side: If we can't reliably determine whether there are macros, + // assume there actually are. Better this way, than the other way round. + bSomeDocHasMacros = true; + } + + return bSomeDocHasMacros; + } +} + +// ----------------------------------------------------------------------------- +bool ODatabaseModelImpl::objectHasMacros( const Reference< XStorage >& _rxContainerStorage, const ::rtl::OUString& _rPersistentName ) +{ + OSL_PRECOND( _rxContainerStorage.is(), "ODatabaseModelImpl::objectHasMacros: this will crash!" ); + + bool bHasMacros = true; + try + { + if ( !_rxContainerStorage->hasByName( _rPersistentName ) ) + return false; + + Reference< XStorage > xObjectStor( _rxContainerStorage->openStorageElement( + _rPersistentName, ElementModes::READ ) ); + + bHasMacros = ::sfx2::DocumentMacroMode::storageHasMacros( xObjectStor ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + return bHasMacros; +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::reset() +{ + m_bReadOnly = sal_False; + ::std::vector< TContentPtr > aEmptyContainers( 4 ); + m_aContainer.swap( aEmptyContainers ); + + if ( m_pStorageAccess ) + { + m_pStorageAccess->dispose(); + m_pStorageAccess->release(); + m_pStorageAccess = NULL; + } +} +// ----------------------------------------------------------------------------- +void SAL_CALL ODatabaseModelImpl::disposing( const ::com::sun::star::lang::EventObject& Source ) throw(RuntimeException) +{ + Reference<XConnection> xCon(Source.Source,UNO_QUERY); + if ( xCon.is() ) + { + bool bStore = false; + OWeakConnectionArray::iterator aEnd = m_aConnections.end(); + for (OWeakConnectionArray::iterator i = m_aConnections.begin(); aEnd != i; ++i) + { + if ( xCon == i->get() ) + { + *i = OWeakConnection(); + bStore = true; + break; + } + } + + if ( bStore ) + commitRootStorage(); + } + else // storage + { + if ( !m_bDisposingSubStorages ) + { + Reference<XStorage> xStorage(Source.Source,UNO_QUERY); + TStorages::iterator aFind = ::std::find_if(m_aStorages.begin(),m_aStorages.end(), + ::std::compose1(::std::bind2nd(::std::equal_to<Reference<XStorage> >(),xStorage),::std::select2nd<TStorages::value_type>())); + if ( aFind != m_aStorages.end() ) + m_aStorages.erase(aFind); + } + } +} +//------------------------------------------------------------------------------ +void ODatabaseModelImpl::clearConnections() +{ + OWeakConnectionArray aConnections; + aConnections.swap( m_aConnections ); + + Reference< XConnection > xConn; + for ( OWeakConnectionArray::iterator i = aConnections.begin(); aConnections.end() != i; ++i ) + { + xConn = *i; + if ( xConn.is() ) + { + try + { + xConn->close(); + } + catch(const Exception&) + { + DBG_UNHANDLED_EXCEPTION(); + } + } + } + + m_pSharedConnectionManager = NULL; + m_xSharedConnectionManager = NULL; +} +//------------------------------------------------------------------------------ +void ODatabaseModelImpl::dispose() +{ + // dispose the data source and the model + try + { + Reference< XDataSource > xDS( m_xDataSource ); + ::comphelper::disposeComponent( xDS ); + + Reference< XModel > xModel( m_xModel ); + ::comphelper::disposeComponent( xModel ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + m_xDataSource = WeakReference<XDataSource>(); + m_xModel = WeakReference< XModel >(); + + ::std::vector<TContentPtr>::iterator aIter = m_aContainer.begin(); + ::std::vector<TContentPtr>::iterator aEnd = m_aContainer.end(); + for (;aIter != aEnd ; ++aIter) + { + if ( aIter->get() ) + (*aIter)->m_pDataSource = NULL; + } + m_aContainer.clear(); + + clearConnections(); + + m_xNumberFormatsSupplier = NULL; + + try + { + sal_Bool bStore = commitEmbeddedStorage(); + disposeStorages(); + if ( bStore ) + commitRootStorage(); + + impl_switchToStorage_throw( NULL ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + + if ( m_pStorageAccess ) + { + m_pStorageAccess->dispose(); + m_pStorageAccess->release(); + m_pStorageAccess = NULL; + } +} +// ----------------------------------------------------------------------------- +const Reference< XNumberFormatsSupplier > & ODatabaseModelImpl::getNumberFormatsSupplier() +{ + if (!m_xNumberFormatsSupplier.is()) + { + // the arguments : the locale of the current user + UserInformation aUserInfo; + Sequence< Any > aArguments(1); + aArguments.getArray()[0] <<= aUserInfo.getUserLanguage(); + + m_xNumberFormatsSupplier.set( + m_aContext.createComponentWithArguments( "com.sun.star.util.NumberFormatsSupplier", aArguments ), UNO_QUERY_THROW ); + DBG_ASSERT(m_xNumberFormatsSupplier.is(), "ODatabaseModelImpl::getNumberFormatsSupplier : could not instantiate the formats supplier !"); + } + return m_xNumberFormatsSupplier; +} +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::attachResource( const ::rtl::OUString& _rURL, const Sequence< PropertyValue >& _rArgs ) +{ + ::comphelper::NamedValueCollection aMediaDescriptor( _rArgs ); + + ::rtl::OUString sDocumentLocation( aMediaDescriptor.getOrDefault( "SalvagedFile", _rURL ) ); + if ( !sDocumentLocation.getLength() ) + // this indicates "the document is being recovered, but _rURL already is the real document URL, + // not the temporary document location" + sDocumentLocation = _rURL; + + if ( aMediaDescriptor.has( "SalvagedFile" ) ) + aMediaDescriptor.remove( "SalvagedFile" ); + + m_aArgs = stripLoadArguments( aMediaDescriptor ); + + switchToURL( sDocumentLocation, _rURL ); +} + +// ----------------------------------------------------------------------------- +Sequence< PropertyValue > ODatabaseModelImpl::stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments ) +{ + OSL_ENSURE( !_rArguments.has( "Model" ), "ODatabaseModelImpl::stripLoadArguments: this is suspicious (1)!" ); + OSL_ENSURE( !_rArguments.has( "ViewName" ), "ODatabaseModelImpl::stripLoadArguments: this is suspicious (2)!" ); + + ::comphelper::NamedValueCollection aMutableArgs( _rArguments ); + aMutableArgs.remove( "Model" ); + aMutableArgs.remove( "ViewName" ); + return aMutableArgs.getPropertyValues(); +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::disposeStorages() SAL_THROW(()) +{ + m_bDisposingSubStorages = sal_True; + + TStorages::iterator aEnd = m_aStorages.end(); + for ( TStorages::iterator aIter = m_aStorages.begin(); + aIter != aEnd ; + ++aIter + ) + { + try + { + ::comphelper::disposeComponent( aIter->second ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + } + m_aStorages.clear(); + + m_bDisposingSubStorages = sal_False; +} +// ----------------------------------------------------------------------------- +Reference< XSingleServiceFactory > ODatabaseModelImpl::createStorageFactory() const +{ + return Reference< XSingleServiceFactory >( m_aContext.createComponent( "com.sun.star.embed.StorageFactory" ), UNO_QUERY_THROW ); +} +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::commitRootStorage() +{ + Reference< XStorage > xStorage( getOrCreateRootStorage() ); +#if OSL_DEBUG_LEVEL > 0 + bool bSuccess = +#endif + commitStorageIfWriteable_ignoreErrors( xStorage ); + OSL_ENSURE( bSuccess || !xStorage.is(), + "ODatabaseModelImpl::commitRootStorage: could commit the storage!" ); +} +// ----------------------------------------------------------------------------- +Reference< XStorage > ODatabaseModelImpl::getOrCreateRootStorage() +{ + if ( !m_xDocumentStorage.is() ) + { + Reference< XSingleServiceFactory> xStorageFactory = createStorageFactory(); + if ( xStorageFactory.is() ) + { + Any aSource; + ::comphelper::NamedValueCollection aArgs( m_aArgs ); + + aSource = aArgs.get( "Stream" ); + if ( !aSource.hasValue() ) + aSource = aArgs.get( "InputStream" ); + if ( !aSource.hasValue() && m_sDocFileLocation.getLength() ) + aSource <<= m_sDocFileLocation; + // TODO: shouldn't we also check URL? + + OSL_ENSURE( aSource.hasValue(), "ODatabaseModelImpl::getOrCreateRootStorage: no source to create the storage from!" ); + + if ( aSource.hasValue() ) + { + Sequence< Any > aStorageCreationArgs(2); + aStorageCreationArgs[0] = aSource; + aStorageCreationArgs[1] <<= ElementModes::READWRITE; + + Reference< XStorage > xDocumentStorage; + try + { + xDocumentStorage.set( xStorageFactory->createInstanceWithArguments( aStorageCreationArgs ), UNO_QUERY_THROW ); + } + catch( const Exception& ) + { + m_bDocumentReadOnly = sal_True; + aStorageCreationArgs[1] <<= ElementModes::READ; + try + { + xDocumentStorage.set( xStorageFactory->createInstanceWithArguments( aStorageCreationArgs ), UNO_QUERY_THROW ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + } + + impl_switchToStorage_throw( xDocumentStorage ); + } + } + } + return m_xDocumentStorage.getTyped(); +} +// ----------------------------------------------------------------------------- +DocumentStorageAccess* ODatabaseModelImpl::getDocumentStorageAccess() +{ + if ( !m_pStorageAccess ) + { + m_pStorageAccess = new DocumentStorageAccess( *this ); + m_pStorageAccess->acquire(); + } + return m_pStorageAccess; +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::modelIsDisposing( const bool _wasInitialized, ResetModelAccess ) +{ + m_xModel = Reference< XModel >(); + + // Basic libraries and Dialog libraries are a model facet, though held at this impl class. + // They automatically dispose themself when the model they belong to is being disposed. + // So, to not be tempted to do anything with them, again, we reset them. + m_xBasicLibraries.clear(); + m_xDialogLibraries.clear(); + + m_bDocumentInitialized = _wasInitialized; +} + +// ----------------------------------------------------------------------------- +Reference< XDocumentSubStorageSupplier > ODatabaseModelImpl::getDocumentSubStorageSupplier() +{ + return getDocumentStorageAccess(); +} +// ----------------------------------------------------------------------------- +Reference<XStorage> ODatabaseModelImpl::getStorage( const ::rtl::OUString& _sStorageName, sal_Int32 _nMode ) +{ + OSL_ENSURE(_sStorageName.getLength(),"ODatabaseModelImpl::getStorage: Invalid storage name!"); + Reference<XStorage> xStorage; + TStorages::iterator aFind = m_aStorages.find(_sStorageName); + if ( aFind == m_aStorages.end() ) + { + try + { + Reference< XStorage > xMyStorage( getOrCreateRootStorage() ); + if ( xMyStorage.is() ) + { + sal_Int32 nMode = m_bDocumentReadOnly ? ElementModes::READ : _nMode; + if ( nMode == ElementModes::READ ) + { + Reference< XNameAccess > xSubStorageNames( xMyStorage, UNO_QUERY ); + if ( xSubStorageNames.is() && !xSubStorageNames->hasByName( _sStorageName ) ) + return xStorage; + } + + xStorage = xMyStorage->openStorageElement( _sStorageName, nMode ); + Reference< XTransactionBroadcaster > xBroad( xStorage, UNO_QUERY ); + if ( xBroad.is() ) + xBroad->addTransactionListener( getDocumentStorageAccess() ); + aFind = m_aStorages.insert( TStorages::value_type( _sStorageName, xStorage ) ).first; + } + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + } + + if ( aFind != m_aStorages.end() ) + xStorage = aFind->second; + + return xStorage; +} +// ----------------------------------------------------------------------------- +sal_Bool ODatabaseModelImpl::commitEmbeddedStorage( sal_Bool _bPreventRootCommits ) +{ + if ( _bPreventRootCommits && m_pStorageAccess ) + m_pStorageAccess->suspendCommitPropagation(); + + sal_Bool bStore = sal_False; + try + { + TStorages::iterator aFind = m_aStorages.find(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("database"))); + if ( aFind != m_aStorages.end() ) + bStore = commitStorageIfWriteable(aFind->second); + } + catch(Exception&) + { + OSL_ENSURE(0,"Exception Caught: Could not store embedded database!"); + } + + if ( _bPreventRootCommits && m_pStorageAccess ) + m_pStorageAccess->resumeCommitPropagation(); + + return bStore; + +} + +// ----------------------------------------------------------------------------- +namespace +{ + bool lcl_storageIsWritable_nothrow( const Reference< XStorage >& _rxStorage ) + { + if ( !_rxStorage.is() ) + return false; + + sal_Int32 nMode = ElementModes::READ; + try + { + Reference< XPropertySet > xStorageProps( _rxStorage, UNO_QUERY_THROW ); + xStorageProps->getPropertyValue( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenMode" ) ) ) >>= nMode; + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + return ( nMode & ElementModes::WRITE ) != 0; + } +} + +// ----------------------------------------------------------------------------- +bool ODatabaseModelImpl::commitStorageIfWriteable( const Reference< XStorage >& _rxStorage ) SAL_THROW(( IOException, WrappedTargetException, RuntimeException )) +{ + bool bSuccess = false; + Reference<XTransactedObject> xTrans( _rxStorage, UNO_QUERY ); + if ( xTrans.is() ) + { + if ( lcl_storageIsWritable_nothrow( _rxStorage ) ) + xTrans->commit(); + bSuccess = true; + } + return bSuccess; +} +// ----------------------------------------------------------------------------- +bool ODatabaseModelImpl::commitStorageIfWriteable_ignoreErrors( const Reference< XStorage >& _rxStorage ) SAL_THROW(()) +{ + bool bSuccess = false; + try + { + bSuccess = commitStorageIfWriteable( _rxStorage ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + return bSuccess; +} +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::setModified( sal_Bool _bModified ) +{ + if ( isModifyLocked() ) + return; + + try + { + Reference< XModifiable > xModi( m_xModel.get(), UNO_QUERY ); + if ( xModi.is() ) + xModi->setModified( _bModified ); + else + m_bModified = _bModified; + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } +} + +// ----------------------------------------------------------------------------- +Reference<XDataSource> ODatabaseModelImpl::getOrCreateDataSource() +{ + Reference<XDataSource> xDs = m_xDataSource; + if ( !xDs.is() ) + { + xDs = new ODatabaseSource(this); + m_xDataSource = xDs; + } + return xDs; +} +// ----------------------------------------------------------------------------- +Reference< XModel> ODatabaseModelImpl::getModel_noCreate() const +{ + return m_xModel; +} +// ----------------------------------------------------------------------------- +Reference< XModel > ODatabaseModelImpl::createNewModel_deliverOwnership( bool _bInitialize ) +{ + Reference< XModel > xModel( m_xModel ); + OSL_PRECOND( !xModel.is(), "ODatabaseModelImpl::createNewModel_deliverOwnership: not to be called if there already is a model!" ); + if ( !xModel.is() ) + { + xModel = ODatabaseDocument::createDatabaseDocument( this, ODatabaseDocument::FactoryAccess() ); + m_xModel = xModel; + + try + { + Reference< XSet > xModelCollection; + if ( m_aContext.createComponent( "com.sun.star.frame.GlobalEventBroadcaster", xModelCollection ) ) + xModelCollection->insert( makeAny( xModel ) ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + + if ( _bInitialize ) + { + try + { + Reference< XLoadable > xLoad( xModel, UNO_QUERY_THROW ); + xLoad->initNew(); + } + catch( RuntimeException& ) { throw; } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + } + } + return xModel; +} +// ----------------------------------------------------------------------------- +oslInterlockedCount SAL_CALL ODatabaseModelImpl::acquire() +{ + return osl_incrementInterlockedCount(&m_refCount); +} +// ----------------------------------------------------------------------------- +oslInterlockedCount SAL_CALL ODatabaseModelImpl::release() +{ + if ( osl_decrementInterlockedCount(&m_refCount) == 0 ) + { + acquire(); // prevent multiple releases + dispose(); + m_pDBContext->storeTransientProperties(*this); + revokeDataSource(); + delete this; + return 0; + } + return m_refCount; +} +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::commitStorages() SAL_THROW(( IOException, RuntimeException )) +{ + try + { + TStorages::iterator aIter = m_aStorages.begin(); + TStorages::iterator aEnd = m_aStorages.end(); + for (; aIter != aEnd ; ++aIter) + commitStorageIfWriteable( aIter->second ); + } + catch(const WrappedTargetException&) + { + // WrappedTargetException not allowed to leave + throw IOException(); + } +} + +// ----------------------------------------------------------------------------- +const AsciiPropertyValue* ODatabaseModelImpl::getDefaultDataSourceSettings() +{ + static const AsciiPropertyValue aKnownSettings[] = + { + // known JDBC settings + AsciiPropertyValue( "JavaDriverClass", makeAny( ::rtl::OUString() ) ), + // known settings for file-based drivers + AsciiPropertyValue( "Extension", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "CharSet", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "HeaderLine", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "FieldDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "," ) ) ) ), + AsciiPropertyValue( "StringDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "\"" ) ) ) ), + AsciiPropertyValue( "DecimalDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "." ) ) ) ), + AsciiPropertyValue( "ThousandDelimiter", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "ShowDeleted", makeAny( (sal_Bool)sal_False ) ), + // known ODBC settings + AsciiPropertyValue( "SystemDriverSettings", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "UseCatalog", makeAny( (sal_Bool)sal_False ) ), + // settings related to auto increment handling + AsciiPropertyValue( "AutoIncrementCreation", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "AutoRetrievingStatement", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "IsAutoRetrievingEnabled", makeAny( (sal_Bool)sal_False ) ), + // known Adabas D driver setting + AsciiPropertyValue( "ShutdownDatabase", makeAny( (sal_Bool)sal_False ) ), + AsciiPropertyValue( "DataCacheSizeIncrement", makeAny( (sal_Int32)20 ) ), + AsciiPropertyValue( "DataCacheSize", makeAny( (sal_Int32)20 ) ), + AsciiPropertyValue( "ControlUser", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "ControlPassword", makeAny( ::rtl::OUString() ) ), + // known LDAP driver settings + AsciiPropertyValue( "HostName", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "PortNumber", makeAny( (sal_Int32)389 ) ), + AsciiPropertyValue( "BaseDN", makeAny( ::rtl::OUString() ) ), + AsciiPropertyValue( "MaxRowCount", makeAny( (sal_Int32)100 ) ), + // misc known driver settings + AsciiPropertyValue( "ParameterNameSubstitution", makeAny( (sal_Bool)sal_False ) ), + AsciiPropertyValue( "AddIndexAppendix", makeAny( (sal_Bool)sal_True ) ), + // known SDB level settings + AsciiPropertyValue( "IgnoreDriverPrivileges", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "NoNameLengthLimit", makeAny( (sal_Bool)sal_False ) ), + AsciiPropertyValue( "AppendTableAliasName", makeAny( (sal_Bool)sal_False ) ), + AsciiPropertyValue( "GenerateASBeforeCorrelationName", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "ColumnAliasInOrderBy", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "EnableSQL92Check", makeAny( (sal_Bool)sal_False ) ), + AsciiPropertyValue( "BooleanComparisonMode", makeAny( BooleanComparisonMode::EQUAL_INTEGER ) ), + AsciiPropertyValue( "TableTypeFilterMode", makeAny( (sal_Int32)3 ) ), + AsciiPropertyValue( "RespectDriverResultSetType", makeAny( (sal_Bool)sal_False ) ), + AsciiPropertyValue( "UseSchemaInSelect", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "UseCatalogInSelect", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "EnableOuterJoinEscape", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "PreferDosLikeLineEnds", makeAny( (sal_Bool)sal_False ) ), + AsciiPropertyValue( "FormsCheckRequiredFields", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "EscapeDateTime", makeAny( (sal_Bool)sal_True ) ), + AsciiPropertyValue( "IgnoreCurrency", makeAny( (sal_Bool)sal_False ) ), + AsciiPropertyValue( "TypeInfoSettings", makeAny( Sequence< Any >()) ), + AsciiPropertyValue( "LocalSocket", makeAny( ::rtl::OUString() ) ), + + AsciiPropertyValue( NULL, Any() ) + }; + return aKnownSettings; +} + +// ----------------------------------------------------------------------------- +TContentPtr& ODatabaseModelImpl::getObjectContainer( ObjectType _eType ) +{ + OSL_PRECOND( _eType >= E_FORM && _eType <= E_TABLE, "ODatabaseModelImpl::getObjectContainer: illegal index!" ); + TContentPtr& rContentPtr = m_aContainer[ _eType ]; + + if ( !rContentPtr.get() ) + { + rContentPtr = TContentPtr( new ODefinitionContainer_Impl ); + rContentPtr->m_pDataSource = this; + rContentPtr->m_aProps.aTitle = lcl_getContainerStorageName_throw( _eType ); + } + return rContentPtr; +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::revokeDataSource() const +{ + if ( m_pDBContext && m_sDocumentURL.getLength() ) + m_pDBContext->deregisterPrivate( m_sDocumentURL ); +} + +// ----------------------------------------------------------------------------- +bool ODatabaseModelImpl::adjustMacroMode_AutoReject() +{ + return m_aMacroMode.adjustMacroMode( NULL ); +} + +// ----------------------------------------------------------------------------- +bool ODatabaseModelImpl::checkMacrosOnLoading() +{ + ::comphelper::NamedValueCollection aArgs( m_aArgs ); + Reference< XInteractionHandler > xInteraction; + xInteraction = aArgs.getOrDefault( "InteractionHandler", xInteraction ); + return m_aMacroMode.checkMacrosOnLoading( xInteraction ); +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::resetMacroExecutionMode() +{ + m_aMacroMode = ::sfx2::DocumentMacroMode( *this ); +} + +// ----------------------------------------------------------------------------- +Reference< XStorageBasedLibraryContainer > ODatabaseModelImpl::getLibraryContainer( bool _bScript ) +{ + Reference< XStorageBasedLibraryContainer >& rxContainer( _bScript ? m_xBasicLibraries : m_xDialogLibraries ); + if ( rxContainer.is() ) + return rxContainer; + + Reference< XStorageBasedDocument > xDocument( getModel_noCreate(), UNO_QUERY_THROW ); + // this is only to be called if there already exists a document model - in fact, it is + // to be called by the document model only + + try + { + Reference< XStorageBasedLibraryContainer > (*Factory)( const Reference< XComponentContext >&, const Reference< XStorageBasedDocument >&) + = _bScript ? &DocumentScriptLibraryContainer::create : &DocumentDialogLibraryContainer::create; + + rxContainer.set( + (*Factory)( m_aContext.getUNOContext(), xDocument ), + UNO_QUERY_THROW + ); + } + catch( const RuntimeException& ) + { + throw; + } + catch( const Exception& ) + { + throw WrappedTargetRuntimeException( + ::rtl::OUString(), + xDocument, + ::cppu::getCaughtException() + ); + } + return rxContainer; +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::storeLibraryContainersTo( const Reference< XStorage >& _rxToRootStorage ) +{ + if ( m_xBasicLibraries.is() ) + m_xBasicLibraries->storeLibrariesToStorage( _rxToRootStorage ); + + if ( m_xDialogLibraries.is() ) + m_xDialogLibraries->storeLibrariesToStorage( _rxToRootStorage ); +} + +// ----------------------------------------------------------------------------- +Reference< XStorage > ODatabaseModelImpl::switchToStorage( const Reference< XStorage >& _rxNewRootStorage ) +{ + if ( !_rxNewRootStorage.is() ) + throw IllegalArgumentException(); + + return impl_switchToStorage_throw( _rxNewRootStorage ); +} + +// ----------------------------------------------------------------------------- +namespace +{ + void lcl_modifyListening( ::sfx2::IModifiableDocument& _rDocument, + const Reference< XStorage >& _rxStorage, ::rtl::Reference< ::sfx2::DocumentStorageModifyListener >& _inout_rListener, + ::vos::IMutex& _rMutex, bool _bListen ) + { + Reference< XModifiable > xModify( _rxStorage, UNO_QUERY ); + OSL_ENSURE( xModify.is() || !_rxStorage.is(), "lcl_modifyListening: storage can't notify us!" ); + + if ( xModify.is() && !_bListen && _inout_rListener.is() ) + { + xModify->removeModifyListener( _inout_rListener.get() ); + } + + if ( _inout_rListener.is() ) + { + _inout_rListener->dispose(); + _inout_rListener = NULL; + } + + if ( xModify.is() && _bListen ) + { + _inout_rListener = new ::sfx2::DocumentStorageModifyListener( _rDocument, _rMutex ); + xModify->addModifyListener( _inout_rListener.get() ); + } + } +} + +// ----------------------------------------------------------------------------- +namespace +{ + static void lcl_rebaseScriptStorage_throw( const Reference< XStorageBasedLibraryContainer >& _rxContainer, + const Reference< XStorage >& _rxNewRootStorage ) + { + if ( _rxContainer.is() ) + { + if ( _rxNewRootStorage.is() ) + _rxContainer->setRootStorage( _rxNewRootStorage ); +// else + // TODO: what to do here? dispose the container? + } + } +} + +// ----------------------------------------------------------------------------- +Reference< XStorage > ODatabaseModelImpl::impl_switchToStorage_throw( const Reference< XStorage >& _rxNewRootStorage ) +{ + // stop listening for modifications at the old storage + lcl_modifyListening( *this, m_xDocumentStorage.getTyped(), m_pStorageModifyListener, m_aMutexFacade, false ); + + // set new storage + m_xDocumentStorage.reset( _rxNewRootStorage, SharedStorage::TakeOwnership ); + + // start listening for modifications + lcl_modifyListening( *this, m_xDocumentStorage.getTyped(), m_pStorageModifyListener, m_aMutexFacade, true ); + + // forward new storage to Basic and Dialog library containers + lcl_rebaseScriptStorage_throw( m_xBasicLibraries, m_xDocumentStorage.getTyped() ); + lcl_rebaseScriptStorage_throw( m_xDialogLibraries, m_xDocumentStorage.getTyped() ); + + m_bReadOnly = !lcl_storageIsWritable_nothrow( m_xDocumentStorage.getTyped() ); + // TODO: our data source, if it exists, must broadcast the change of its ReadOnly property + + return m_xDocumentStorage.getTyped(); +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::switchToURL( const ::rtl::OUString& _rDocumentLocation, const ::rtl::OUString& _rDocumentURL ) +{ + // register at the database context, or change registration + if ( _rDocumentURL != m_sDocumentURL ) + { + if ( m_pDBContext ) + { + if ( m_sDocumentURL.getLength() ) + m_pDBContext->nameChangePrivate( m_sDocumentURL, _rDocumentURL ); + else + m_pDBContext->registerPrivate( _rDocumentURL, this ); + } + + if ( ( m_sName == m_sDocumentURL ) // our name is our old URL + || ( !m_sName.getLength() ) // we do not have a name, yet (i.e. are not registered at the database context) + ) + { + INetURLObject aURL( _rDocumentURL ); + if ( aURL.GetProtocol() != INET_PROT_NOT_VALID ) + { + m_sName = _rDocumentURL; + // TODO: our data source must broadcast the change of the Name property + } + } + } + + // remember both + m_sDocFileLocation = _rDocumentLocation.getLength() ? _rDocumentLocation : _rDocumentURL; + m_sDocumentURL = _rDocumentURL; +} + +// ----------------------------------------------------------------------------- +bool ODatabaseModelImpl::isDatabaseStorage( const Reference< XStorage >& _rxStorage ) const +{ + TStorages::const_iterator pos = m_aStorages.find( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "database" ) ) ); + if ( ( pos != m_aStorages.end() ) + && ( pos->second == _rxStorage ) + ) + { + return true; + } + return false; +} + +// ----------------------------------------------------------------------------- +::rtl::OUString ODatabaseModelImpl::getObjectContainerStorageName( const ObjectType _eType ) +{ + return lcl_getContainerStorageName_throw( _eType ); +} + +// ----------------------------------------------------------------------------- +sal_Int16 ODatabaseModelImpl::getCurrentMacroExecMode() const +{ + sal_Int16 nCurrentMode = MacroExecMode::NEVER_EXECUTE; + try + { + ::comphelper::NamedValueCollection aArgs( m_aArgs ); + nCurrentMode = aArgs.getOrDefault( "MacroExecutionMode", nCurrentMode ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + return nCurrentMode; +} + +// ----------------------------------------------------------------------------- +sal_Bool ODatabaseModelImpl::setCurrentMacroExecMode( sal_uInt16 nMacroMode ) +{ + try + { + ::comphelper::NamedValueCollection aArgs( m_aArgs ); + aArgs.put( "MacroExecutionMode", nMacroMode ); + aArgs >>= m_aArgs; + return sal_True; + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + + return sal_False; +} + +// ----------------------------------------------------------------------------- +::rtl::OUString ODatabaseModelImpl::getDocumentLocation() const +{ + // don't return getURL() (or m_sDocumentURL, which is the same). In case we were recovered + // after a previous crash of OOo, m_sDocFileLocation points to the file which were loaded from, + // and this is the one we need for security checks. + return getDocFileLocation(); +} + +// ----------------------------------------------------------------------------- +Reference< XStorage > ODatabaseModelImpl::getLastCommitDocumentStorage() +{ + // we do not support signing the scripting storages, so we're allowed to + // return <NULL/> here. + return Reference< XStorage >(); +} + +// ----------------------------------------------------------------------------- +sal_Bool ODatabaseModelImpl::documentStorageHasMacros() const +{ + // does our root storage contain macros? + if ( ::sfx2::DocumentMacroMode::storageHasMacros( const_cast< ODatabaseModelImpl* >( this )->getOrCreateRootStorage() ) ) + { + return true; + } + + // do we have forms or reports with macros? + if ( lcl_hasObjectsWithMacros_nothrow( const_cast< ODatabaseModelImpl& >( *this ), E_FORM ) + || lcl_hasObjectsWithMacros_nothrow( const_cast< ODatabaseModelImpl& >( *this ), E_REPORT ) + ) + { + const_cast< ODatabaseModelImpl* >( this )->m_bHasAnyObjectWithMacros = true; + return true; + } + + return false; +} + +// ----------------------------------------------------------------------------- +Reference< XEmbeddedScripts > ODatabaseModelImpl::getEmbeddedDocumentScripts() const +{ + return Reference< XEmbeddedScripts >( getModel_noCreate(), UNO_QUERY ); +} + +// ----------------------------------------------------------------------------- +sal_Int16 ODatabaseModelImpl::getScriptingSignatureState() const +{ + // no support for signatures at the moment + return SIGNATURESTATE_NOSIGNATURES; +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::showBrokenSignatureWarning( const Reference< XInteractionHandler >& /*_rxInteraction*/ ) const +{ + OSL_ENSURE( false, "ODatabaseModelImpl::showBrokenSignatureWarning: signatures can't be broken - we do not support them!" ); +} + +// ----------------------------------------------------------------------------- +void ODatabaseModelImpl::storageIsModified() +{ + setModified( sal_True ); +} + +// ----------------------------------------------------------------------------- +ModelDependentComponent::ModelDependentComponent( const ::rtl::Reference< ODatabaseModelImpl >& _model ) + :m_pImpl( _model ) + ,m_aMutex( _model->getSharedMutex() ) +{ +} + +// ----------------------------------------------------------------------------- +ModelDependentComponent::~ModelDependentComponent() +{ +} + +//........................................................................ +} // namespace dbaccess +//........................................................................ + diff --git a/dbaccess/source/core/dataaccess/ModelImpl.hxx b/dbaccess/source/core/dataaccess/ModelImpl.hxx index b12c76287c5c..0df4064e119f 100644 --- a/dbaccess/source/core/dataaccess/ModelImpl.hxx +++ b/dbaccess/source/core/dataaccess/ModelImpl.hxx @@ -1,628 +1,628 @@ -/*************************************************************************
- *
- * 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: ModelImpl.hxx,v $
- * $Revision: 1.24.26.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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREDATAACCESS_MODELIMPL_HXX_
-#define _DBA_COREDATAACCESS_MODELIMPL_HXX_
-
-#include "apitools.hxx"
-#include "bookmarkcontainer.hxx"
-#include "ContentHelper.hxx"
-#include "core_resource.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/beans/XPropertyAccess.hpp>
-#include <com/sun/star/container/XContainerListener.hpp>
-#include <com/sun/star/document/XDocumentSubStorageSupplier.hpp>
-#include <com/sun/star/document/XEventListener.hpp>
-#include <com/sun/star/document/XStorageBasedDocument.hpp>
-#include <com/sun/star/embed/ElementModes.hpp>
-#include <com/sun/star/embed/XStorage.hpp>
-#include <com/sun/star/embed/XTransactionListener.hpp>
-#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/frame/XStorable.hpp>
-#include <com/sun/star/lang/NotInitializedException.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <com/sun/star/sdb/XBookmarksSupplier.hpp>
-#include <com/sun/star/sdb/XCompletedConnection.hpp>
-#include <com/sun/star/sdb/XFormDocumentsSupplier.hpp>
-#include <com/sun/star/sdb/XQueryDefinitionsSupplier.hpp>
-#include <com/sun/star/sdb/XReportDocumentsSupplier.hpp>
-#include <com/sun/star/sdbc/XDataSource.hpp>
-#include <com/sun/star/sdbc/XIsolatedConnection.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/util/XCloseable.hpp>
-#include <com/sun/star/util/XFlushable.hpp>
-#include <com/sun/star/util/XModifiable.hpp>
-#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
-#include <com/sun/star/util/XNumberFormatter.hpp>
-#include <com/sun/star/util/XRefreshable.hpp>
-#include <com/sun/star/sdb/XDocumentDataSource.hpp>
-#include <com/sun/star/frame/DoubleInitializationException.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/broadcasthelper.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <comphelper/sharedmutex.hxx>
-#include <connectivity/CommonTools.hxx>
-#include <cppuhelper/propshlp.hxx>
-#include <cppuhelper/weakref.hxx>
-#include <sfx2/docmacromode.hxx>
-#include <sfx2/docstoragemodifylistener.hxx>
-#include <tools/string.hxx>
-#include <unotools/sharedunocomponent.hxx>
-#include <vos/mutex.hxx>
-
-#include <memory>
-
-namespace comphelper
-{
- class NamedValueCollection;
-}
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
-typedef ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XConnection > OWeakConnection;
-typedef std::vector< OWeakConnection > OWeakConnectionArray;
-
-struct AsciiPropertyValue
-{
- // note: the canonic member order would be AsciiName / DefaultValue, but
- // this crashes on unxlngi6.pro, since there's a bug which somehow results in
- // getDefaultDataSourceSettings returning corrupted Any instances then.
- ::com::sun::star::uno::Any DefaultValue;
- const sal_Char* AsciiName;
-
- AsciiPropertyValue( const sal_Char* _pAsciiName, const ::com::sun::star::uno::Any& _rDefaultValue )
- :DefaultValue( _rDefaultValue )
- ,AsciiName( _pAsciiName )
- {
- }
-};
-
-class ODatabaseContext;
-class OSharedConnectionManager;
-
-//============================================================
-//= VosMutexFacade
-//============================================================
-/** a class which provides an IMutex interface to an OSL-based mutex
-*/
-class VosMutexFacade : public ::vos::IMutex
-{
-public:
- /** beware of life time: the mutex you pass here must live as least as long
- as the VosMutexFacade instance lives.
- */
- VosMutexFacade( ::osl::Mutex& _rMutex );
-
- // IMutex
- virtual void SAL_CALL acquire();
- virtual sal_Bool SAL_CALL tryToAcquire();
- virtual void SAL_CALL release();
-
-private:
- ::osl::Mutex& m_rMutex;
-};
-
-
-//============================================================
-//= ODatabaseModelImpl
-//============================================================
-DECLARE_STL_USTRINGACCESS_MAP(::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >,TStorages);
-
-typedef ::utl::SharedUNOComponent< ::com::sun::star::embed::XStorage > SharedStorage;
-
-class ODatabaseContext;
-class DocumentStorageAccess;
-class OSharedConnectionManager;
-class ODatabaseModelImpl :public ::rtl::IReference
- ,public ::sfx2::IMacroDocumentAccess
- ,public ::sfx2::IModifiableDocument
-{
-public:
- enum ObjectType
- {
- E_FORM = 0,
- E_REPORT = 1,
- E_QUERY = 2,
- E_TABLE = 3
- };
-
-private:
- OModuleClient m_aModuleClient;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XModel > m_xModel;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDataSource > m_xDataSource;
-
- DocumentStorageAccess* m_pStorageAccess;
- ::comphelper::SharedMutex m_aMutex;
- VosMutexFacade m_aMutexFacade;
- ::std::vector< TContentPtr > m_aContainer; // one for each ObjectType
- TStorages m_aStorages;
- ::sfx2::DocumentMacroMode m_aMacroMode;
- sal_Int16 m_nImposedMacroExecMode;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > m_xBasicLibraries;
- ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > m_xDialogLibraries;
-
- SharedStorage m_xDocumentStorage;
- ::rtl::Reference< ::sfx2::DocumentStorageModifyListener > m_pStorageModifyListener;
- ODatabaseContext* m_pDBContext;
-
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > m_aArgs;
- /// the URL the document was loaded from
- ::rtl::OUString m_sDocFileLocation;
-
- oslInterlockedCount m_refCount;
-
- /// do we have any object (forms/reports) which contains macros?
- bool m_bHasAnyObjectWithMacros;
-
- /// true if setting the Modified flag of the document is currently locked
- bool m_bModificationLock;
-
- /// true if and only if a database document existed previously (though meanwhile disposed), and was already initialized
- bool m_bDocumentInitialized;
-
- /** the URL which the document should report as it's URL
-
- This might differ from ->m_sDocFileLocation in case the document was loaded
- as part of a crash recovery process. In this case, ->m_sDocFileLocation points to
- the temporary file where the DB had been saved to, after a crash.
- ->m_sDocumentURL then is the URL of the document which actually had
- been recovered.
- */
- ::rtl::OUString m_sDocumentURL;
-
-public:
- OWeakConnectionArray m_aConnections;
- const ::comphelper::ComponentContext m_aContext;
-
-public:
- ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > m_xCommandDefinitions;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > m_xTableDefinitions;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >
- m_xNumberFormatsSupplier;
- ::rtl::OUString m_sConnectURL;
- ::rtl::OUString m_sName; // transient, our creator has to tell us the title
- ::rtl::OUString m_sUser;
- ::rtl::OUString m_aPassword; // transient !
- ::rtl::OUString m_sFailedPassword;
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>
- m_aLayoutInformation;
- sal_Int32 m_nLoginTimeout;
- sal_Bool m_bReadOnly : 1;
- sal_Bool m_bPasswordRequired : 1;
- sal_Bool m_bSuppressVersionColumns : 1;
- sal_Bool m_bModified : 1;
- sal_Bool m_bDocumentReadOnly : 1;
- sal_Bool m_bDisposingSubStorages;
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyAccess >
- m_xSettings;
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aTableFilter;
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aTableTypeFilter;
- OSharedConnectionManager* m_pSharedConnectionManager;
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >
- m_xSharedConnectionManager;
- sal_uInt16 m_nControllerLockCount;
-
- void reset();
-
- /** determines whether the database document has an embedded data storage
- */
- inline bool isEmbeddedDatabase() const { return ( m_sConnectURL.compareToAscii( "sdbc:embedded:", 14 ) == 0 ); }
-
- /** stores the embedded storage ("database")
-
- @param _bPreventRootCommits
- Normally, committing the embedded storage results in also commiting the root storage
- - this is an automatism for data safety reasons.
- If you pass <TRUE/> here, committing the root storage is prevented for this particular
- call.
- @return <TRUE/> if the storage could be commited, otherwise <FALSE/>
- */
- sal_Bool commitEmbeddedStorage( sal_Bool _bPreventRootCommits = sal_False );
-
- /** commits all storages storages which have been obtained via getStorage
- */
- void commitStorages()
- SAL_THROW(( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException ));
-
- ODatabaseModelImpl(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,
- ODatabaseContext& _pDBContext
- );
- virtual ~ODatabaseModelImpl();
-
- ODatabaseModelImpl(
- const ::rtl::OUString& _rRegistrationName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,
- ODatabaseContext& _rDBContext
- );
-
- // XEventListener
- void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
- void setModified( sal_Bool bModified );
-
- void dispose();
-
- inline ::rtl::OUString getURL() const { return m_sDocumentURL; }
- inline ::rtl::OUString getDocFileLocation() const { return m_sDocFileLocation; }
-
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage> getStorage(const ::rtl::OUString& _sStorageName,sal_Int32 nMode = ::com::sun::star::embed::ElementModes::READWRITE);
-// helper
- const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >&
- getNumberFormatsSupplier();
-
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >&
- getResource() const { return m_aArgs; }
-
- void attachResource(
- const ::rtl::OUString& _rURL,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rArgs );
-
- static ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
- stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments );
-
-// other stuff
- void flushTables();
-
- // disposes all elements in m_aStorages, and clears it
- void disposeStorages() SAL_THROW(());
-
- /// creates a ->com::sun::star::embed::StorageFactory
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory >
- createStorageFactory() const;
-
- /// commits our storage
- void commitRootStorage();
-
- /// commits a given storage if it's not readonly
- static bool commitStorageIfWriteable(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
- )
- SAL_THROW((
- ::com::sun::star::io::IOException,
- ::com::sun::star::lang::WrappedTargetException,
- ::com::sun::star::uno::RuntimeException
- ));
-
- /// commits a given storage if it's not readonly, ignoring (but asserting) all errors
- static bool commitStorageIfWriteable_ignoreErrors(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
- )
- SAL_THROW(());
-
- void clearConnections();
-
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getOrCreateRootStorage();
- inline ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getRootStorage() const { return m_xDocumentStorage.getTyped(); }
- inline void resetRootStroage() { impl_switchToStorage_throw( NULL ); }
-
- /** returns the data source. If it doesn't exist it will be created
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource> getOrCreateDataSource();
-
- /** returns the model, if there already exists one
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getModel_noCreate() const;
-
- /** returns a new ->ODatabaseDocument
-
- @param _bInitializeIfNecessary
- calls XLoadable::initNew on the newly created model, if necessary
-
- @precond
- No ->ODatabaseDocument exists so far
-
- @seealso
- getModel_noCreate
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > createNewModel_deliverOwnership( bool _bInitialize );
-
- struct ResetModelAccess { friend class ODatabaseDocument; private: ResetModelAccess() { } };
-
- /** resets the model to NULL
-
- Only to be called when the model is being disposed
- */
- void modelIsDisposing( const bool _wasInitialized, ResetModelAccess );
-
- bool hadInitializedDocument() const { return m_bDocumentInitialized; }
-
- DocumentStorageAccess*
- getDocumentStorageAccess();
-
- ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentSubStorageSupplier >
- getDocumentSubStorageSupplier();
-
- inline const ::comphelper::SharedMutex& getSharedMutex() const { return m_aMutex; }
-
- /** @see osl_incrementInterlockedCount.
- */
- virtual oslInterlockedCount SAL_CALL acquire();
-
- /** @see osl_decrementInterlockedCount.
- */
- virtual oslInterlockedCount SAL_CALL release();
-
- /// returns a all known data source settings, including their default values
- static const AsciiPropertyValue* getDefaultDataSourceSettings();
-
- /** retrieves the requested container of objects (forms/reports/tables/queries)
- */
- TContentPtr& getObjectContainer( const ObjectType _eType );
-
- /** determines whether the given storage is the storage of our embedded database (named "database"), if any
- */
- bool isDatabaseStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage ) const;
-
- /** returns the name of the storage which is used to stored objects of the given type, if applicable
- */
- static ::rtl::OUString
- getObjectContainerStorageName( const ObjectType _eType );
-
- /** revokes the data source registration at the database context
- */
- void revokeDataSource() const;
-
- /** determines whether a given object storage contains macros
- */
- static bool objectHasMacros(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxContainerStorage,
- const ::rtl::OUString& _rPersistentName
- );
-
- /** determines whether the database document has any object (form/report) which contains macros
-
- In such a case, *all* objects in the document keep the macro capability, and the database document
- itself does *not* allow embedding macros.
- */
- bool hasAnyObjectWithMacros() const { return m_bHasAnyObjectWithMacros; }
-
- /** checks our document's macro execution mode, using the interaction handler as supplied with our
- load arguments
- */
- bool checkMacrosOnLoading();
-
- /** adjusts our document's macro execution mode, without using any UI, assuming the user
- would reject execution of macros, if she would have been asked.
-
- If checkMacrosOnLoading has been called before (and thus the macro execution mode
- is already adjusted), then the current execution mode is simply returned.
-
- @return
- whether or not macro execution is allowed
- */
- bool adjustMacroMode_AutoReject();
-
- /** resets our macro execute mode, so next time the checkMacrosOnLoading is called, it will
- behave as if it has never been called before
- */
- void resetMacroExecutionMode();
-
- /** ensures that ->m_xBasicLibraries resp. m_xDialogLibraries exists
-
- @return
- the requested library container. Is never <NULL/>.
-
- @throws RuntimeException
- if something does wrong, which indicates a server error in the installation
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer >
- getLibraryContainer( bool _bScript );
-
- /** lets our library containers store themself into the given root storage
- */
- void storeLibraryContainersTo( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxToRootStorage );
-
- /** rebases the document to the given storage
-
- No actual committing, copying, saving, whatsoever happens. The storage is just remembered as the documents
- new storage, nothing more.
-
- @throws ::com::sun::star::lang::IllegalArgumentException
- if the given storage is <NULL/>
- @throws ::com::sun::star::lang::RuntimeException
- if any of the invoked operations does so
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
- switchToStorage(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage
- );
-
- /** switches to the given document location/URL
-
- The document location is the URL of the file from which the document has been loaded.
- The document URL is the "intended location" of the document. It differs from the location
- if and only if the document was loaded as part of a document recovery process. In this case,
- the location points to some temporary file, but the URL is the URL of the file which has been
- just recovered. The next store operation would operate on the URL, not the location.
- */
- void switchToURL(
- const ::rtl::OUString& _rDocumentLocation,
- const ::rtl::OUString& _rDocumentURL
- );
-
- /** returns the macro mode imposed by an external instance, which passed it to attachResource
- */
- sal_Int16 getImposedMacroExecMode() const
- {
- return m_nImposedMacroExecMode;
- }
- void setImposedMacroExecMode( const sal_Int16 _nMacroMode )
- {
- m_nImposedMacroExecMode = _nMacroMode;
- }
-
-public:
- // IMacroDocumentAccess overridables
- virtual sal_Int16 getCurrentMacroExecMode() const;
- virtual sal_Bool setCurrentMacroExecMode( sal_uInt16 );
- virtual ::rtl::OUString getDocumentLocation() const;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getLastCommitDocumentStorage();
- virtual sal_Bool documentStorageHasMacros() const;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedScripts > getEmbeddedDocumentScripts() const;
- virtual sal_Int16 getScriptingSignatureState() const;
- virtual void showBrokenSignatureWarning( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxInteraction ) const;
-
- // IModifiableDocument
- virtual void storageIsModified();
-
- // don't use directly, use the ModifyLock class instead
- void lockModify() { m_bModificationLock = true; }
- void unlockModify() { m_bModificationLock = false; }
- bool isModifyLocked() const { return m_bModificationLock; }
-
-private:
- void impl_construct_nothrow();
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
- impl_switchToStorage_throw( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage );
-};
-
-/** a small base class for UNO components whose functionality depends on a ODatabaseModelImpl
-*/
-class ModelDependentComponent
-{
-protected:
- ::rtl::Reference< ODatabaseModelImpl > m_pImpl;
- mutable ::comphelper::SharedMutex m_aMutex;
-
-protected:
- ModelDependentComponent( const ::rtl::Reference< ODatabaseModelImpl >& _model );
- virtual ~ModelDependentComponent();
-
- /** returns the component itself
- */
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getThis() const = 0;
-
- inline ::osl::Mutex& getMutex() const
- {
- return m_aMutex;
- }
-
-public:
- struct GuardAccess { friend class ModelMethodGuard; private: GuardAccess() { } };
-
- /** returns the mutex used for thread safety
-
- @throws ::com::sun::star::lang::DisposedException
- if m_pImpl is <NULL/>. Usually, you will set this member in your derived
- component's <code>dispose</code> method to <NULL/>.
- */
- inline ::osl::Mutex& getMutex( GuardAccess ) const
- {
- return getMutex();
- }
- inline ::rtl::Reference< ODatabaseModelImpl > getImpl( GuardAccess )
- {
- return m_pImpl;
- }
-
- /// checks whether the component is already disposed, throws a DisposedException if so
- inline void checkDisposed() const
- {
- if ( !m_pImpl.is() )
- throw ::com::sun::star::lang::DisposedException( ::rtl::OUString::createFromAscii( "Component is already disposed." ), getThis() );
- }
-
- inline void lockModify()
- {
- m_pImpl->lockModify();
- }
-
- inline void unlockModify()
- {
- m_pImpl->unlockModify();
- }
-};
-
-class ModifyLock
-{
-public:
- ModifyLock( ModelDependentComponent& _component )
- :m_rComponent( _component )
- {
- m_rComponent.lockModify();
- }
-
- ~ModifyLock()
- {
- m_rComponent.unlockModify();
- }
-
-private:
- ModelDependentComponent& m_rComponent;
-};
-
-/** a guard for public methods of objects dependent on a ODatabaseModelImpl instance
-
- Just put this guard onto the stack at the beginning of your method. Don't bother yourself
- with a MutexGuard, checks for being disposed, and the like.
-*/
-class ModelMethodGuard : public ::osl::ResettableMutexGuard
-{
-private:
- typedef ::osl::ResettableMutexGuard BaseMutexGuard;
-
-public:
- /** constructs the guard
-
- @param _component
- the component whose functionality depends on a ODatabaseModelImpl instance
-
- @throws ::com::sun::star::lang::DisposedException
- If the given component is already disposed
- */
- ModelMethodGuard( const ModelDependentComponent& _component )
- :BaseMutexGuard( _component.getMutex( ModelDependentComponent::GuardAccess() ) )
- {
- _component.checkDisposed();
- }
-
- ~ModelMethodGuard()
- {
- }
-};
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // _DBA_COREDATAACCESS_DATALINK_HXX_
-
+/************************************************************************* + * + * 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: ModelImpl.hxx,v $ + * $Revision: 1.24.26.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. + * + ************************************************************************/ + +#ifndef _DBA_COREDATAACCESS_MODELIMPL_HXX_ +#define _DBA_COREDATAACCESS_MODELIMPL_HXX_ + +#include "apitools.hxx" +#include "bookmarkcontainer.hxx" +#include "ContentHelper.hxx" +#include "core_resource.hxx" + +/** === begin UNO includes === **/ +#include <com/sun/star/beans/PropertyAttribute.hpp> +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/beans/XPropertyAccess.hpp> +#include <com/sun/star/container/XContainerListener.hpp> +#include <com/sun/star/document/XDocumentSubStorageSupplier.hpp> +#include <com/sun/star/document/XEventListener.hpp> +#include <com/sun/star/document/XStorageBasedDocument.hpp> +#include <com/sun/star/embed/ElementModes.hpp> +#include <com/sun/star/embed/XStorage.hpp> +#include <com/sun/star/embed/XTransactionListener.hpp> +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/lang/NotInitializedException.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XSingleServiceFactory.hpp> +#include <com/sun/star/sdb/XBookmarksSupplier.hpp> +#include <com/sun/star/sdb/XCompletedConnection.hpp> +#include <com/sun/star/sdb/XFormDocumentsSupplier.hpp> +#include <com/sun/star/sdb/XQueryDefinitionsSupplier.hpp> +#include <com/sun/star/sdb/XReportDocumentsSupplier.hpp> +#include <com/sun/star/sdbc/XDataSource.hpp> +#include <com/sun/star/sdbc/XIsolatedConnection.hpp> +#include <com/sun/star/sdbcx/XTablesSupplier.hpp> +#include <com/sun/star/util/XCloseable.hpp> +#include <com/sun/star/util/XFlushable.hpp> +#include <com/sun/star/util/XModifiable.hpp> +#include <com/sun/star/util/XNumberFormatsSupplier.hpp> +#include <com/sun/star/util/XNumberFormatter.hpp> +#include <com/sun/star/util/XRefreshable.hpp> +#include <com/sun/star/sdb/XDocumentDataSource.hpp> +#include <com/sun/star/frame/DoubleInitializationException.hpp> +/** === end UNO includes === **/ + +#include <comphelper/broadcasthelper.hxx> +#include <comphelper/proparrhlp.hxx> +#include <comphelper/sharedmutex.hxx> +#include <connectivity/CommonTools.hxx> +#include <cppuhelper/propshlp.hxx> +#include <cppuhelper/weakref.hxx> +#include <sfx2/docmacromode.hxx> +#include <sfx2/docstoragemodifylistener.hxx> +#include <tools/string.hxx> +#include <unotools/sharedunocomponent.hxx> +#include <vos/mutex.hxx> + +#include <memory> + +namespace comphelper +{ + class NamedValueCollection; +} + +//........................................................................ +namespace dbaccess +{ +//........................................................................ + +typedef ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XConnection > OWeakConnection; +typedef std::vector< OWeakConnection > OWeakConnectionArray; + +struct AsciiPropertyValue +{ + // note: the canonic member order would be AsciiName / DefaultValue, but + // this crashes on unxlngi6.pro, since there's a bug which somehow results in + // getDefaultDataSourceSettings returning corrupted Any instances then. + ::com::sun::star::uno::Any DefaultValue; + const sal_Char* AsciiName; + + AsciiPropertyValue( const sal_Char* _pAsciiName, const ::com::sun::star::uno::Any& _rDefaultValue ) + :DefaultValue( _rDefaultValue ) + ,AsciiName( _pAsciiName ) + { + } +}; + +class ODatabaseContext; +class OSharedConnectionManager; + +//============================================================ +//= VosMutexFacade +//============================================================ +/** a class which provides an IMutex interface to an OSL-based mutex +*/ +class VosMutexFacade : public ::vos::IMutex +{ +public: + /** beware of life time: the mutex you pass here must live as least as long + as the VosMutexFacade instance lives. + */ + VosMutexFacade( ::osl::Mutex& _rMutex ); + + // IMutex + virtual void SAL_CALL acquire(); + virtual sal_Bool SAL_CALL tryToAcquire(); + virtual void SAL_CALL release(); + +private: + ::osl::Mutex& m_rMutex; +}; + + +//============================================================ +//= ODatabaseModelImpl +//============================================================ +DECLARE_STL_USTRINGACCESS_MAP(::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >,TStorages); + +typedef ::utl::SharedUNOComponent< ::com::sun::star::embed::XStorage > SharedStorage; + +class ODatabaseContext; +class DocumentStorageAccess; +class OSharedConnectionManager; +class ODatabaseModelImpl :public ::rtl::IReference + ,public ::sfx2::IMacroDocumentAccess + ,public ::sfx2::IModifiableDocument +{ +public: + enum ObjectType + { + E_FORM = 0, + E_REPORT = 1, + E_QUERY = 2, + E_TABLE = 3 + }; + +private: + OModuleClient m_aModuleClient; + ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XModel > m_xModel; + ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDataSource > m_xDataSource; + + DocumentStorageAccess* m_pStorageAccess; + ::comphelper::SharedMutex m_aMutex; + VosMutexFacade m_aMutexFacade; + ::std::vector< TContentPtr > m_aContainer; // one for each ObjectType + TStorages m_aStorages; + ::sfx2::DocumentMacroMode m_aMacroMode; + sal_Int16 m_nImposedMacroExecMode; + + ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > m_xBasicLibraries; + ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > m_xDialogLibraries; + + SharedStorage m_xDocumentStorage; + ::rtl::Reference< ::sfx2::DocumentStorageModifyListener > m_pStorageModifyListener; + ODatabaseContext* m_pDBContext; + + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > m_aArgs; + /// the URL the document was loaded from + ::rtl::OUString m_sDocFileLocation; + + oslInterlockedCount m_refCount; + + /// do we have any object (forms/reports) which contains macros? + bool m_bHasAnyObjectWithMacros; + + /// true if setting the Modified flag of the document is currently locked + bool m_bModificationLock; + + /// true if and only if a database document existed previously (though meanwhile disposed), and was already initialized + bool m_bDocumentInitialized; + + /** the URL which the document should report as it's URL + + This might differ from ->m_sDocFileLocation in case the document was loaded + as part of a crash recovery process. In this case, ->m_sDocFileLocation points to + the temporary file where the DB had been saved to, after a crash. + ->m_sDocumentURL then is the URL of the document which actually had + been recovered. + */ + ::rtl::OUString m_sDocumentURL; + +public: + OWeakConnectionArray m_aConnections; + const ::comphelper::ComponentContext m_aContext; + +public: + ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > m_xCommandDefinitions; + ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > m_xTableDefinitions; + + ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > + m_xNumberFormatsSupplier; + ::rtl::OUString m_sConnectURL; + ::rtl::OUString m_sName; // transient, our creator has to tell us the title + ::rtl::OUString m_sUser; + ::rtl::OUString m_aPassword; // transient ! + ::rtl::OUString m_sFailedPassword; + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue> + m_aLayoutInformation; + sal_Int32 m_nLoginTimeout; + sal_Bool m_bReadOnly : 1; + sal_Bool m_bPasswordRequired : 1; + sal_Bool m_bSuppressVersionColumns : 1; + sal_Bool m_bModified : 1; + sal_Bool m_bDocumentReadOnly : 1; + sal_Bool m_bDisposingSubStorages; + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyAccess > + m_xSettings; + ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aTableFilter; + ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aTableTypeFilter; + OSharedConnectionManager* m_pSharedConnectionManager; + ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > + m_xSharedConnectionManager; + sal_uInt16 m_nControllerLockCount; + + void reset(); + + /** determines whether the database document has an embedded data storage + */ + inline bool isEmbeddedDatabase() const { return ( m_sConnectURL.compareToAscii( "sdbc:embedded:", 14 ) == 0 ); } + + /** stores the embedded storage ("database") + + @param _bPreventRootCommits + Normally, committing the embedded storage results in also commiting the root storage + - this is an automatism for data safety reasons. + If you pass <TRUE/> here, committing the root storage is prevented for this particular + call. + @return <TRUE/> if the storage could be commited, otherwise <FALSE/> + */ + sal_Bool commitEmbeddedStorage( sal_Bool _bPreventRootCommits = sal_False ); + + /** commits all storages storages which have been obtained via getStorage + */ + void commitStorages() + SAL_THROW(( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException )); + + ODatabaseModelImpl( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory, + ODatabaseContext& _pDBContext + ); + virtual ~ODatabaseModelImpl(); + + ODatabaseModelImpl( + const ::rtl::OUString& _rRegistrationName, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory, + ODatabaseContext& _rDBContext + ); + + // XEventListener + void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException); + + void setModified( sal_Bool bModified ); + + void dispose(); + + inline ::rtl::OUString getURL() const { return m_sDocumentURL; } + inline ::rtl::OUString getDocFileLocation() const { return m_sDocFileLocation; } + + ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage> getStorage(const ::rtl::OUString& _sStorageName,sal_Int32 nMode = ::com::sun::star::embed::ElementModes::READWRITE); +// helper + const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& + getNumberFormatsSupplier(); + + const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& + getResource() const { return m_aArgs; } + + void attachResource( + const ::rtl::OUString& _rURL, + const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rArgs ); + + static ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > + stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments ); + +// other stuff + void flushTables(); + + // disposes all elements in m_aStorages, and clears it + void disposeStorages() SAL_THROW(()); + + /// creates a ->com::sun::star::embed::StorageFactory + ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > + createStorageFactory() const; + + /// commits our storage + void commitRootStorage(); + + /// commits a given storage if it's not readonly + static bool commitStorageIfWriteable( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage + ) + SAL_THROW(( + ::com::sun::star::io::IOException, + ::com::sun::star::lang::WrappedTargetException, + ::com::sun::star::uno::RuntimeException + )); + + /// commits a given storage if it's not readonly, ignoring (but asserting) all errors + static bool commitStorageIfWriteable_ignoreErrors( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage + ) + SAL_THROW(()); + + void clearConnections(); + + ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getOrCreateRootStorage(); + inline ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getRootStorage() const { return m_xDocumentStorage.getTyped(); } + inline void resetRootStroage() { impl_switchToStorage_throw( NULL ); } + + /** returns the data source. If it doesn't exist it will be created + */ + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource> getOrCreateDataSource(); + + /** returns the model, if there already exists one + */ + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getModel_noCreate() const; + + /** returns a new ->ODatabaseDocument + + @param _bInitializeIfNecessary + calls XLoadable::initNew on the newly created model, if necessary + + @precond + No ->ODatabaseDocument exists so far + + @seealso + getModel_noCreate + */ + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > createNewModel_deliverOwnership( bool _bInitialize ); + + struct ResetModelAccess { friend class ODatabaseDocument; private: ResetModelAccess() { } }; + + /** resets the model to NULL + + Only to be called when the model is being disposed + */ + void modelIsDisposing( const bool _wasInitialized, ResetModelAccess ); + + bool hadInitializedDocument() const { return m_bDocumentInitialized; } + + DocumentStorageAccess* + getDocumentStorageAccess(); + + ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentSubStorageSupplier > + getDocumentSubStorageSupplier(); + + inline const ::comphelper::SharedMutex& getSharedMutex() const { return m_aMutex; } + + /** @see osl_incrementInterlockedCount. + */ + virtual oslInterlockedCount SAL_CALL acquire(); + + /** @see osl_decrementInterlockedCount. + */ + virtual oslInterlockedCount SAL_CALL release(); + + /// returns a all known data source settings, including their default values + static const AsciiPropertyValue* getDefaultDataSourceSettings(); + + /** retrieves the requested container of objects (forms/reports/tables/queries) + */ + TContentPtr& getObjectContainer( const ObjectType _eType ); + + /** determines whether the given storage is the storage of our embedded database (named "database"), if any + */ + bool isDatabaseStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage ) const; + + /** returns the name of the storage which is used to stored objects of the given type, if applicable + */ + static ::rtl::OUString + getObjectContainerStorageName( const ObjectType _eType ); + + /** revokes the data source registration at the database context + */ + void revokeDataSource() const; + + /** determines whether a given object storage contains macros + */ + static bool objectHasMacros( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxContainerStorage, + const ::rtl::OUString& _rPersistentName + ); + + /** determines whether the database document has any object (form/report) which contains macros + + In such a case, *all* objects in the document keep the macro capability, and the database document + itself does *not* allow embedding macros. + */ + bool hasAnyObjectWithMacros() const { return m_bHasAnyObjectWithMacros; } + + /** checks our document's macro execution mode, using the interaction handler as supplied with our + load arguments + */ + bool checkMacrosOnLoading(); + + /** adjusts our document's macro execution mode, without using any UI, assuming the user + would reject execution of macros, if she would have been asked. + + If checkMacrosOnLoading has been called before (and thus the macro execution mode + is already adjusted), then the current execution mode is simply returned. + + @return + whether or not macro execution is allowed + */ + bool adjustMacroMode_AutoReject(); + + /** resets our macro execute mode, so next time the checkMacrosOnLoading is called, it will + behave as if it has never been called before + */ + void resetMacroExecutionMode(); + + /** ensures that ->m_xBasicLibraries resp. m_xDialogLibraries exists + + @return + the requested library container. Is never <NULL/>. + + @throws RuntimeException + if something does wrong, which indicates a server error in the installation + */ + ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > + getLibraryContainer( bool _bScript ); + + /** lets our library containers store themself into the given root storage + */ + void storeLibraryContainersTo( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxToRootStorage ); + + /** rebases the document to the given storage + + No actual committing, copying, saving, whatsoever happens. The storage is just remembered as the documents + new storage, nothing more. + + @throws ::com::sun::star::lang::IllegalArgumentException + if the given storage is <NULL/> + @throws ::com::sun::star::lang::RuntimeException + if any of the invoked operations does so + */ + ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > + switchToStorage( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage + ); + + /** switches to the given document location/URL + + The document location is the URL of the file from which the document has been loaded. + The document URL is the "intended location" of the document. It differs from the location + if and only if the document was loaded as part of a document recovery process. In this case, + the location points to some temporary file, but the URL is the URL of the file which has been + just recovered. The next store operation would operate on the URL, not the location. + */ + void switchToURL( + const ::rtl::OUString& _rDocumentLocation, + const ::rtl::OUString& _rDocumentURL + ); + + /** returns the macro mode imposed by an external instance, which passed it to attachResource + */ + sal_Int16 getImposedMacroExecMode() const + { + return m_nImposedMacroExecMode; + } + void setImposedMacroExecMode( const sal_Int16 _nMacroMode ) + { + m_nImposedMacroExecMode = _nMacroMode; + } + +public: + // IMacroDocumentAccess overridables + virtual sal_Int16 getCurrentMacroExecMode() const; + virtual sal_Bool setCurrentMacroExecMode( sal_uInt16 ); + virtual ::rtl::OUString getDocumentLocation() const; + virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getLastCommitDocumentStorage(); + virtual sal_Bool documentStorageHasMacros() const; + virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedScripts > getEmbeddedDocumentScripts() const; + virtual sal_Int16 getScriptingSignatureState() const; + virtual void showBrokenSignatureWarning( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxInteraction ) const; + + // IModifiableDocument + virtual void storageIsModified(); + + // don't use directly, use the ModifyLock class instead + void lockModify() { m_bModificationLock = true; } + void unlockModify() { m_bModificationLock = false; } + bool isModifyLocked() const { return m_bModificationLock; } + +private: + void impl_construct_nothrow(); + ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > + impl_switchToStorage_throw( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage ); +}; + +/** a small base class for UNO components whose functionality depends on a ODatabaseModelImpl +*/ +class ModelDependentComponent +{ +protected: + ::rtl::Reference< ODatabaseModelImpl > m_pImpl; + mutable ::comphelper::SharedMutex m_aMutex; + +protected: + ModelDependentComponent( const ::rtl::Reference< ODatabaseModelImpl >& _model ); + virtual ~ModelDependentComponent(); + + /** returns the component itself + */ + virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getThis() const = 0; + + inline ::osl::Mutex& getMutex() const + { + return m_aMutex; + } + +public: + struct GuardAccess { friend class ModelMethodGuard; private: GuardAccess() { } }; + + /** returns the mutex used for thread safety + + @throws ::com::sun::star::lang::DisposedException + if m_pImpl is <NULL/>. Usually, you will set this member in your derived + component's <code>dispose</code> method to <NULL/>. + */ + inline ::osl::Mutex& getMutex( GuardAccess ) const + { + return getMutex(); + } + inline ::rtl::Reference< ODatabaseModelImpl > getImpl( GuardAccess ) + { + return m_pImpl; + } + + /// checks whether the component is already disposed, throws a DisposedException if so + inline void checkDisposed() const + { + if ( !m_pImpl.is() ) + throw ::com::sun::star::lang::DisposedException( ::rtl::OUString::createFromAscii( "Component is already disposed." ), getThis() ); + } + + inline void lockModify() + { + m_pImpl->lockModify(); + } + + inline void unlockModify() + { + m_pImpl->unlockModify(); + } +}; + +class ModifyLock +{ +public: + ModifyLock( ModelDependentComponent& _component ) + :m_rComponent( _component ) + { + m_rComponent.lockModify(); + } + + ~ModifyLock() + { + m_rComponent.unlockModify(); + } + +private: + ModelDependentComponent& m_rComponent; +}; + +/** a guard for public methods of objects dependent on a ODatabaseModelImpl instance + + Just put this guard onto the stack at the beginning of your method. Don't bother yourself + with a MutexGuard, checks for being disposed, and the like. +*/ +class ModelMethodGuard : public ::osl::ResettableMutexGuard +{ +private: + typedef ::osl::ResettableMutexGuard BaseMutexGuard; + +public: + /** constructs the guard + + @param _component + the component whose functionality depends on a ODatabaseModelImpl instance + + @throws ::com::sun::star::lang::DisposedException + If the given component is already disposed + */ + ModelMethodGuard( const ModelDependentComponent& _component ) + :BaseMutexGuard( _component.getMutex( ModelDependentComponent::GuardAccess() ) ) + { + _component.checkDisposed(); + } + + ~ModelMethodGuard() + { + } +}; + +//........................................................................ +} // namespace dbaccess +//........................................................................ + +#endif // _DBA_COREDATAACCESS_DATALINK_HXX_ + diff --git a/dbaccess/source/ext/macromigration/macromigrationpages.cxx b/dbaccess/source/ext/macromigration/macromigrationpages.cxx index b84040731170..683f7ebaa09c 100644 --- a/dbaccess/source/ext/macromigration/macromigrationpages.cxx +++ b/dbaccess/source/ext/macromigration/macromigrationpages.cxx @@ -1,364 +1,364 @@ -/*************************************************************************
- *
- * 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: macromigrationpages.cxx,v $
- * $Revision: 1.3.2.4 $
- *
- * 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 "dbaccess_helpid.hrc"
-#include "dbmm_module.hxx"
-#include "dbmm_global.hrc"
-#include "macromigration.hrc"
-#include "macromigrationpages.hxx"
-#include "macromigrationdialog.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/frame/XModel.hpp>
-/** === end UNO includes === **/
-
-#include <tools/urlobj.hxx>
-#include <tools/diagnose_ex.h>
-#include <vcl/metric.hxx>
-
-//........................................................................
-namespace dbmm
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::frame::XModel;
- /** === end UNO using === **/
-
- //====================================================================
- //= MacroMigrationPage
- //====================================================================
- //--------------------------------------------------------------------
- MacroMigrationPage::MacroMigrationPage( MacroMigrationDialog& _rParentDialog, const ResId& _rRes )
- :MacroMigrationPage_Base( &_rParentDialog, _rRes )
- ,m_aHeader( this, MacroMigrationResId( FT_HEADER ) )
- {
- Font aFont( m_aHeader.GetFont() );
- aFont.SetWeight( WEIGHT_BOLD );
- m_aHeader.SetFont( aFont );
- }
-
- //--------------------------------------------------------------------
- MacroMigrationPage::~MacroMigrationPage()
- {
- }
-
- //--------------------------------------------------------------------
- const MacroMigrationDialog& MacroMigrationPage::getDialog() const
- {
- return *dynamic_cast< const MacroMigrationDialog* >( GetParent() );
- }
-
- //--------------------------------------------------------------------
- MacroMigrationDialog& MacroMigrationPage::getDialog()
- {
- return *dynamic_cast< MacroMigrationDialog* >( GetParent() );
- }
-
- //====================================================================
- //= PreparationPage
- //====================================================================
- //--------------------------------------------------------------------
- PreparationPage::PreparationPage( MacroMigrationDialog& _rParentDialog )
- :MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_PREPARE ) )
- ,m_aIntroduction ( this, MacroMigrationResId( FT_INTRODUCTION ) )
- ,m_aCloseDocError( this, MacroMigrationResId( FT_CLOSE_DOC_ERROR ) )
- {
- FreeResource();
- }
-
- //--------------------------------------------------------------------
- void PreparationPage::showCloseDocsError( bool _bShow )
- {
- m_aCloseDocError.Show( _bShow );
- }
-
- //--------------------------------------------------------------------
- TabPage* PreparationPage::Create( ::svt::RoadmapWizard& _rParentDialog )
- {
- return new PreparationPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) );
- }
-
- //====================================================================
- //= SaveDBDocPage
- //====================================================================
- //--------------------------------------------------------------------
- SaveDBDocPage::SaveDBDocPage( MacroMigrationDialog& _rParentDialog )
- :MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_SAVE_DBDOC_AS ) )
- ,m_aExplanation ( this, MacroMigrationResId( FT_EXPLANATION ) )
- ,m_aSaveAsLabel ( this, MacroMigrationResId( FT_SAVE_AS_LABEL ) )
- ,m_aSaveAsLocation ( this, MacroMigrationResId( ED_SAVE_AS_LOCATION ) )
- ,m_aBrowseSaveAsLocation( this, MacroMigrationResId( PB_BROWSE_SAVE_AS_LOCATION ) )
- ,m_aStartMigration ( this, MacroMigrationResId( FT_START_MIGRATION ) )
- ,m_aLocationController( _rParentDialog.getComponentContext(), m_aSaveAsLocation, m_aBrowseSaveAsLocation )
- {
- FreeResource();
-
- m_aSaveAsLocation.SetModifyHdl( LINK( this, SaveDBDocPage, OnLocationModified ) );
- m_aSaveAsLocation.SetDropDownLineCount( 20 );
-
- m_aSaveAsLocation.SetHelpId( HID_MACRO_MIGRATION_BACKUP_LOCATION );
-
- impl_updateLocationDependentItems();
- }
-
- //--------------------------------------------------------------------
- void SaveDBDocPage::impl_updateLocationDependentItems()
- {
- updateDialogTravelUI();
- m_aStartMigration.Show( m_aSaveAsLocation.GetText().Len() > 0 );
- }
-
- //--------------------------------------------------------------------
- IMPL_LINK( SaveDBDocPage, OnLocationModified, Edit*, /**/ )
- {
- impl_updateLocationDependentItems();
- return 0L;
- }
-
- //--------------------------------------------------------------------
- void SaveDBDocPage::initializePage()
- {
- OWizardPage::initializePage();
-
- try
- {
- // get the document's current URL
- Reference< XModel > xDocument( getDialog().getDocument(), UNO_QUERY_THROW );
- INetURLObject aURLParser( xDocument->getURL() );
- OSL_ENSURE( aURLParser.GetProtocol() != INET_PROT_NOT_VALID, "SaveDBDocPage::initializePage: illegal document URL!" );
-
- ::rtl::OUStringBuffer aBaseName( aURLParser.getBase() );
- aBaseName.appendAscii( ".backup" );
- aURLParser.setBase( aBaseName.makeStringAndClear() );
-
- m_aLocationController.setURL( aURLParser.GetMainURL( INetURLObject::NO_DECODE ) );
- impl_updateLocationDependentItems();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- //--------------------------------------------------------------------
- bool SaveDBDocPage::canAdvance() const
- {
- if ( !MacroMigrationPage::canAdvance() )
- return false;
-
- return m_aSaveAsLocation.GetText().Len() > 0;
- }
-
- //--------------------------------------------------------------------
- sal_Bool SaveDBDocPage::commitPage( CommitPageReason _eReason )
- {
- if ( !MacroMigrationPage::commitPage( _eReason ) )
- return sal_False;
-
- if ( eTravelBackward == _eReason )
- return sal_True;
-
- if ( !m_aLocationController.prepareCommit() )
- return sal_False;
-
- return sal_True;
- }
-
- //--------------------------------------------------------------------
- TabPage* SaveDBDocPage::Create( ::svt::RoadmapWizard& _rParentDialog )
- {
- return new SaveDBDocPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) );
- }
-
- //====================================================================
- //= ProgressPage
- //====================================================================
- //--------------------------------------------------------------------
- ProgressPage::ProgressPage( MacroMigrationDialog& _rParentDialog )
- :MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_MIGRATE ) )
- ,m_aObjectCount ( this, MacroMigrationResId( FT_OBJECT_COUNT ) )
- ,m_aCurrentObjectLabel ( this, MacroMigrationResId( FT_CURRENT_OBJECT_LABEL ) )
- ,m_aCurrentObject ( this, MacroMigrationResId( FT_CURRENT_OBJECT ) )
- ,m_aCurrentActionLabel ( this, MacroMigrationResId( FT_CURRENT_PROGRESS_LABEL ) )
- ,m_aCurrentAction ( this, MacroMigrationResId( FT_CURRENT_PROGRESS ) )
- ,m_aCurrentProgress ( this, MacroMigrationResId( WND_CURRENT_PROGRESS ) )
- ,m_aAllProgressLabel ( this, MacroMigrationResId( FT_ALL_PROGRESS_LABEL ) )
- ,m_aAllProgressText ( this, MacroMigrationResId( FT_OBJECT_COUNT_PROGRESS ) )
- ,m_aAllProgress ( this, MacroMigrationResId( WND_ALL_PROGRESS ) )
- ,m_aMigrationDone ( this, MacroMigrationResId( FT_MIGRATION_DONE ) )
- {
- FreeResource();
- }
-
- //--------------------------------------------------------------------
- TabPage* ProgressPage::Create( ::svt::RoadmapWizard& _rParentDialog )
- {
- return new ProgressPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) );
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::setDocumentCounts( const sal_Int32 _nForms, const sal_Int32 _nReports )
- {
- String sText( m_aObjectCount.GetText() );
- sText.SearchAndReplaceAscii( "$forms$", String::CreateFromInt32( _nForms ) );
- sText.SearchAndReplaceAscii( "$reports$", String::CreateFromInt32( _nReports ) );
- m_aObjectCount.SetText( sText );
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::onFinishedSuccessfully()
- {
- m_aMigrationDone.Show();
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::startObject( const ::rtl::OUString& _rObjectName, const ::rtl::OUString& _rCurrentAction, const sal_uInt32 _nRange )
- {
- m_aCurrentObject.SetText( _rObjectName );
- m_aCurrentAction.SetText( _rCurrentAction );
- m_aCurrentProgress.SetRange( _nRange );
- m_aCurrentProgress.SetValue( (sal_uInt32)0 );
-
- // since this is currently called from the main thread, which does not have the chance
- // to re-schedule, we need to explicitly update the display
- m_aCurrentObject.Update();
- m_aCurrentAction.Update();
- Update();
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::setObjectProgressText( const ::rtl::OUString& _rText )
- {
- m_aCurrentAction.SetText( _rText );
- m_aCurrentAction.Update();
- Update();
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::setObjectProgressValue( const sal_uInt32 _nValue )
- {
- m_aCurrentProgress.SetValue( _nValue );
- Update();
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::endObject()
- {
- m_aCurrentAction.SetText( String() );
- m_aCurrentProgress.SetValue( m_aCurrentProgress.GetRange() );
- m_aCurrentAction.Update();
- Update();
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::start( const sal_uInt32 _nOverallRange )
- {
- m_aAllProgress.SetRange( _nOverallRange );
- Update();
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::setOverallProgressText( const ::rtl::OUString& _rText )
- {
- m_aAllProgressText.SetText( _rText );
- Update();
- }
-
- //--------------------------------------------------------------------
- void ProgressPage::setOverallProgressValue( const sal_uInt32 _nValue )
- {
- m_aAllProgress.SetValue( _nValue );
- Update();
- }
-
- //====================================================================
- //= ResultPage
- //====================================================================
- //--------------------------------------------------------------------
- ResultPage::ResultPage( MacroMigrationDialog& _rParentDialog )
- :MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_SUMMARY ) )
- ,m_aChangesLabel( this, MacroMigrationResId( FT_CHANGES_LABEL ) )
- ,m_aChanges ( this, MacroMigrationResId( ED_CHANGES ) )
- ,m_aSuccessful ( MacroMigrationResId( STR_SUCCESSFUL ) )
- ,m_aUnsuccessful( MacroMigrationResId( STR_UNSUCCESSFUL ) )
- {
- FreeResource();
- }
-
- //--------------------------------------------------------------------
- TabPage* ResultPage::Create( ::svt::RoadmapWizard& _rParentDialog )
- {
- return new ResultPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) );
- }
-
- //--------------------------------------------------------------------
- void ResultPage::displayMigrationLog( const bool _bSuccessful, const String& _rSummary )
- {
- m_aChangesLabel.SetText( _bSuccessful ? m_aSuccessful : m_aUnsuccessful );
- m_aChanges.SetText( _rSummary );
-
- // resize m_aChangesLabel and m_aChances as needed for the label text to fit
- Rectangle aOriginalLabelSize( m_aChangesLabel.GetPosPixel(), m_aChangesLabel.GetSizePixel() );
- // assume 3 lines, at most
- Rectangle aNewLabelSize( aOriginalLabelSize );
- aNewLabelSize.Bottom() = aNewLabelSize.Top() + m_aChangesLabel.LogicToPixel( Size( 0, 3*8 ), MAP_APPFONT ).Height();
- TextRectInfo aInfo;
- aNewLabelSize = m_aChangesLabel.GetTextRect( aNewLabelSize, m_aChangesLabel.GetText(), TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK, &aInfo );
- aNewLabelSize.Bottom() = aNewLabelSize.Top() + m_aChangesLabel.LogicToPixel( Size( 0, aInfo.GetLineCount() * 8 ), MAP_APPFONT ).Height();
-
- m_aChangesLabel.SetSizePixel( aNewLabelSize.GetSize() );
-
- long nChangesDiff = aNewLabelSize.GetHeight() - aOriginalLabelSize.GetHeight();
- Size aChangesSize( m_aChanges.GetSizePixel() );
- aChangesSize.Height() -= nChangesDiff;
- m_aChanges.SetSizePixel( aChangesSize );
-
- Point aChangesPos( m_aChanges.GetPosPixel() );
- aChangesPos.Y() += nChangesDiff;
- m_aChanges.SetPosPixel( aChangesPos );
- }
-
-//........................................................................
-} // namespace dbmm
-//........................................................................
+/************************************************************************* + * + * 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: macromigrationpages.cxx,v $ + * $Revision: 1.3.2.4 $ + * + * 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 "dbaccess_helpid.hrc" +#include "dbmm_module.hxx" +#include "dbmm_global.hrc" +#include "macromigration.hrc" +#include "macromigrationpages.hxx" +#include "macromigrationdialog.hxx" + +/** === begin UNO includes === **/ +#include <com/sun/star/frame/XModel.hpp> +/** === end UNO includes === **/ + +#include <tools/urlobj.hxx> +#include <tools/diagnose_ex.h> +#include <vcl/metric.hxx> + +//........................................................................ +namespace dbmm +{ +//........................................................................ + + /** === begin UNO using === **/ + using ::com::sun::star::uno::Reference; + using ::com::sun::star::uno::XInterface; + using ::com::sun::star::uno::UNO_QUERY; + using ::com::sun::star::uno::UNO_QUERY_THROW; + using ::com::sun::star::uno::UNO_SET_THROW; + using ::com::sun::star::uno::Exception; + using ::com::sun::star::uno::RuntimeException; + using ::com::sun::star::uno::Any; + using ::com::sun::star::uno::makeAny; + using ::com::sun::star::uno::Sequence; + using ::com::sun::star::frame::XModel; + /** === end UNO using === **/ + + //==================================================================== + //= MacroMigrationPage + //==================================================================== + //-------------------------------------------------------------------- + MacroMigrationPage::MacroMigrationPage( MacroMigrationDialog& _rParentDialog, const ResId& _rRes ) + :MacroMigrationPage_Base( &_rParentDialog, _rRes ) + ,m_aHeader( this, MacroMigrationResId( FT_HEADER ) ) + { + Font aFont( m_aHeader.GetFont() ); + aFont.SetWeight( WEIGHT_BOLD ); + m_aHeader.SetFont( aFont ); + } + + //-------------------------------------------------------------------- + MacroMigrationPage::~MacroMigrationPage() + { + } + + //-------------------------------------------------------------------- + const MacroMigrationDialog& MacroMigrationPage::getDialog() const + { + return *dynamic_cast< const MacroMigrationDialog* >( GetParent() ); + } + + //-------------------------------------------------------------------- + MacroMigrationDialog& MacroMigrationPage::getDialog() + { + return *dynamic_cast< MacroMigrationDialog* >( GetParent() ); + } + + //==================================================================== + //= PreparationPage + //==================================================================== + //-------------------------------------------------------------------- + PreparationPage::PreparationPage( MacroMigrationDialog& _rParentDialog ) + :MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_PREPARE ) ) + ,m_aIntroduction ( this, MacroMigrationResId( FT_INTRODUCTION ) ) + ,m_aCloseDocError( this, MacroMigrationResId( FT_CLOSE_DOC_ERROR ) ) + { + FreeResource(); + } + + //-------------------------------------------------------------------- + void PreparationPage::showCloseDocsError( bool _bShow ) + { + m_aCloseDocError.Show( _bShow ); + } + + //-------------------------------------------------------------------- + TabPage* PreparationPage::Create( ::svt::RoadmapWizard& _rParentDialog ) + { + return new PreparationPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) ); + } + + //==================================================================== + //= SaveDBDocPage + //==================================================================== + //-------------------------------------------------------------------- + SaveDBDocPage::SaveDBDocPage( MacroMigrationDialog& _rParentDialog ) + :MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_SAVE_DBDOC_AS ) ) + ,m_aExplanation ( this, MacroMigrationResId( FT_EXPLANATION ) ) + ,m_aSaveAsLabel ( this, MacroMigrationResId( FT_SAVE_AS_LABEL ) ) + ,m_aSaveAsLocation ( this, MacroMigrationResId( ED_SAVE_AS_LOCATION ) ) + ,m_aBrowseSaveAsLocation( this, MacroMigrationResId( PB_BROWSE_SAVE_AS_LOCATION ) ) + ,m_aStartMigration ( this, MacroMigrationResId( FT_START_MIGRATION ) ) + ,m_aLocationController( _rParentDialog.getComponentContext(), m_aSaveAsLocation, m_aBrowseSaveAsLocation ) + { + FreeResource(); + + m_aSaveAsLocation.SetModifyHdl( LINK( this, SaveDBDocPage, OnLocationModified ) ); + m_aSaveAsLocation.SetDropDownLineCount( 20 ); + + m_aSaveAsLocation.SetHelpId( HID_MACRO_MIGRATION_BACKUP_LOCATION ); + + impl_updateLocationDependentItems(); + } + + //-------------------------------------------------------------------- + void SaveDBDocPage::impl_updateLocationDependentItems() + { + updateDialogTravelUI(); + m_aStartMigration.Show( m_aSaveAsLocation.GetText().Len() > 0 ); + } + + //-------------------------------------------------------------------- + IMPL_LINK( SaveDBDocPage, OnLocationModified, Edit*, /**/ ) + { + impl_updateLocationDependentItems(); + return 0L; + } + + //-------------------------------------------------------------------- + void SaveDBDocPage::initializePage() + { + OWizardPage::initializePage(); + + try + { + // get the document's current URL + Reference< XModel > xDocument( getDialog().getDocument(), UNO_QUERY_THROW ); + INetURLObject aURLParser( xDocument->getURL() ); + OSL_ENSURE( aURLParser.GetProtocol() != INET_PROT_NOT_VALID, "SaveDBDocPage::initializePage: illegal document URL!" ); + + ::rtl::OUStringBuffer aBaseName( aURLParser.getBase() ); + aBaseName.appendAscii( ".backup" ); + aURLParser.setBase( aBaseName.makeStringAndClear() ); + + m_aLocationController.setURL( aURLParser.GetMainURL( INetURLObject::NO_DECODE ) ); + impl_updateLocationDependentItems(); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + } + + //-------------------------------------------------------------------- + bool SaveDBDocPage::canAdvance() const + { + if ( !MacroMigrationPage::canAdvance() ) + return false; + + return m_aSaveAsLocation.GetText().Len() > 0; + } + + //-------------------------------------------------------------------- + sal_Bool SaveDBDocPage::commitPage( CommitPageReason _eReason ) + { + if ( !MacroMigrationPage::commitPage( _eReason ) ) + return sal_False; + + if ( eTravelBackward == _eReason ) + return sal_True; + + if ( !m_aLocationController.prepareCommit() ) + return sal_False; + + return sal_True; + } + + //-------------------------------------------------------------------- + TabPage* SaveDBDocPage::Create( ::svt::RoadmapWizard& _rParentDialog ) + { + return new SaveDBDocPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) ); + } + + //==================================================================== + //= ProgressPage + //==================================================================== + //-------------------------------------------------------------------- + ProgressPage::ProgressPage( MacroMigrationDialog& _rParentDialog ) + :MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_MIGRATE ) ) + ,m_aObjectCount ( this, MacroMigrationResId( FT_OBJECT_COUNT ) ) + ,m_aCurrentObjectLabel ( this, MacroMigrationResId( FT_CURRENT_OBJECT_LABEL ) ) + ,m_aCurrentObject ( this, MacroMigrationResId( FT_CURRENT_OBJECT ) ) + ,m_aCurrentActionLabel ( this, MacroMigrationResId( FT_CURRENT_PROGRESS_LABEL ) ) + ,m_aCurrentAction ( this, MacroMigrationResId( FT_CURRENT_PROGRESS ) ) + ,m_aCurrentProgress ( this, MacroMigrationResId( WND_CURRENT_PROGRESS ) ) + ,m_aAllProgressLabel ( this, MacroMigrationResId( FT_ALL_PROGRESS_LABEL ) ) + ,m_aAllProgressText ( this, MacroMigrationResId( FT_OBJECT_COUNT_PROGRESS ) ) + ,m_aAllProgress ( this, MacroMigrationResId( WND_ALL_PROGRESS ) ) + ,m_aMigrationDone ( this, MacroMigrationResId( FT_MIGRATION_DONE ) ) + { + FreeResource(); + } + + //-------------------------------------------------------------------- + TabPage* ProgressPage::Create( ::svt::RoadmapWizard& _rParentDialog ) + { + return new ProgressPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) ); + } + + //-------------------------------------------------------------------- + void ProgressPage::setDocumentCounts( const sal_Int32 _nForms, const sal_Int32 _nReports ) + { + String sText( m_aObjectCount.GetText() ); + sText.SearchAndReplaceAscii( "$forms$", String::CreateFromInt32( _nForms ) ); + sText.SearchAndReplaceAscii( "$reports$", String::CreateFromInt32( _nReports ) ); + m_aObjectCount.SetText( sText ); + } + + //-------------------------------------------------------------------- + void ProgressPage::onFinishedSuccessfully() + { + m_aMigrationDone.Show(); + } + + //-------------------------------------------------------------------- + void ProgressPage::startObject( const ::rtl::OUString& _rObjectName, const ::rtl::OUString& _rCurrentAction, const sal_uInt32 _nRange ) + { + m_aCurrentObject.SetText( _rObjectName ); + m_aCurrentAction.SetText( _rCurrentAction ); + m_aCurrentProgress.SetRange( _nRange ); + m_aCurrentProgress.SetValue( (sal_uInt32)0 ); + + // since this is currently called from the main thread, which does not have the chance + // to re-schedule, we need to explicitly update the display + m_aCurrentObject.Update(); + m_aCurrentAction.Update(); + Update(); + } + + //-------------------------------------------------------------------- + void ProgressPage::setObjectProgressText( const ::rtl::OUString& _rText ) + { + m_aCurrentAction.SetText( _rText ); + m_aCurrentAction.Update(); + Update(); + } + + //-------------------------------------------------------------------- + void ProgressPage::setObjectProgressValue( const sal_uInt32 _nValue ) + { + m_aCurrentProgress.SetValue( _nValue ); + Update(); + } + + //-------------------------------------------------------------------- + void ProgressPage::endObject() + { + m_aCurrentAction.SetText( String() ); + m_aCurrentProgress.SetValue( m_aCurrentProgress.GetRange() ); + m_aCurrentAction.Update(); + Update(); + } + + //-------------------------------------------------------------------- + void ProgressPage::start( const sal_uInt32 _nOverallRange ) + { + m_aAllProgress.SetRange( _nOverallRange ); + Update(); + } + + //-------------------------------------------------------------------- + void ProgressPage::setOverallProgressText( const ::rtl::OUString& _rText ) + { + m_aAllProgressText.SetText( _rText ); + Update(); + } + + //-------------------------------------------------------------------- + void ProgressPage::setOverallProgressValue( const sal_uInt32 _nValue ) + { + m_aAllProgress.SetValue( _nValue ); + Update(); + } + + //==================================================================== + //= ResultPage + //==================================================================== + //-------------------------------------------------------------------- + ResultPage::ResultPage( MacroMigrationDialog& _rParentDialog ) + :MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_SUMMARY ) ) + ,m_aChangesLabel( this, MacroMigrationResId( FT_CHANGES_LABEL ) ) + ,m_aChanges ( this, MacroMigrationResId( ED_CHANGES ) ) + ,m_aSuccessful ( MacroMigrationResId( STR_SUCCESSFUL ) ) + ,m_aUnsuccessful( MacroMigrationResId( STR_UNSUCCESSFUL ) ) + { + FreeResource(); + } + + //-------------------------------------------------------------------- + TabPage* ResultPage::Create( ::svt::RoadmapWizard& _rParentDialog ) + { + return new ResultPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) ); + } + + //-------------------------------------------------------------------- + void ResultPage::displayMigrationLog( const bool _bSuccessful, const String& _rSummary ) + { + m_aChangesLabel.SetText( _bSuccessful ? m_aSuccessful : m_aUnsuccessful ); + m_aChanges.SetText( _rSummary ); + + // resize m_aChangesLabel and m_aChances as needed for the label text to fit + Rectangle aOriginalLabelSize( m_aChangesLabel.GetPosPixel(), m_aChangesLabel.GetSizePixel() ); + // assume 3 lines, at most + Rectangle aNewLabelSize( aOriginalLabelSize ); + aNewLabelSize.Bottom() = aNewLabelSize.Top() + m_aChangesLabel.LogicToPixel( Size( 0, 3*8 ), MAP_APPFONT ).Height(); + TextRectInfo aInfo; + aNewLabelSize = m_aChangesLabel.GetTextRect( aNewLabelSize, m_aChangesLabel.GetText(), TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK, &aInfo ); + aNewLabelSize.Bottom() = aNewLabelSize.Top() + m_aChangesLabel.LogicToPixel( Size( 0, aInfo.GetLineCount() * 8 ), MAP_APPFONT ).Height(); + + m_aChangesLabel.SetSizePixel( aNewLabelSize.GetSize() ); + + long nChangesDiff = aNewLabelSize.GetHeight() - aOriginalLabelSize.GetHeight(); + Size aChangesSize( m_aChanges.GetSizePixel() ); + aChangesSize.Height() -= nChangesDiff; + m_aChanges.SetSizePixel( aChangesSize ); + + Point aChangesPos( m_aChanges.GetPosPixel() ); + aChangesPos.Y() += nChangesDiff; + m_aChanges.SetPosPixel( aChangesPos ); + } + +//........................................................................ +} // namespace dbmm +//........................................................................ diff --git a/dbaccess/source/ui/control/FieldDescControl.cxx b/dbaccess/source/ui/control/FieldDescControl.cxx index 4b008bcc3261..fad75416bb3c 100644 --- a/dbaccess/source/ui/control/FieldDescControl.cxx +++ b/dbaccess/source/ui/control/FieldDescControl.cxx @@ -1,2176 +1,2176 @@ -/*************************************************************************
- *
- * 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: FieldDescControl.cxx,v $
- * $Revision: 1.49.68.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"
-
-#define ITEMID_HORJUSTIFY SID_ATTR_ALIGN_HOR_JUSTIFY
-#define ITEMID_VERJUSTIFY SID_ATTR_ALIGN_VER_JUSTIFY
-//#define ITEMID_ORIENTATION SID_ATTR_ALIGN_ORIENTATION
-#define ITEMID_LINEBREAK SID_ATTR_ALIGN_LINEBREAK
-#define ITEMID_MARGIN SID_ATTR_ALIGN_MARGIN
-
-#ifndef DBAUI_FIELDDESCRIPTIONCONTROL_HXX
-#include "FieldDescControl.hxx"
-#endif
-#ifndef DBAUI_FIELDCONTROLS_HXX
-#include "FieldControls.hxx"
-#endif
-#ifndef _ZFORLIST_HXX //autogen
-#define _ZFORLIST_DECLARE_TABLE // ohne das bekomme ich einen Compiler-Fehler in <svtools/zforlist.hxx>
-#include <svtools/zforlist.hxx>
-#endif
-#ifndef _TOOLS_DEBUG_HXX
-#include <tools/debug.hxx>
-#endif
-#ifndef DBAUI_TABLEDESIGNHELPBAR_HXX
-#include "TableDesignHelpBar.hxx"
-#endif
-#ifndef _SV_SCRBAR_HXX
-#include <vcl/scrbar.hxx>
-#endif
-#ifndef _SV_BUTTON_HXX
-#include <vcl/button.hxx>
-#endif
-#ifndef _SVX_NUMFMTSH_HXX
-#include <svx/numfmtsh.hxx>
-#endif
-#ifndef _DBU_CONTROL_HRC_
-#include "dbu_control.hrc"
-#endif
-#ifndef _DBU_TBL_HRC_
-#include "dbu_tbl.hrc"
-#endif
-
-#ifndef _SV_SVAPP_HXX
-#include <vcl/svapp.hxx>
-#endif
-#ifndef _SV_FIXED_HXX
-#include <vcl/fixed.hxx>
-#endif
-#ifndef _SV_MSGBOX_HXX
-#include <vcl/msgbox.hxx>
-#endif
-#ifndef _VECTOR_
-#include <vector>
-#endif
-#ifndef DBAUI_FIELDDESCRIPTIONS_HXX
-#include "FieldDescriptions.hxx"
-#endif
-#ifndef _SFXITEMPOOL_HXX
-#include <svtools/itempool.hxx>
-#endif
-#ifndef DBAUI_SBATTRDLG_HXX
-#include "dlgattr.hxx"
-#endif
-#ifndef _SVX_SVXIDS_HRC
-#include <svx/svxids.hrc>
-#endif
-#ifndef _SVX_ALGITEM_HXX
-#include <svx/algitem.hxx>
-#endif
-#ifndef _SFXRNGITEM_HXX
-#include <svtools/rngitem.hxx>
-#endif
-#ifndef _SFXINTITEM_HXX
-#include <svtools/intitem.hxx>
-#endif
-#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#endif
-#ifndef _COM_SUN_STAR_UTIL_NUMBERFORMAT_HPP_
-#include <com/sun/star/util/NumberFormat.hpp>
-#endif
-#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATPREVIEWER_HPP_
-#include <com/sun/star/util/XNumberFormatPreviewer.hpp>
-#endif
-#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTYPES_HPP_
-#include <com/sun/star/util/XNumberFormatTypes.hpp>
-#endif
-#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
-#include <com/sun/star/beans/XPropertySet.hpp>
-#endif
-#ifndef DBAUI_ENUMTYPES_HXX
-#include "QEnumTypes.hxx"
-#endif
-#ifndef _DBA_DBACCESS_HELPID_HRC_
-#include "dbaccess_helpid.hrc"
-#endif
-#ifndef _NUMUNO_HXX
-#include <svtools/numuno.hxx>
-#endif
-#ifndef _CONNECTIVITY_DBTOOLS_HXX_
-#include <connectivity/dbtools.hxx>
-#endif
-#ifndef _COMPHELPER_NUMBERS_HXX_
-#include <comphelper/numbers.hxx>
-#endif
-#ifndef DBAUI_TOOLS_HXX
-#include "UITools.hxx"
-#endif
-#include <memory>
-#ifndef _DBHELPER_DBCONVERSION_HXX_
-#include <connectivity/dbconversion.hxx>
-#endif
-#ifndef _TRANSFER_HXX
-#include <svtools/transfer.hxx>
-#endif
-
-using namespace dbaui;
-using namespace dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::util;
-
-//==================================================================
-
-// fuer die Controls auf der OFieldDescGenPage
-#define CONTROL_SPACING_X 18 // 6
-#define CONTROL_SPACING_Y 4
-#define CONTROL_HEIGHT 10
-#define CONTROL_WIDTH_1 160 // 100
-#define CONTROL_WIDTH_2 100 // 60
-#define CONTROL_WIDTH_3 250
-#define CONTROL_WIDTH_4 (CONTROL_WIDTH_3 - 20 - 5)
-
-#define SBA_DEF_RANGEFORMAT (100 + 143) // RangeItem
-#define SBA_DEF_FMTVALUE (100 + 144) // SfxULONG, Format
-#define SBA_ATTR_ALIGN_HOR_JUSTIFY (100 + 145) // SvxHorJustifyItem
-
-#define HSCROLL_STEP 20
-
-
-namespace
-{
- // -----------------------------------------------------------------------------
- double checkDoubleForDateFormat(double _nValue,sal_Int32 _nFormatKey,const Reference< ::com::sun::star::util::XNumberFormatter>& _xNumberFormatter)
- {
- double nValue = _nValue;
- sal_Int32 nNumberFormat = ::comphelper::getNumberFormatType(_xNumberFormatter,_nFormatKey);
- if( (nNumberFormat & ::com::sun::star::util::NumberFormat::DATE) == ::com::sun::star::util::NumberFormat::DATE
- || (nNumberFormat & ::com::sun::star::util::NumberFormat::DATETIME) == ::com::sun::star::util::NumberFormat::DATETIME )
- {
- nValue = DBTypeConversion::toStandardDbDate(DBTypeConversion::getNULLDate(_xNumberFormatter->getNumberFormatsSupplier()),nValue);
- }
-
- return nValue;
- }
- // -----------------------------------------------------------------------------
-}
-
-//==================================================================
-// class OFieldDescControl
-//==================================================================
-
-DBG_NAME(OFieldDescControl)
-
-//==================================================================
-OFieldDescControl::OFieldDescControl( Window* pParent, const ResId& rResId, OTableDesignHelpBar* pHelpBar)
- :TabPage( pParent, rResId )
- ,pHelp( pHelpBar )
- ,pLastFocusWindow(NULL)
- ,m_pActFocusWindow(NULL)
- ,pDefaultText(NULL)
- ,pRequiredText(NULL)
- ,pAutoIncrementText(NULL)
- ,pTextLenText(NULL)
- ,pNumTypeText(NULL)
- ,pLengthText(NULL)
- ,pScaleText(NULL)
- ,pFormatText(NULL)
- ,pBoolDefaultText(NULL)
- ,m_pColumnNameText(NULL)
- ,m_pTypeText(NULL)
- ,m_pAutoIncrementValueText(NULL)
- ,pRequired(NULL)
- ,pNumType(NULL)
- ,pAutoIncrement(NULL)
- ,pDefault(NULL)
- ,pTextLen(NULL)
- ,pLength(NULL)
- ,pScale(NULL)
- ,pFormatSample(NULL)
- ,pBoolDefault(NULL)
- ,m_pColumnName(NULL)
- ,m_pType(NULL)
- ,m_pAutoIncrementValue(NULL)
- ,pFormat(NULL)
- ,m_pVertScroll( NULL )
- ,m_pHorzScroll( NULL )
- ,m_pPreviousType()
- ,nCurChildId(1)
- ,m_nPos(-1)
- ,aYes(ModuleRes(STR_VALUE_YES))
- ,aNo(ModuleRes(STR_VALUE_NO))
- ,m_nOldVThumb( 0 )
- ,m_nOldHThumb( 0 )
- ,m_nWidth(50)
- ,nDelayedGrabFocusEvent(0)
- ,m_bAdded(sal_False)
- ,m_bRightAligned(false)
- ,pActFieldDescr(NULL)
-{
- DBG_CTOR(OFieldDescControl,NULL);
-
- m_pVertScroll = new ScrollBar(this, WB_VSCROLL | WB_REPEAT | WB_DRAG);
- m_pHorzScroll = new ScrollBar(this, WB_HSCROLL | WB_REPEAT | WB_DRAG);
- m_pVertScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll));
- m_pHorzScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll));
- m_pVertScroll->Show();
- m_pHorzScroll->Show();
-
- m_pVertScroll->EnableClipSiblings();
- m_pHorzScroll->EnableClipSiblings();
-
- m_pVertScroll->SetLineSize(1);
- m_pVertScroll->SetPageSize(1);
- m_pHorzScroll->SetLineSize(1);
- m_pHorzScroll->SetPageSize(1);
-
- m_nOldVThumb = m_nOldHThumb = 0;
-}
-//------------------------------------------------------------------------------
-OFieldDescControl::OFieldDescControl( Window* pParent, OTableDesignHelpBar* pHelpBar )
- :TabPage( pParent, WB_3DLOOK | WB_DIALOGCONTROL )
- ,pHelp( pHelpBar )
- ,pLastFocusWindow(NULL)
- ,m_pActFocusWindow(NULL)
- ,pDefaultText(NULL)
- ,pRequiredText(NULL)
- ,pAutoIncrementText(NULL)
- ,pTextLenText(NULL)
- ,pNumTypeText(NULL)
- ,pLengthText(NULL)
- ,pScaleText(NULL)
- ,pFormatText(NULL)
- ,pBoolDefaultText(NULL)
- ,m_pColumnNameText(NULL)
- ,m_pTypeText(NULL)
- ,m_pAutoIncrementValueText(NULL)
- ,pRequired(NULL)
- ,pNumType(NULL)
- ,pAutoIncrement(NULL)
- ,pDefault(NULL)
- ,pTextLen(NULL)
- ,pLength(NULL)
- ,pScale(NULL)
- ,pFormatSample(NULL)
- ,pBoolDefault(NULL)
- ,m_pColumnName(NULL)
- ,m_pType(NULL)
- ,m_pAutoIncrementValue(NULL)
- ,pFormat(NULL)
- ,m_pVertScroll( NULL )
- ,m_pHorzScroll( NULL )
- ,m_pPreviousType()
- ,nCurChildId(1)
- ,m_nPos(-1)
- ,aYes(ModuleRes(STR_VALUE_YES))
- ,aNo(ModuleRes(STR_VALUE_NO))
- ,m_nOldVThumb( 0 )
- ,m_nOldHThumb( 0 )
- ,m_nWidth(50)
- ,nDelayedGrabFocusEvent(0)
- ,m_bAdded(sal_False)
- ,m_bRightAligned(false)
- ,pActFieldDescr(NULL)
-{
- DBG_CTOR(OFieldDescControl,NULL);
-
- m_pVertScroll = new ScrollBar(this, WB_VSCROLL | WB_REPEAT | WB_DRAG);
- m_pHorzScroll = new ScrollBar(this, WB_HSCROLL | WB_REPEAT | WB_DRAG);
- m_pVertScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll));
- m_pHorzScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll));
- m_pVertScroll->Show();
- m_pHorzScroll->Show();
-
- m_pVertScroll->EnableClipSiblings();
- m_pHorzScroll->EnableClipSiblings();
-
- m_pVertScroll->SetLineSize(1);
- m_pVertScroll->SetPageSize(1);
- m_pHorzScroll->SetLineSize(1);
- m_pHorzScroll->SetPageSize(1);
-
- m_nOldVThumb = m_nOldHThumb = 0;
-
-}
-
-//------------------------------------------------------------------------------
-OFieldDescControl::~OFieldDescControl()
-{
- DBG_DTOR(OFieldDescControl,NULL);
-
- {
- ::std::auto_ptr<Window> aTemp(m_pVertScroll);
- m_pVertScroll = NULL;
- }
- {
- ::std::auto_ptr<Window> aTemp(m_pHorzScroll);
- m_pHorzScroll = NULL;
- }
- if ( m_bAdded )
- ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow));
- pLastFocusWindow = NULL;
-
- //////////////////////////////////////////////////////////////////////
- // Childs zerstoeren
- DeactivateAggregate( tpDefault );
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpNumType );
- DeactivateAggregate( tpScale );
- DeactivateAggregate( tpLength );
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpAutoIncrement );
- DeactivateAggregate( tpBoolDefault );
- DeactivateAggregate( tpColumnName );
- DeactivateAggregate( tpType );
- DeactivateAggregate( tpAutoIncrementValue );
-
- if(nDelayedGrabFocusEvent)
- Application::RemoveUserEvent(nDelayedGrabFocusEvent);
-}
-
-//------------------------------------------------------------------------------
-String OFieldDescControl::BoolStringPersistent(const String& rUIString) const
-{
- static String aZero('0');
- static String aOne('1');
-
- if (rUIString == aNo)
- return aZero;
- if (rUIString == aYes)
- return aOne;
- return String();
-}
-
-//------------------------------------------------------------------------------
-String OFieldDescControl::BoolStringUI(const String& rPersistentString) const
-{
- static String aZero('0');
- static String aOne('1');
- static String aNone(ModuleRes(STR_VALUE_NONE));
-
- // FS - 66161 - 14.05.1999 - aeltere Versionen haben eventuell einen sprachabhaengigen String als Default gespeichert
- if (rPersistentString.Equals(aYes) || rPersistentString.Equals(aNo))
- return rPersistentString;
-
- if (rPersistentString == aZero)
- return aNo;
- if (rPersistentString == aOne)
- return aYes;
-
- return aNone;
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::Init()
-{
- Reference< ::com::sun::star::util::XNumberFormatter > xFormatter = GetFormatter();
- ::dbaui::setEvalDateFormatForFormatter(xFormatter);
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(OFieldDescControl, OnScroll, ScrollBar*, /*pBar*/)
-{
- ScrollAllAggregates();
- return 0;
-}
-// -----------------------------------------------------------------------------
-namespace
-{
- void getMaxXPosition(Window* _pWindow,long& _rnMaxXPosition)
- {
- if (_pWindow)
- {
- long nTemp = _pWindow->GetSizePixel().Width() + _pWindow->GetPosPixel().X();
- _rnMaxXPosition = ::std::max(_rnMaxXPosition, nTemp);
- }
- }
-}
-//------------------------------------------------------------------------------
-void OFieldDescControl::CheckScrollBars()
-{
- // ein paar Berechnungen zur neuen Position der ScrollBars
- Size szOverallSize = GetSizePixel();
- long nHScrollHeight = m_pHorzScroll->GetSizePixel().Height();
- long nVScrollWidth = m_pVertScroll->GetSizePixel().Width();
-
- long nNewHWidth = szOverallSize.Width() - nVScrollWidth;
- long nNewVHeight = szOverallSize.Height() - nHScrollHeight;
-
- sal_Bool bNeedHScrollBar(sal_False), bNeedVScrollBar(sal_False);
-
- // die Bereiche anpassen
- // brauche ich ScrollBars eigentlich ?
- // horizontal :
- long lMaxXPosition = 0;
- Control* ppAggregates[] = { pRequired, pNumType, pAutoIncrement, pDefault, pTextLen, pLength, pScale, pFormat, m_pColumnName, m_pType,m_pAutoIncrementValue};
- for (sal_uInt16 i=0; i<sizeof(ppAggregates)/sizeof(ppAggregates[0]); ++i)
- getMaxXPosition(ppAggregates[i],lMaxXPosition);
-
- if (m_pHorzScroll)
- lMaxXPosition += m_pHorzScroll->GetThumbPos() * HSCROLL_STEP;
-
- long lMaxXAvailable = szOverallSize.Width();
- bNeedHScrollBar = lMaxXPosition > lMaxXAvailable;
- // aendert sich vielleicht noch
-
- // vertikal
- // wieviel Controls habe ich
- sal_uInt16 nActive = CountActiveAggregates();
- // welches ist das letzte, was ganz drauf passt ?
- sal_uInt16 nLastVisible;
- const sal_Int32 nControlHeight = LogicToPixel(Size(0, CONTROL_HEIGHT),MAP_APPFONT).Height();
- const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height();
- if (bNeedHScrollBar)
- nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y - nHScrollHeight) / (nControl_Spacing_y + nControlHeight));
- else
- nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y) / (nControl_Spacing_y + nControlHeight));
- bNeedVScrollBar = nActive>nLastVisible;
-
- if (bNeedVScrollBar)
- {
- // in die urspruengliche Berechnung von lMaxXAvailable ist nicht mit eingegangen, dass ich eine VScrollBar habe, also muss ich
- // das nachholen
- lMaxXAvailable -= nVScrollWidth;
- if (!bNeedHScrollBar && (lMaxXPosition > lMaxXAvailable))
- {
- // durch die vertikale brauche ich jetzt ploetzlich doch eine horizontale
- bNeedHScrollBar = sal_True;
- // nLastVisible anpassen
- nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y - nHScrollHeight) / (nControl_Spacing_y + nControlHeight));
- // bNeedVScrollBar aendert sich nicht : es ist schon auf sal_True und nLastVisible wird hoechstens kleiner
- }
- }
-
- // jetzt kann ich sie wirklich positionieren und ihre Parameter setzen
- if (bNeedVScrollBar)
- {
- m_pVertScroll->Show();
- m_pVertScroll->SetRangeMax(nActive - nLastVisible);
-// m_pVertScroll->SetThumbPos(0);
-
- m_pVertScroll->SetPosSizePixel( Point(nNewHWidth, 0), Size(nVScrollWidth, szOverallSize.Height()) );
- }
- else
- {
- m_pVertScroll->Hide();
- m_pVertScroll->SetRangeMax(0);
- m_pVertScroll->SetThumbPos(0);
- }
-
- if (bNeedHScrollBar)
- {
- m_pHorzScroll->Show();
- m_pHorzScroll->SetRangeMax((lMaxXPosition - lMaxXAvailable + HSCROLL_STEP - 1 )/HSCROLL_STEP);
-// m_pHorzScroll->SetThumbPos(0);
-
- m_pHorzScroll->SetPosSizePixel( Point(0, nNewVHeight), Size(bNeedVScrollBar ? nNewHWidth : szOverallSize.Width(), nHScrollHeight) );
- }
- else
- {
- m_pHorzScroll->Hide();
- m_pHorzScroll->SetRangeMax(0);
- m_pHorzScroll->SetThumbPos(0);
- }
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::Resize()
-{
- CheckScrollBars();
- ScrollAllAggregates();
-}
-
-//------------------------------------------------------------------------------
-inline void OFieldDescControl::ScrollAggregate(Control* pText, Control* pInput, Control* pButton, long nDeltaX, long nDeltaY)
-{
- if (!pText)
- return;
- pText->SetPosPixel(pText->GetPosPixel() + Point(nDeltaX, nDeltaY));
- pInput->SetPosPixel(pInput->GetPosPixel() + Point(nDeltaX, nDeltaY));
- if (pButton)
- pButton->SetPosPixel(pButton->GetPosPixel() + Point(nDeltaX, nDeltaY));
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::ScrollAllAggregates()
-{
- long nDeltaX = 0, nDeltaY = 0;
- if (m_nOldHThumb != m_pHorzScroll->GetThumbPos())
- {
- nDeltaX = (m_nOldHThumb - m_pHorzScroll->GetThumbPos()) * HSCROLL_STEP;
- m_nOldHThumb = m_pHorzScroll->GetThumbPos();
- }
-
- if (m_nOldVThumb != m_pVertScroll->GetThumbPos())
- {
- const sal_Int32 nControlHeight = LogicToPixel(Size(0, CONTROL_HEIGHT),MAP_APPFONT).Height();
- const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height();
- nDeltaY = (m_nOldVThumb - m_pVertScroll->GetThumbPos()) * (nControl_Spacing_y + nControlHeight);
- m_nOldVThumb = m_pVertScroll->GetThumbPos();
- }
-
- if (nDeltaX || nDeltaY)
- {
- Control* ppAggregates[] = { pRequired, pNumType
- , pAutoIncrement, pDefault
- , pTextLen, pLength
- , pScale, m_pColumnName
- , m_pType, m_pAutoIncrementValue};
- Control* ppAggregatesText[] = { pRequiredText, pNumTypeText
- , pAutoIncrementText, pDefaultText
- , pTextLenText, pLengthText
- , pScaleText, m_pColumnNameText
- , m_pTypeText, m_pAutoIncrementValueText};
- OSL_ENSURE(sizeof(ppAggregates)/sizeof(ppAggregates[0]) == sizeof(ppAggregatesText)/sizeof(ppAggregatesText[0]),"Lists are not identical!");
-
- for (sal_uInt16 i=0; i<sizeof(ppAggregates)/sizeof(ppAggregates[0]); ++i)
- ScrollAggregate(ppAggregatesText[i],ppAggregates[i],NULL,nDeltaX, nDeltaY);
-
- ScrollAggregate(pFormatText,pFormatSample,pFormat,nDeltaX, nDeltaY);
- }
-}
-
-//------------------------------------------------------------------------------
-sal_uInt16 OFieldDescControl::CountActiveAggregates() const
-{
- Control* ppAggregates[] = { pRequired, pNumType, pAutoIncrement, pDefault, pTextLen, pLength, pScale, pFormat, m_pColumnName, m_pType,m_pAutoIncrementValue};
- sal_uInt16 nVisibleAggregates = 0;
- for (sal_uInt16 i=0; i<sizeof(ppAggregates)/sizeof(ppAggregates[0]); ++i)
- if (ppAggregates[i])
- ++nVisibleAggregates;
- return nVisibleAggregates;
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::SetReadOnly( sal_Bool bReadOnly )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Controls enablen/disablen
- Control* ppAggregates[] = { pRequired, pNumType
- , pAutoIncrement, pDefault
- , pTextLen, pLength
- , pScale, m_pColumnName
- , m_pType, m_pAutoIncrementValue
- , pFormat};
- Control* ppAggregatesText[] = { pRequiredText, pNumTypeText
- , pAutoIncrementText, pDefaultText
- , pTextLenText, pLengthText
- , pScaleText, m_pColumnNameText
- , m_pTypeText, m_pAutoIncrementValueText
- , pFormatText};
-
- OSL_ENSURE(sizeof(ppAggregates)/sizeof(ppAggregates[0]) == sizeof(ppAggregatesText)/sizeof(ppAggregatesText[0]),"Lists are not identical!");
-
- for (sal_uInt16 i=0; i<sizeof(ppAggregates)/sizeof(ppAggregates[0]); ++i)
- {
- if ( ppAggregatesText[i] )
- ppAggregatesText[i]->Enable( !bReadOnly );
- if ( ppAggregates[i] )
- ppAggregates[i]->Enable( !bReadOnly );
- }
-}
-
-//------------------------------------------------------------------------------
-String OFieldDescControl::GetControlText( sal_uInt16 nControlId )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Texte der Controls auslesen
- switch( nControlId )
- {
- case FIELD_PROPERTY_BOOL_DEFAULT:
- if (pBoolDefault)
- return pBoolDefault->GetSelectEntry();
- break;
- case FIELD_PROPERTY_DEFAULT:
- if (pDefault)
- return pDefault->GetText();
- break;
- case FIELD_PROPERTY_REQUIRED:
- if (pRequired)
- return pRequired->GetSelectEntry();
- break;
- case FIELD_PROPERTY_TEXTLEN:
- if (pTextLen)
- return String::CreateFromInt64(pTextLen->GetValue());
- case FIELD_PROPERTY_NUMTYPE:
- if (pNumType)
- return pNumType->GetSelectEntry();
- break;
- case FIELD_PROPERTY_AUTOINC:
- if (pAutoIncrement)
- return pAutoIncrement->GetSelectEntry();
- break;
- case FIELD_PROPERTY_LENGTH:
- if (pLength)
- return pLength->GetText();
- break;
- case FIELD_PROPERTY_SCALE:
- if (pScale)
- return pScale->GetText();
- break;
- case FIELD_PROPERTY_FORMAT:
- if (pFormatSample)
- return pFormatSample->GetText();
- break;
- case FIELD_PRPOERTY_COLUMNNAME:
- if(m_pColumnName)
- return m_pColumnName->GetText();
- case FIELD_PRPOERTY_TYPE:
- if(m_pType)
- return m_pType->GetSelectEntry();
- break;
- case FIELD_PRPOERTY_AUTOINCREMENT:
- if(m_pAutoIncrementValue)
- return m_pAutoIncrementValue->GetText();
- }
-
- return String();
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::SetControlText( sal_uInt16 nControlId, const String& rText )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Texte der Controls setzen
- switch( nControlId )
- {
- case FIELD_PROPERTY_BOOL_DEFAULT:
- if (pBoolDefault)
- {
- String sOld = pBoolDefault->GetSelectEntry();
- pBoolDefault->SelectEntry(rText);
- if (!sOld.Equals(rText))
- LINK(this, OFieldDescControl, ChangeHdl).Call(pBoolDefault);
- }
- break;
- case FIELD_PROPERTY_DEFAULT:
- if (pDefault)
- {
- pDefault->SetText(rText);
- UpdateFormatSample(pActFieldDescr);
- }
- break;
-
- case FIELD_PROPERTY_REQUIRED:
- if (pRequired)
- pRequired->SelectEntry(rText);
- break;
-
-
- case FIELD_PROPERTY_TEXTLEN:
- if (pTextLen)
- pTextLen->SetText(rText);
- break;
-
- case FIELD_PROPERTY_NUMTYPE:
- if (pNumType)
- pNumType->SelectEntry(rText);
- break;
-
- case FIELD_PROPERTY_AUTOINC:
- if (pAutoIncrement)
- {
- String sOld = pAutoIncrement->GetSelectEntry();
- pAutoIncrement->SelectEntry(rText);
- if (!sOld.Equals(rText))
- LINK(this, OFieldDescControl, ChangeHdl).Call(pAutoIncrement);
- }
- break;
-
- case FIELD_PROPERTY_LENGTH:
- if (pLength)
- pLength->SetText(rText);
- break;
-
- case FIELD_PROPERTY_SCALE:
- if (pScale)
- pScale->SetText(rText);
- break;
-
- case FIELD_PROPERTY_FORMAT:
- if (pActFieldDescr)
- UpdateFormatSample(pActFieldDescr);
- break;
- case FIELD_PRPOERTY_COLUMNNAME:
- if(m_pColumnName)
- m_pColumnName->SetText(rText);
- break;
- case FIELD_PRPOERTY_TYPE:
- if(m_pType)
- m_pType->SelectEntry(rText);
- break;
- case FIELD_PRPOERTY_AUTOINCREMENT:
- if(m_pAutoIncrementValue)
- m_pAutoIncrementValue->SetText(rText);
- break;
- }
-}
-
-//------------------------------------------------------------------------
-IMPL_LINK( OFieldDescControl, FormatClickHdl, Button *, /*pButton*/ )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Temporaere Column erzeugen, mit der Datenaustausch mit Dialog erfolgt
- if( !pActFieldDescr )
- return 0;
-
- sal_Int32 nOldFormatKey(pActFieldDescr->GetFormatKey());
- SvxCellHorJustify rOldJustify = pActFieldDescr->GetHorJustify();
- Reference< XNumberFormatsSupplier > xSupplier = GetFormatter()->getNumberFormatsSupplier();
- SvNumberFormatsSupplierObj* pSupplierImpl = SvNumberFormatsSupplierObj::getImplementation( xSupplier );
-
- SvNumberFormatter* pFormatter = pSupplierImpl->GetNumberFormatter();
- sal_uInt16 nFlags;
- if(::dbaui::callColumnFormatDialog(this,pFormatter,pActFieldDescr->GetType(),nOldFormatKey,rOldJustify,nFlags,sal_True))
- {
- sal_Bool bModified = sal_False;
- if(nOldFormatKey != pActFieldDescr->GetFormatKey())
- {
- pActFieldDescr->SetFormatKey( nOldFormatKey );
- bModified = sal_True;
- }
- if(rOldJustify != pActFieldDescr->GetHorJustify())
- {
- pActFieldDescr->SetHorJustify( rOldJustify );
- bModified = sal_True;
- }
-
- if(bModified)
- {
- SetModified(sal_True);
- UpdateFormatSample(pActFieldDescr);
- }
- }
- return 0;
-}
-
-// -----------------------------------------------------------------------
-void OFieldDescControl::SetModified(sal_Bool /*bModified*/)
-{
-}
-//------------------------------------------------------------------------
-IMPL_LINK( OFieldDescControl, ChangeHdl, ListBox *, pListBox )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- if ( !pActFieldDescr )
- return 0;
-
- if ( pListBox->GetSavedValue() != pListBox->GetSelectEntryPos() )
- SetModified(sal_True);
-
- // Sonderbehandlund f"ur Bool Felder
- if(pListBox == pRequired && pBoolDefault )
- {
- // wenn pRequired auf sal_True gesetzt ist, dann darf das sal_Bool Feld nicht den Eintrag <<keiner>> besitzen
- String sDef = BoolStringUI(::comphelper::getString(pActFieldDescr->GetControlDefault()));
-
- if(pRequired->GetSelectEntryPos() == 0) // JA
- {
- pBoolDefault->RemoveEntry(String(ModuleRes(STR_VALUE_NONE)));
- if (!sDef.Equals(aYes) && !sDef.Equals(aNo))
- pBoolDefault->SelectEntryPos(1); // nein als Default
- else
- pBoolDefault->SelectEntry(sDef);
- }
- else if(pBoolDefault->GetEntryCount() < 3)
- {
- pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE)));
- pBoolDefault->SelectEntry(sDef);
- }
- }
-
- // nur fuer AutoIncrement eine Sonderbehandlung
- if (pListBox == pAutoIncrement)
- {
- if(pListBox->GetSelectEntryPos() == 1)
- { // no
- DeactivateAggregate( tpAutoIncrementValue );
- if(pActFieldDescr->IsPrimaryKey())
- DeactivateAggregate( tpRequired );
- else if( pActFieldDescr->getTypeInfo()->bNullable )
- {
- ActivateAggregate( tpRequired );
- if(pRequired)
- {
- if( pActFieldDescr->IsNullable() )
- pRequired->SelectEntryPos( 1 ); // no
- else
- pRequired->SelectEntryPos( 0 ); // yes
- }
- }
- ActivateAggregate( tpDefault );
- }
- else
- {
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpDefault );
- ActivateAggregate( tpAutoIncrementValue );
- }
- // und jetzt alle nach oben schieben
- ArrangeAggregates();
- }
-
- if(pListBox == m_pType)
- {
- TOTypeInfoSP pTypeInfo = getTypeInfo(m_pType->GetSelectEntryPos());
- pActFieldDescr->FillFromTypeInfo(pTypeInfo,sal_True,sal_False); // SetType(pTypeInfo);
-
- DisplayData(pActFieldDescr);
- CellModified(-1, m_pType->GetPos());
- }
-
- return 0;
-}
-//------------------------------------------------------------------------------
-// alle Control neu anordnen, so dass sie in fester Reihenfolge und wirklich
-// OBEN auf der DescriptionPage stehen
-void OFieldDescControl::ArrangeAggregates()
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- // die Beschreibung eines Controls
- struct AGGREGATE_DESCRIPTION
- {
- Control* pctrlInputControl; // das eigentliche Control zur Eingabe
- Control* pctrlTextControl; // das Label dazu
- USHORT nPosSizeArgument; // das zweite Argument fuer SetPosSize
- };
- AGGREGATE_DESCRIPTION adAggregates[] = {
- { m_pColumnName, m_pColumnNameText, 1},
- { m_pType, m_pTypeText, 1},
- { pAutoIncrement, pAutoIncrementText, 1 },
- { m_pAutoIncrementValue, m_pAutoIncrementValueText, 3 },
- { pNumType, pNumTypeText, 1 },
- { pRequired, pRequiredText, 1 },
- { pTextLen, pTextLenText, 1 },
- { pLength, pLengthText, 1 },
- { pScale, pScaleText, 1 },
- { pDefault, pDefaultText, 3 },
- { pFormatSample, pFormatText, 4 },
- { pBoolDefault, pBoolDefaultText, 1 },
- };
-
- long nMaxWidth = 0;
- for (size_t i=0; i<sizeof(adAggregates)/sizeof(adAggregates[0]); i++)
- {
- if (adAggregates[i].pctrlTextControl)
- {
- nMaxWidth = ::std::max<long>(OutputDevice::GetTextWidth(adAggregates[i].pctrlTextControl->GetText()),nMaxWidth);
- }
- }
-
- OSL_ENSURE(nMaxWidth != 0,"Invalid width!");
-
- // und los ...
- int nCurrentControlPos = 0;
- Control* pZOrderPredecessor = NULL;
- for (size_t i=0; i<sizeof(adAggregates)/sizeof(adAggregates[0]); i++)
- {
- if (adAggregates[i].pctrlInputControl)
- {
- SetPosSize(&adAggregates[i].pctrlTextControl, nCurrentControlPos, 0);
- SetPosSize(&adAggregates[i].pctrlInputControl, nCurrentControlPos, adAggregates[i].nPosSizeArgument);
-
- // die Z-Order so, dass die Controls auch wirklich in derselben Reihenfolge durchwandert werden koennen, in der sie
- // hier angeordnet wurden
- adAggregates[i].pctrlInputControl->SetZOrder(pZOrderPredecessor, pZOrderPredecessor ? WINDOW_ZORDER_BEHIND : WINDOW_ZORDER_FIRST);
- pZOrderPredecessor = adAggregates[i].pctrlInputControl;
-
- if (adAggregates[i].pctrlInputControl == pFormatSample)
- {
- pFormat->SetZOrder(pZOrderPredecessor, WINDOW_ZORDER_BEHIND);
- pZOrderPredecessor = pFormat;
- }
-
- ++nCurrentControlPos;
- }
- }
-
- // eine Sonderbehandlung fuer die Format-Controls
- if (pFormat)
- {
- Point ptSamplePos(pFormatSample->GetPosPixel());
- Size szSampleSize(pFormatSample->GetSizePixel());
- pFormat->SetPosPixel(Point(ptSamplePos.X() + szSampleSize.Width() + 5, ptSamplePos.Y()));
- }
-
- // als letztes noch die ScrollBars in der ZOrder ganz nach oben
- m_pVertScroll->SetZOrder(NULL, WINDOW_ZORDER_FIRST);
- m_pHorzScroll->SetZOrder(NULL, WINDOW_ZORDER_FIRST);
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::ActivateAggregate( EControlType eType )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Controls erzeugen
- switch( eType )
- {
- case tpDefault:
- if( pDefault )
- return;
- m_nPos++;
- pDefaultText =new FixedText( this );
- pDefaultText->SetText( ModuleRes(STR_DEFAULT_VALUE) );
- pDefault = new OPropEditCtrl( this, STR_HELP_DEFAULT_VALUE, FIELD_PROPERTY_DEFAULT, WB_BORDER );
- pDefault->SetHelpId(HID_TAB_ENT_DEFAULT);
- // SetPosSize( (Control**)&pDefaultText, m_nPos, 0 );
- // SetPosSize( (Control**)&pDefault, m_nPos, 3 );
-
- pDefault->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pDefault->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pDefaultText->EnableClipSiblings();
- pDefault->EnableClipSiblings();
- break;
- case tpAutoIncrementValue:
- if( m_pAutoIncrementValue || !isAutoIncrementValueEnabled() )
- return;
- m_nPos++;
- m_pAutoIncrementValueText =new FixedText( this );
- m_pAutoIncrementValueText->SetText( ModuleRes(STR_AUTOINCREMENT_VALUE) );
- m_pAutoIncrementValue = new OPropEditCtrl( this, STR_HELP_AUTOINCREMENT_VALUE, FIELD_PRPOERTY_AUTOINCREMENT, WB_BORDER );
- m_pAutoIncrementValue->SetHelpId(HID_TAB_AUTOINCREMENTVALUE);
- // SetPosSize( (Control**)&m_pAutoIncrementValueText, m_nPos, 0 );
- // SetPosSize( (Control**)&m_pAutoIncrementValue, m_nPos, 3 );
-
- m_pAutoIncrementValue->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- m_pAutoIncrementValue->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- m_pAutoIncrementValueText->EnableClipSiblings();
- m_pAutoIncrementValue->EnableClipSiblings();
- m_pAutoIncrementValue->SetText( getAutoIncrementValue() );
- break;
-
- case tpRequired:
- {
- if( pRequired )
- return;
- Reference< XDatabaseMetaData> xMetaData = getMetaData();
-
- if(xMetaData.is() && xMetaData->supportsNonNullableColumns())
- {
- m_nPos++;
- pRequiredText =new FixedText( this );
- pRequiredText->SetText( ModuleRes(STR_FIELD_REQUIRED) );
- pRequired = new OPropListBoxCtrl( this, STR_HELP_FIELD_REQUIRED, FIELD_PROPERTY_REQUIRED, WB_DROPDOWN);
- pRequired->SetHelpId(HID_TAB_ENT_REQUIRED);
-
- pRequired->InsertEntry( aYes );
- pRequired->InsertEntry( aNo );
- pRequired->SelectEntryPos(1);
- pRequired->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl));
-
- pRequired->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pRequired->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pRequiredText->EnableClipSiblings();
- pRequired->EnableClipSiblings();
- }
- }
- break;
- case tpAutoIncrement:
- {
- if( pAutoIncrement )
- return;
- m_nPos++;
- pAutoIncrementText =new FixedText( this );
- pAutoIncrementText->SetText( ModuleRes(STR_FIELD_AUTOINCREMENT) );
- pAutoIncrement = new OPropListBoxCtrl( this, STR_HELP_AUTOINCREMENT, FIELD_PROPERTY_AUTOINC, WB_DROPDOWN );
- pAutoIncrement->SetHelpId(HID_TAB_ENT_AUTOINCREMENT);
-
- pAutoIncrement->InsertEntry( aYes );
- pAutoIncrement->InsertEntry( aNo );
- pAutoIncrement->SelectEntryPos(0);
- pAutoIncrement->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl));
-
- pAutoIncrement->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pAutoIncrement->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pAutoIncrementText->EnableClipSiblings();
- pAutoIncrement->EnableClipSiblings();
- }
- break;
- case tpTextLen:
- if( pTextLen )
- return;
- m_nPos++;
- pTextLenText =new FixedText( this );
- pTextLenText->SetText( ModuleRes(STR_TEXT_LENGTH) );
-
- pTextLen = new OPropNumericEditCtrl( this, STR_HELP_TEXT_LENGTH, FIELD_PROPERTY_TEXTLEN, WB_BORDER );
- pTextLen->SetDecimalDigits(0);
- pTextLen->SetMin(0);
- pTextLen->SetMax(0x7FFFFFFF); // soll draussen geaendert werden, wenn noetig
- pTextLen->SetStrictFormat(TRUE);
-
- pTextLen->SetHelpId(HID_TAB_ENT_TEXT_LEN);
-
- pTextLen->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pTextLen->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pTextLenText->EnableClipSiblings();
- pTextLen->EnableClipSiblings();
- break;
-
- case tpType:
- if( m_pType)
- return;
- m_nPos++;
- m_pTypeText =new FixedText( this );
- m_pTypeText->SetText( ModuleRes(STR_TAB_FIELD_DATATYPE) );
- m_pType = new OPropListBoxCtrl( this, STR_HELP_AUTOINCREMENT, FIELD_PRPOERTY_TYPE, WB_DROPDOWN );
- m_pType->SetHelpId(HID_TAB_ENT_TYPE);
- m_pType->SetDropDownLineCount(20);
- {
- const OTypeInfoMap* pTypeInfo = getTypeInfo();
- OTypeInfoMap::const_iterator aIter = pTypeInfo->begin();
- for(;aIter != pTypeInfo->end();++aIter)
- m_pType->InsertEntry( aIter->second->aUIName );
- }
- m_pType->SelectEntryPos(0);
- m_pType->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl));
-
- m_pType->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- m_pType->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- m_pTypeText->EnableClipSiblings();
- m_pType->EnableClipSiblings();
- break;
- case tpColumnName:
- if( m_pColumnName )
- return;
- m_nPos++;
- {
- Reference< XDatabaseMetaData> xMetaData = getMetaData();
- sal_uInt32 nMax = xMetaData.is() ? xMetaData->getMaxColumnNameLength() : EDIT_NOLIMIT;
- m_pColumnNameText =new FixedText( this );
- m_pColumnNameText->SetText( ModuleRes(STR_TAB_FIELD_NAME) );
- ::rtl::OUString aTmpString( xMetaData.is() ? xMetaData->getExtraNameCharacters() : ::rtl::OUString() );
- m_pColumnName = new OPropColumnEditCtrl( this,
- aTmpString,
- STR_HELP_DEFAULT_VALUE,
- FIELD_PRPOERTY_COLUMNNAME,
- WB_BORDER );
- m_pColumnName->SetHelpId(HID_TAB_ENT_COLUMNNAME);
- m_pColumnName->SetMaxTextLen(xub_StrLen( nMax ? nMax : EDIT_NOLIMIT));
- m_pColumnName->setCheck( isSQL92CheckEnabled(getConnection()) );
- }
-
- m_pColumnName->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- m_pColumnName->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- m_pColumnNameText->EnableClipSiblings();
- m_pColumnName->EnableClipSiblings();
- break;
- case tpNumType:
- if( pNumType )
- return;
- m_nPos++;
- pNumTypeText =new FixedText( this );
- pNumTypeText->SetText( ModuleRes(STR_NUMERIC_TYPE) );
-
- pNumType = new OPropListBoxCtrl( this, STR_HELP_NUMERIC_TYPE, FIELD_PROPERTY_NUMTYPE, WB_DROPDOWN );
- pNumType->SetDropDownLineCount(5);
- pNumType->SetHelpId(HID_TAB_ENT_NUMTYP);
-
- pNumType->InsertEntry( String::CreateFromAscii("Byte") );
- pNumType->InsertEntry( String::CreateFromAscii("SmallInt") );
- pNumType->InsertEntry( String::CreateFromAscii("Integer") );
- pNumType->InsertEntry( String::CreateFromAscii("Single") );
- pNumType->InsertEntry( String::CreateFromAscii("Double") );
- pNumType->SelectEntryPos(2);
- pNumType->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl));
-
- pNumType->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pNumType->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pNumTypeText->EnableClipSiblings();
- pNumType->EnableClipSiblings();
- break;
-
- case tpLength:
- if( pLength )
- return;
- m_nPos++;
- pLengthText =new FixedText( this );
- pLengthText->SetText( ModuleRes(STR_LENGTH) );
-
- pLength = new OPropNumericEditCtrl( this, STR_HELP_LENGTH, FIELD_PROPERTY_LENGTH, WB_BORDER );
- pLength->SetDecimalDigits(0);
- pLength->SetMin(0);
- pLength->SetMax(0x7FFFFFFF); // soll draussen geaendert werden, wenn noetig
- pLength->SetStrictFormat(TRUE);
-
- pLength->SetHelpId(HID_TAB_ENT_LEN);
-
- pLength->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pLength->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pLengthText->EnableClipSiblings();
- pLength->EnableClipSiblings();
- break;
-
- case tpScale:
- if( pScale )
- return;
- m_nPos++;
- pScaleText =new FixedText( this );
- pScaleText->SetText( ModuleRes(STR_SCALE) );
- pScale = new OPropNumericEditCtrl( this, STR_HELP_SCALE, FIELD_PROPERTY_SCALE, WB_BORDER );
- pScale->SetDecimalDigits(0);
- pScale->SetMin(0);
- pScale->SetMax(0x7FFFFFFF); // soll draussen geaendert werden, wenn noetig
- pScale->SetStrictFormat(TRUE);
-
- pScale->SetHelpId(HID_TAB_ENT_SCALE);
-
- pScale->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pScale->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pScaleText->EnableClipSiblings();
- pScale->EnableClipSiblings();
- break;
-
- case tpFormat:
- if (!pFormat)
- {
- m_nPos++;
- pFormatText =new FixedText( this );
- pFormatText->SetText( ModuleRes(STR_FORMAT) );
-
- pFormatSample = new OPropEditCtrl( this, STR_HELP_FORMAT_CODE, -1, WB_BORDER );
- pFormatSample->SetHelpId(HID_TAB_ENT_FORMAT_SAMPLE);
- pFormatSample->SetReadOnly(sal_True);
- pFormatSample->Enable(sal_False);
-
- pFormat = new PushButton( this, ModuleRes(PB_FORMAT) );
- pFormat->SetHelpId(HID_TAB_ENT_FORMAT);
- const sal_Int32 nControlHeight = LogicToPixel(Size(0, CONTROL_HEIGHT),MAP_APPFONT).Height();
- pFormat->SetSizePixel(Size(nControlHeight, nControlHeight));
- pFormat->SetClickHdl( LINK( this, OFieldDescControl, FormatClickHdl ) );
-
- pFormatSample->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pFormatSample->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
- pFormat->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pFormat->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pFormatText->EnableClipSiblings();
- pFormatSample->EnableClipSiblings();
- pFormat->EnableClipSiblings();
- }
-
- UpdateFormatSample(pActFieldDescr);
- break;
- case tpBoolDefault:
- if (pBoolDefault)
- return;
-
- m_nPos++;
- pBoolDefaultText =new FixedText(this);
- pBoolDefaultText->SetText(ModuleRes(STR_DEFAULT_VALUE));
- pBoolDefault = new OPropListBoxCtrl( this, STR_HELP_BOOL_DEFAULT, FIELD_PROPERTY_BOOL_DEFAULT, WB_DROPDOWN );
- pBoolDefault->SetDropDownLineCount(3);
- pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE)));
- pBoolDefault->InsertEntry(aYes);
- pBoolDefault->InsertEntry(aNo);
- pBoolDefault->SetHelpId(HID_TAB_ENT_BOOL_DEFAULT);
-
- pBoolDefault->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- pBoolDefault->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
-
- pBoolDefaultText->EnableClipSiblings();
- pBoolDefault->EnableClipSiblings();
- break;
-
- }
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::DeactivateAggregate( EControlType eType )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- pLastFocusWindow = NULL;
- //////////////////////////////////////////////////////////////////////
- // Controls zerstoeren
- switch( eType )
- {
- case tpDefault:
- if( !pDefault )
- return;
- m_nPos--;
- pDefault->Hide();
- pDefaultText->Hide();
- delete pDefault;
- delete pDefaultText;
- pDefault = NULL;
- pDefaultText =NULL;
- break;
-
- case tpAutoIncrementValue:
- if( !m_pAutoIncrementValue )
- return;
- m_nPos--;
- m_pAutoIncrementValue->Hide();
- m_pAutoIncrementValueText->Hide();
- delete m_pAutoIncrementValue;
- delete m_pAutoIncrementValueText;
- m_pAutoIncrementValue = NULL;
- m_pAutoIncrementValueText =NULL;
- break;
-
- case tpColumnName:
- if( !m_pColumnName )
- return;
- m_nPos--;
- m_pColumnName->Hide();
- m_pColumnNameText->Hide();
- delete m_pColumnName;
- delete m_pColumnNameText;
- m_pColumnName = NULL;
- m_pColumnNameText =NULL;
- break;
-
- case tpType:
- if( !m_pType )
- return;
- m_nPos--;
- m_pType->Hide();
- m_pTypeText->Hide();
- delete m_pType;
- delete m_pTypeText;
- m_pType = NULL;
- m_pTypeText =NULL;
- break;
-
- case tpAutoIncrement:
- if( !pAutoIncrement )
- return;
- m_nPos--;
- pAutoIncrement->Hide();
- pAutoIncrementText->Hide();
- delete pAutoIncrement;
- delete pAutoIncrementText;
- pAutoIncrement = NULL;
- pAutoIncrementText =NULL;
- break;
-
- case tpRequired:
- if( !pRequired )
- return;
- m_nPos--;
- pRequired->Hide();
- pRequiredText->Hide();
- delete pRequired;
- delete pRequiredText;
- pRequired = NULL;
- pRequiredText =NULL;
- break;
-
- case tpTextLen:
- if( !pTextLen )
- return;
- m_nPos--;
- pTextLen->Hide();
- pTextLenText->Hide();
- delete pTextLen;
- delete pTextLenText;
- pTextLen = NULL;
- pTextLenText =NULL;
- break;
-
- case tpNumType:
- if( !pNumType )
- return;
- m_nPos--;
- pNumType->Hide();
- pNumTypeText->Hide();
- delete pNumType;
- delete pNumTypeText;
- pNumType = NULL;
- pNumTypeText =NULL;
- break;
-
- case tpLength:
- if( !pLength )
- return;
- m_nPos--;
- pLength->Hide();
- pLengthText->Hide();
- delete pLength;
- delete pLengthText;
- pLength = NULL;
- pLengthText =NULL;
- break;
-
- case tpScale:
- if( !pScale )
- return;
- m_nPos--;
- pScale->Hide();
- pScaleText->Hide();
- delete pScale;
- delete pScaleText;
- pScale = NULL;
- pScaleText =NULL;
- break;
-
- case tpFormat:
- if( !pFormat )
- return;
- pFormatText->Hide();
- pFormatSample->Hide();
- pFormat->Hide();
- delete pFormatText;
- delete pFormatSample;
- delete pFormat;
- pFormatText =NULL;
- pFormatSample = NULL;
- pFormat = NULL;
- break;
- case tpBoolDefault:
- if (!pBoolDefault)
- return;
- m_nPos--;
- pBoolDefault->Hide();
- pBoolDefaultText->Hide();
- delete pBoolDefault;
- delete pBoolDefaultText;
- pBoolDefault = NULL;
- pBoolDefaultText =NULL;
- break;
-
- }
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::SetPosSize( Control** ppControl, long nRow, sal_uInt16 nCol )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
-
- //////////////////////////////////////////////////////////////////////
- // Groesse ermitteln
- const sal_Int32 nControlHeight = LogicToPixel(Size(0, CONTROL_HEIGHT),MAP_APPFONT).Height();
- Size aSize;
- switch( nCol )
- {
- case 0:
- aSize.Width() = CONTROL_WIDTH_1;
- aSize.Height() = nControlHeight;
- break;
- case 1:
- if ( isRightAligned() )
- aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width();
- else
- aSize.Width() = CONTROL_WIDTH_2;
- aSize.Height() = nControlHeight;
- break;
- case 2:
- if ( isRightAligned() )
- aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width();
- else
- aSize.Width() = CONTROL_WIDTH_2;
- aSize.Height() = long(1.5*nControlHeight);
- break;
- case 3:
- if ( isRightAligned() )
- aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width();
- else
- aSize.Width() = CONTROL_WIDTH_3;
- aSize.Height() = nControlHeight;
- break;
- case 4:
- if ( isRightAligned() )
- aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width();
- else
- aSize.Width() = CONTROL_WIDTH_4;
- aSize.Height() = nControlHeight;
- break;
- default:
- if ( isRightAligned() )
- aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width();
- else
- aSize.Width() = CONTROL_WIDTH_1;
- aSize.Height() = nControlHeight;
- }
-
-
- //////////////////////////////////////////////////////////////////////
- // Position ermitteln
- Point aPosition;
- switch( nCol )
- {
- case 0:
- aPosition.X() = 0;
- aPosition.Y() = 1;
- break;
- case 1:
- case 2:
- case 3:
- case 4:
- if ( isRightAligned() )
- {
- Size aOwnSize = GetSizePixel();
- aPosition.X() = aOwnSize.Width() - aSize.Width();
- }
- else
- aPosition.X() = CONTROL_WIDTH_1 + CONTROL_SPACING_X;
- break;
- default:
- aPosition.X() = 0;
- }
-
- (*ppControl)->SetSizePixel( aSize );
- aSize = (*ppControl)->GetSizePixel( );
-
- const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height();
- aPosition.Y() += ((nRow+1)*nControl_Spacing_y) +
- (nRow*nControlHeight);
-
- //////////////////////////////////////////////////////////////////////
- // Control anzeigen
- (*ppControl)->SetPosSizePixel( aPosition, aSize );
- aSize = (*ppControl)->GetSizePixel();
-
- (*ppControl)->Show();
-}
-//------------------------------------------------------------------------------
-void OFieldDescControl::DisplayData(OFieldDescription* pFieldDescr )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- pActFieldDescr = pFieldDescr;
- if(!pFieldDescr)
- {
- DeactivateAggregate( tpDefault );
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpNumType );
- DeactivateAggregate( tpScale );
- DeactivateAggregate( tpLength );
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpAutoIncrement );
- DeactivateAggregate( tpBoolDefault );
- DeactivateAggregate( tpColumnName );
- DeactivateAggregate( tpType );
- DeactivateAggregate( tpAutoIncrementValue );
- m_pPreviousType = TOTypeInfoSP();
- //////////////////////////////////////////////////////////////////////
- // Zeiger des gespeicherten Focus zuruecksetzen
- pLastFocusWindow = NULL;
- if ( m_bAdded )
- {
- ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow));
- m_bAdded = sal_False;
- }
- return;
- }
-
- if ( !m_bAdded )
- {
- ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::AddWindow));
- m_bAdded = sal_True;
- }
-
- TOTypeInfoSP pFieldType;
- if( pFieldDescr )
- pFieldType = pFieldDescr->getTypeInfo();
-
- ActivateAggregate( tpColumnName );
- ActivateAggregate( tpType );
-
- OSL_ENSURE(pFieldType.get(),"We need a type information here!");
- //////////////////////////////////////////////////////////////////////
- // Wenn sich der Typ geaendert hat, Controls austauschen
- if( m_pPreviousType != pFieldType )
- {
- //////////////////////////////////////////////////////////////////////
- // Zeiger des gespeicherten Focus zuruecksetzen
- pLastFocusWindow = NULL;
-
- //////////////////////////////////////////////////////////////////////
- // Controls, die nicht mehr angezeigt werden duerfen
- DeactivateAggregate( tpNumType );
-
- //////////////////////////////////////////////////////////////////////
- // determine which controls we should show and which not
-
- // 1. the required control
- if ( pFieldType->bNullable )
- ActivateAggregate( tpRequired );
- else
- DeactivateAggregate( tpRequired );
-
- // 2. the autoincrement
- if ( pFieldType->bAutoIncrement )
- {
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpDefault );
- ActivateAggregate( tpAutoIncrement );
- ActivateAggregate( tpAutoIncrementValue );
- }
- else
- {
- DeactivateAggregate( tpAutoIncrement );
- DeactivateAggregate( tpAutoIncrementValue );
- if(pFieldType->bNullable)
- ActivateAggregate( tpRequired );
- else
- DeactivateAggregate( tpRequired );
- ActivateAggregate( tpDefault );
- }
- // 3. the scale and precision
- if (pFieldType->nPrecision)
- {
- ActivateAggregate( tpLength );
- pLength->SetMax(::std::max<sal_Int32>(pFieldType->nPrecision,pFieldDescr->GetPrecision()));
- pLength->SetSpecialReadOnly(pFieldType->aCreateParams.getLength()==0);
- }
- else
- DeactivateAggregate( tpLength );
-
- if (pFieldType->nMaximumScale)
- {
- ActivateAggregate( tpScale );
- pScale->SetMax(::std::max<sal_Int32>(pFieldType->nMaximumScale,pFieldDescr->GetScale()));
- pScale->SetMin(pFieldType->nMinimumScale);
- static const ::rtl::OUString s_sPRECISION(RTL_CONSTASCII_USTRINGPARAM("PRECISION"));
- pScale->SetSpecialReadOnly(pFieldType->aCreateParams.getLength() == 0 || pFieldType->aCreateParams == s_sPRECISION);
- }
- else
- DeactivateAggregate( tpScale );
-
- // and now look for type specific things
- switch( pFieldType->nType )
- {
- case DataType::CHAR:
- case DataType::VARCHAR:
- case DataType::LONGVARCHAR:
- DeactivateAggregate( tpLength );
- DeactivateAggregate( tpBoolDefault );
-
- ActivateAggregate( tpDefault );
- ActivateAggregate( tpFormat );
- if (pFieldType->nPrecision)
- {
- ActivateAggregate( tpTextLen );
- pTextLen->SetMax(::std::max<sal_Int32>(pFieldType->nPrecision,pFieldDescr->GetPrecision()));
- pTextLen->SetSpecialReadOnly(pFieldType->aCreateParams.getLength()==0);
- }
- else
- DeactivateAggregate( tpTextLen );
- break;
- case DataType::DATE:
- case DataType::TIME:
- case DataType::TIMESTAMP:
- DeactivateAggregate( tpLength ); // we don't need a length for date types
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
-
- ActivateAggregate( tpDefault );
- ActivateAggregate( tpFormat );
- break;
- case DataType::BIT:
- case DataType::BOOLEAN:
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpDefault );
-
- ActivateAggregate( tpBoolDefault );
- break;
- case DataType::DECIMAL:
- case DataType::NUMERIC:
- case DataType::BIGINT:
- case DataType::FLOAT:
- case DataType::DOUBLE:
- case DataType::TINYINT:
- case DataType::SMALLINT:
- case DataType::INTEGER:
- case DataType::REAL:
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
-
- ActivateAggregate( tpFormat );
- break;
- case DataType::BINARY:
- case DataType::VARBINARY:
- DeactivateAggregate( tpDefault );
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
-
- ActivateAggregate( tpFormat );
- break;
- case DataType::LONGVARBINARY:
- case DataType::SQLNULL:
- case DataType::OBJECT:
- case DataType::DISTINCT:
- case DataType::STRUCT:
- case DataType::ARRAY:
- case DataType::BLOB:
- case DataType::CLOB:
- case DataType::REF:
- case DataType::OTHER:
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
-
- break;
- default:
- OSL_ENSURE(0,"Unknown type");
- }
- m_pPreviousType = pFieldType;
- }
- if(pFieldDescr)
- {
- if(pFieldDescr->IsPrimaryKey())
- {
- DeactivateAggregate( tpRequired );
- }
- else if ( !pAutoIncrement && pFieldType.get() )
- {
- if ( pFieldType->bNullable )
- ActivateAggregate( tpRequired );
- else
- DeactivateAggregate( tpRequired );
- }
- }
- //////////////////////////////////////////////////////////////////////
- // Controls initialisieren
- if( pAutoIncrement )
- {
- if ( pFieldDescr->IsAutoIncrement() )
- {
- pAutoIncrement->SelectEntryPos( 0 ); // yes
- ActivateAggregate( tpAutoIncrementValue );
- if ( m_pAutoIncrementValue )
- m_pAutoIncrementValue->SetText(pFieldDescr->GetAutoIncrementValue());
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpDefault );
- }
- else
- {
- // disable autoincrement value because it should only be visible when autoincrement is to true
- DeactivateAggregate( tpAutoIncrementValue );
- pAutoIncrement->SelectEntryPos( 1 ); // no
- ActivateAggregate( tpDefault );
- // hat Auswirkungen auf pRequired
- if(!pFieldDescr->IsPrimaryKey())
- ActivateAggregate( tpRequired );
- }
- }
-
- if( pDefault )
- {
- pDefault->SetText( getControlDefault(pFieldDescr) );
- pDefault->ClearModifyFlag();
- }
-
- if( pBoolDefault )
- {
- // wenn pRequired auf sal_True gesetzt ist, dann darf das sal_Bool Feld nicht den Eintrag <<keiner>> besitzen
- String sDef = BoolStringUI(::comphelper::getString(pFieldDescr->GetControlDefault()));
-
- // sicher stellen das <<keiner>> nur vorhanden ist, wenn das Feld NULL sein darf
- if ( ( pFieldType.get() && !pFieldType->bNullable ) || !pFieldDescr->IsNullable() )
- {
- pFieldDescr->SetIsNullable(ColumnValue::NO_NULLS); // der Typ sagt das
-
- pBoolDefault->RemoveEntry(String(ModuleRes(STR_VALUE_NONE)));
- if ( !sDef.Equals(aYes) && !sDef.Equals(aNo) )
- pBoolDefault->SelectEntryPos(1); // nein als Default
- else
- pBoolDefault->SelectEntry(sDef);
-
- pFieldDescr->SetControlDefault(makeAny(::rtl::OUString(BoolStringPersistent(pBoolDefault->GetSelectEntry()))));
- }
- else if(pBoolDefault->GetEntryCount() < 3)
- {
- pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE)));
- pBoolDefault->SelectEntry(sDef);
- }
- else
- pBoolDefault->SelectEntry(sDef);
- }
-
- if( pRequired )
- {
- if( pFieldDescr->IsNullable() )
- pRequired->SelectEntryPos( 1 ); // no
- else
- pRequired->SelectEntryPos( 0 ); // yes
- }
-
- if( pTextLen )
- {
- pTextLen->SetText( String::CreateFromInt32(pFieldDescr->GetPrecision()) );
- pTextLen->ClearModifyFlag();
- }
-
- if( pNumType )
- {
- OSL_ENSURE(sal_False, "OFieldDescControl::DisplayData: invalid num type!");
- }
-
- if( pLength )
- pLength->SetText( String::CreateFromInt32(pFieldDescr->GetPrecision()) );
-
- if( pScale )
- pScale->SetText( String::CreateFromInt32(pFieldDescr->GetScale()) );
-
- if( pFormat )
- UpdateFormatSample(pFieldDescr);
-
- if(m_pColumnName)
- m_pColumnName->SetText(pFieldDescr->GetName());
-
- if(m_pType)
- {
- USHORT nPos = pFieldType.get() ? m_pType->GetEntryPos(String(pFieldDescr->getTypeInfo()->aUIName)) : LISTBOX_ENTRY_NOTFOUND;
- if(nPos == LISTBOX_ENTRY_NOTFOUND)
- {
- const OTypeInfoMap* pMap = getTypeInfo();
- OTypeInfoMap::const_iterator aIter = pMap->find(pFieldType.get() ? pFieldDescr->getTypeInfo()->nType : pFieldDescr->GetType());
- if(aIter == pMap->end() && !pMap->empty())
- {
- aIter = pMap->begin();
- if(pFieldDescr->GetPrecision() > aIter->second->nPrecision)
- pFieldDescr->SetPrecision(aIter->second->nPrecision);
- if(pFieldDescr->GetScale() > aIter->second->nMaximumScale)
- pFieldDescr->SetScale(0);
- if(!aIter->second->bNullable && pFieldDescr->IsNullable())
- pFieldDescr->SetIsNullable(ColumnValue::NO_NULLS);
- if(!aIter->second->bAutoIncrement && pFieldDescr->IsAutoIncrement())
- pFieldDescr->SetAutoIncrement(sal_False);
- }
- if ( aIter != pMap->end() )
- {
- pFieldDescr->SetType(aIter->second);
- }
- }
- m_pType->SelectEntry(pFieldDescr->getTypeInfo()->aUIName);
- }
-
-
- //////////////////////////////////////////////////////////////////////
- // Controls Enablen/Disablen
- sal_Bool bRead(IsReadOnly());
-
-
- ArrangeAggregates();
- CheckScrollBars();
- ScrollAllAggregates();
-
- SetReadOnly( bRead );
-}
-//------------------------------------------------------------------------
-IMPL_LINK(OFieldDescControl, DelayedGrabFocus, Control**, ppControl)
-{
- nDelayedGrabFocusEvent = 0;
- if (*ppControl)
- (*ppControl)->GrabFocus();
-
- return 0L;
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(OFieldDescControl, OnControlFocusGot, Control*, pControl )
-{
- String strHelpText;
- OPropNumericEditCtrl* pNumeric = dynamic_cast< OPropNumericEditCtrl* >( pControl );
- if ( pNumeric )
- {
- pNumeric->SaveValue();
- strHelpText = pNumeric->GetHelp();
- }
-
- OPropColumnEditCtrl* pColumn = dynamic_cast< OPropColumnEditCtrl* >( pControl );
- if ( pColumn )
- {
- pColumn->SaveValue();
- strHelpText = pColumn->GetHelp();
- }
-
- OPropEditCtrl* pEdit = dynamic_cast< OPropEditCtrl* >( pControl );
- if ( pEdit )
- {
- pEdit->SaveValue();
- strHelpText = pEdit->GetHelp();
- }
-
- OPropListBoxCtrl* pListBox = dynamic_cast< OPropListBoxCtrl* >( pControl );
- if ( pListBox )
- {
- pListBox->SaveValue();
- strHelpText = pListBox->GetHelp();
- }
-
- if (pControl == pFormat)
- strHelpText =String(ModuleRes(STR_HELP_FORMAT_BUTTON));
-
- if (strHelpText.Len() && (pHelp != NULL))
- pHelp->SetHelpText(strHelpText);
-
- m_pActFocusWindow = pControl;
-
- return 0L;
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(OFieldDescControl, OnControlFocusLost, Control*, pControl )
-{
- if ((pControl == pLength) || (pControl == pTextLen) || (pControl == pScale))
- {
- OPropNumericEditCtrl* pConverted = (OPropNumericEditCtrl*)pControl;
- if (pConverted->IsModified())
- CellModified(-1, pConverted->GetPos());
- }
- if(pControl == m_pColumnName)
- {
- OPropColumnEditCtrl* pConverted = (OPropColumnEditCtrl*)pControl;
- if (pConverted->IsModified())
- CellModified(-1, pConverted->GetPos());
- }
- else if ((pControl == pDefault) || (pControl == pFormatSample) || (pControl == m_pAutoIncrementValue) )
- {
- OPropEditCtrl* pConverted = (OPropEditCtrl*)pControl;
- if (pConverted->IsModified())
- CellModified(-1, pConverted->GetPos());
- }
- else if ((pControl == pRequired) || (pControl == pNumType) || (pControl == pAutoIncrement) || (pControl == pBoolDefault) || (pControl == m_pType))
- {
- OPropListBoxCtrl* pConverted = (OPropListBoxCtrl*)pControl;
- if (pConverted->IsModified())
- CellModified(-1, pConverted->GetPos());
- }
-
- if (pControl == pDefault)
- UpdateFormatSample(pActFieldDescr);
-
- implFocusLost(pControl);
-
- return 0L;
-}
-//------------------------------------------------------------------------------
-void OFieldDescControl::SaveData( OFieldDescription* pFieldDescr )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- if( !pFieldDescr )
- return;
-
- //////////////////////////////////////////////////////////////////////
- // Controls auslesen
- ::rtl::OUString sDefault;
- if (pDefault)
- {
- if ( pDefault->GetSavedValue() != pDefault->GetText() )
- sDefault = pDefault->GetText();
- }
- else if (pBoolDefault)
- {
- sDefault = BoolStringPersistent(pBoolDefault->GetSelectEntry());
- }
-
- if ( sDefault.getLength() )
- {
- sal_uInt32 nFormatKey;
- try
- {
- if ( isTextFormat(pFieldDescr,nFormatKey) || pBoolDefault )
- {
- pFieldDescr->SetControlDefault(makeAny(sDefault));
- }
- else
- {
- try
- {
- double nValue = GetFormatter()->convertStringToNumber(nFormatKey,sDefault);
- nValue = checkDoubleForDateFormat(nValue,nFormatKey,GetFormatter());
- pFieldDescr->SetControlDefault(makeAny(nValue));
- }
- catch(const Exception&)
- {
- if ( sDefault.getLength() )
- pFieldDescr->SetControlDefault(makeAny(sDefault));
- else
- pFieldDescr->SetControlDefault(Any());
- }
- }
- }
- catch(const Exception&)
- {
- }
- } // if ( sDefault.getLength() )
- else
- pFieldDescr->SetControlDefault(Any());
-
- if((pRequired && pRequired->GetSelectEntryPos() == 0) || pFieldDescr->IsPrimaryKey() || (pBoolDefault && pBoolDefault->GetEntryCount() == 2)) // yes
- pFieldDescr->SetIsNullable( ColumnValue::NO_NULLS );
- else
- pFieldDescr->SetIsNullable( ColumnValue::NULLABLE );
-
- if ( pAutoIncrement )
- pFieldDescr->SetAutoIncrement( pAutoIncrement->GetSelectEntryPos() == 0 );
-
- if( pTextLen )
- pFieldDescr->SetPrecision( static_cast<sal_Int32>(pTextLen->GetValue()) );
- else if( pLength )
- pFieldDescr->SetPrecision( static_cast<sal_Int32>(pLength->GetValue()) );
- if( pScale )
- pFieldDescr->SetScale( static_cast<sal_Int32>(pScale->GetValue()) );
-
- if(m_pColumnName)
- pFieldDescr->SetName(m_pColumnName->GetText());
-
- if ( m_pAutoIncrementValue && isAutoIncrementValueEnabled() )
- pFieldDescr->SetAutoIncrementValue(m_pAutoIncrementValue->GetText());
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::UpdateFormatSample(OFieldDescription* pFieldDescr)
-{
- if(!pFieldDescr)
- return;
- if(!pFormatSample)
- return;
-
- pFormatSample->SetText(getControlDefault(pFieldDescr,sal_False));
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::GetFocus()
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Setzt den Focus auf das zuletzt aktive Control
- TabPage::GetFocus();
- if( pLastFocusWindow )
- {
- pLastFocusWindow->GrabFocus();
- pLastFocusWindow = NULL;
- }
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::implFocusLost(Window* _pWhich)
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- DBG_ASSERT(!_pWhich || IsChild(_pWhich), "OFieldDescControl::implFocusLost : invalid window !");
-
- //////////////////////////////////////////////////////////////////////
- // Das aktive Control merken
- if (!pLastFocusWindow)
- pLastFocusWindow = _pWhich;
-
- //////////////////////////////////////////////////////////////////////
- // HelpText zuruecksetzen
- if (pHelp && !pHelp->HasChildPathFocus())
- pHelp->SetHelpText( String() );
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::LoseFocus()
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
-
- implFocusLost(NULL);
-
- TabPage::LoseFocus();
-}
-// -----------------------------------------------------------------------------
-sal_Bool OFieldDescControl::isCopyAllowed()
-{
- sal_Bool bAllowed = (m_pActFocusWindow != NULL) &&
- (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample ||
- m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength ||
- m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName ||
- m_pActFocusWindow == m_pAutoIncrementValue) &&
- static_cast<Edit*>(m_pActFocusWindow)->GetSelected().Len() != 0;
-
- return bAllowed;
-}
-// -----------------------------------------------------------------------------
-sal_Bool OFieldDescControl::isCutAllowed()
-{
- sal_Bool bAllowed = (m_pActFocusWindow != NULL) &&
- (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample ||
- m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength ||
- m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName ||
- m_pActFocusWindow == m_pAutoIncrementValue) &&
- static_cast<Edit*>(m_pActFocusWindow)->GetSelected().Len() != 0;
- return bAllowed;
-}
-// -----------------------------------------------------------------------------
-sal_Bool OFieldDescControl::isPasteAllowed()
-{
- sal_Bool bAllowed = (m_pActFocusWindow != NULL) &&
- (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample ||
- m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength ||
- m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName ||
- m_pActFocusWindow == m_pAutoIncrementValue);
- if ( bAllowed )
- {
- TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(GetParent()));
- bAllowed = aTransferData.HasFormat(SOT_FORMAT_STRING);
- }
- return bAllowed;
-}
-// -----------------------------------------------------------------------------
-void OFieldDescControl::cut()
-{
- if(isCutAllowed())
- static_cast<Edit*>(m_pActFocusWindow)->Cut();
-}
-// -----------------------------------------------------------------------------
-void OFieldDescControl::copy()
-{
- if(isCopyAllowed()) // this only checks if the focus window is valid
- static_cast<Edit*>(m_pActFocusWindow)->Copy();
-}
-// -----------------------------------------------------------------------------
-void OFieldDescControl::paste()
-{
- if(m_pActFocusWindow) // this only checks if the focus window is valid
- static_cast<Edit*>(m_pActFocusWindow)->Paste();
-}
-// -----------------------------------------------------------------------------
-sal_Bool OFieldDescControl::isTextFormat(const OFieldDescription* _pFieldDescr,sal_uInt32& _nFormatKey) const
-{
- _nFormatKey = _pFieldDescr->GetFormatKey();
- sal_Bool bTextFormat = sal_True;
-
- try
- {
- if (!_nFormatKey)
- {
- Reference< ::com::sun::star::util::XNumberFormatTypes> xNumberTypes(GetFormatter()->getNumberFormatsSupplier()->getNumberFormats(),UNO_QUERY);
- OSL_ENSURE(xNumberTypes.is(),"XNumberFormatTypes is null!");
-
- _nFormatKey = ::dbtools::getDefaultNumberFormat( _pFieldDescr->GetType(),
- _pFieldDescr->GetScale(),
- _pFieldDescr->IsCurrency(),
- xNumberTypes,
- GetLocale());
- }
- sal_Int32 nNumberFormat = ::comphelper::getNumberFormatType(GetFormatter(),_nFormatKey);
- bTextFormat = (nNumberFormat == ::com::sun::star::util::NumberFormat::TEXT);
- }
- catch(const Exception&)
- {
-
- }
-
- return bTextFormat;
-}
-// -----------------------------------------------------------------------------
-String OFieldDescControl::getControlDefault( const OFieldDescription* _pFieldDescr ,sal_Bool _bCheck) const
-{
- ::rtl::OUString sDefault;
- sal_Bool bCheck = !_bCheck || _pFieldDescr->GetControlDefault().hasValue();
- if ( bCheck )
- {
- sal_uInt32 nFormatKey;
- sal_Bool bTextFormat = sal_False;
- double nValue = 0.0;
-
- try
- {
- bTextFormat = isTextFormat(_pFieldDescr,nFormatKey);
- if ( _pFieldDescr->GetControlDefault() >>= sDefault )
- {
- if ( !bTextFormat )
- {
- if ( sDefault.getLength() )
- {
- try
- {
- nValue = GetFormatter()->convertStringToNumber(nFormatKey,sDefault);
- }
- catch(const Exception&)
- {
- return ::rtl::OUString(); // return empty string for format example
- }
- }
- }
- }
- else
- _pFieldDescr->GetControlDefault() >>= nValue;
-
-
- Reference< ::com::sun::star::util::XNumberFormatter> xNumberFormatter = GetFormatter();
- Reference<XPropertySet> xFormSet = xNumberFormatter->getNumberFormatsSupplier()->getNumberFormats()->getByKey(nFormatKey);
- OSL_ENSURE(xFormSet.is(),"XPropertySet is null!");
- ::rtl::OUString sFormat;
- xFormSet->getPropertyValue(::rtl::OUString::createFromAscii("FormatString")) >>= sFormat;
-
- if ( !bTextFormat )
- {
- Locale aLocale;
- ::comphelper::getNumberFormatProperty(xNumberFormatter,nFormatKey,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Locale"))) >>= aLocale;
-
- sal_Int32 nNumberFormat = ::comphelper::getNumberFormatType(xNumberFormatter,nFormatKey);
- if( (nNumberFormat & ::com::sun::star::util::NumberFormat::DATE) == ::com::sun::star::util::NumberFormat::DATE
- || (nNumberFormat & ::com::sun::star::util::NumberFormat::DATETIME) == ::com::sun::star::util::NumberFormat::DATETIME )
- {
- nValue = DBTypeConversion::toNullDate(DBTypeConversion::getNULLDate(xNumberFormatter->getNumberFormatsSupplier()),nValue);
- }
-
-
-
- Reference< ::com::sun::star::util::XNumberFormatPreviewer> xPreViewer(xNumberFormatter,UNO_QUERY);
- OSL_ENSURE(xPreViewer.is(),"XNumberFormatPreviewer is null!");
- sDefault = xPreViewer->convertNumberToPreviewString(sFormat,nValue,aLocale,sal_True);
- }
- else if ( !_bCheck || (sDefault.getLength() != 0) )
- sDefault = xNumberFormatter->formatString(nFormatKey,(sDefault.getLength() != 0 )? sDefault : sFormat);
- }
- catch(const Exception&)
- {
-
- }
- }
-
- return sDefault;
-}
-// -----------------------------------------------------------------------------
-
-
-
-
-
+/************************************************************************* + * + * 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: FieldDescControl.cxx,v $ + * $Revision: 1.49.68.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" + +#define ITEMID_HORJUSTIFY SID_ATTR_ALIGN_HOR_JUSTIFY +#define ITEMID_VERJUSTIFY SID_ATTR_ALIGN_VER_JUSTIFY +//#define ITEMID_ORIENTATION SID_ATTR_ALIGN_ORIENTATION +#define ITEMID_LINEBREAK SID_ATTR_ALIGN_LINEBREAK +#define ITEMID_MARGIN SID_ATTR_ALIGN_MARGIN + +#ifndef DBAUI_FIELDDESCRIPTIONCONTROL_HXX +#include "FieldDescControl.hxx" +#endif +#ifndef DBAUI_FIELDCONTROLS_HXX +#include "FieldControls.hxx" +#endif +#ifndef _ZFORLIST_HXX //autogen +#define _ZFORLIST_DECLARE_TABLE // ohne das bekomme ich einen Compiler-Fehler in <svtools/zforlist.hxx> +#include <svtools/zforlist.hxx> +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef DBAUI_TABLEDESIGNHELPBAR_HXX +#include "TableDesignHelpBar.hxx" +#endif +#ifndef _SV_SCRBAR_HXX +#include <vcl/scrbar.hxx> +#endif +#ifndef _SV_BUTTON_HXX +#include <vcl/button.hxx> +#endif +#ifndef _SVX_NUMFMTSH_HXX +#include <svx/numfmtsh.hxx> +#endif +#ifndef _DBU_CONTROL_HRC_ +#include "dbu_control.hrc" +#endif +#ifndef _DBU_TBL_HRC_ +#include "dbu_tbl.hrc" +#endif + +#ifndef _SV_SVAPP_HXX +#include <vcl/svapp.hxx> +#endif +#ifndef _SV_FIXED_HXX +#include <vcl/fixed.hxx> +#endif +#ifndef _SV_MSGBOX_HXX +#include <vcl/msgbox.hxx> +#endif +#ifndef _VECTOR_ +#include <vector> +#endif +#ifndef DBAUI_FIELDDESCRIPTIONS_HXX +#include "FieldDescriptions.hxx" +#endif +#ifndef _SFXITEMPOOL_HXX +#include <svtools/itempool.hxx> +#endif +#ifndef DBAUI_SBATTRDLG_HXX +#include "dlgattr.hxx" +#endif +#ifndef _SVX_SVXIDS_HRC +#include <svx/svxids.hrc> +#endif +#ifndef _SVX_ALGITEM_HXX +#include <svx/algitem.hxx> +#endif +#ifndef _SFXRNGITEM_HXX +#include <svtools/rngitem.hxx> +#endif +#ifndef _SFXINTITEM_HXX +#include <svtools/intitem.hxx> +#endif +#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_ +#include <com/sun/star/lang/XUnoTunnel.hpp> +#endif +#ifndef _COM_SUN_STAR_UTIL_NUMBERFORMAT_HPP_ +#include <com/sun/star/util/NumberFormat.hpp> +#endif +#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATPREVIEWER_HPP_ +#include <com/sun/star/util/XNumberFormatPreviewer.hpp> +#endif +#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTYPES_HPP_ +#include <com/sun/star/util/XNumberFormatTypes.hpp> +#endif +#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_ +#include <com/sun/star/beans/XPropertySet.hpp> +#endif +#ifndef DBAUI_ENUMTYPES_HXX +#include "QEnumTypes.hxx" +#endif +#ifndef _DBA_DBACCESS_HELPID_HRC_ +#include "dbaccess_helpid.hrc" +#endif +#ifndef _NUMUNO_HXX +#include <svtools/numuno.hxx> +#endif +#ifndef _CONNECTIVITY_DBTOOLS_HXX_ +#include <connectivity/dbtools.hxx> +#endif +#ifndef _COMPHELPER_NUMBERS_HXX_ +#include <comphelper/numbers.hxx> +#endif +#ifndef DBAUI_TOOLS_HXX +#include "UITools.hxx" +#endif +#include <memory> +#ifndef _DBHELPER_DBCONVERSION_HXX_ +#include <connectivity/dbconversion.hxx> +#endif +#ifndef _TRANSFER_HXX +#include <svtools/transfer.hxx> +#endif + +using namespace dbaui; +using namespace dbtools; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::sdbc; +using namespace ::com::sun::star::util; + +//================================================================== + +// fuer die Controls auf der OFieldDescGenPage +#define CONTROL_SPACING_X 18 // 6 +#define CONTROL_SPACING_Y 4 +#define CONTROL_HEIGHT 10 +#define CONTROL_WIDTH_1 160 // 100 +#define CONTROL_WIDTH_2 100 // 60 +#define CONTROL_WIDTH_3 250 +#define CONTROL_WIDTH_4 (CONTROL_WIDTH_3 - 20 - 5) + +#define SBA_DEF_RANGEFORMAT (100 + 143) // RangeItem +#define SBA_DEF_FMTVALUE (100 + 144) // SfxULONG, Format +#define SBA_ATTR_ALIGN_HOR_JUSTIFY (100 + 145) // SvxHorJustifyItem + +#define HSCROLL_STEP 20 + + +namespace +{ + // ----------------------------------------------------------------------------- + double checkDoubleForDateFormat(double _nValue,sal_Int32 _nFormatKey,const Reference< ::com::sun::star::util::XNumberFormatter>& _xNumberFormatter) + { + double nValue = _nValue; + sal_Int32 nNumberFormat = ::comphelper::getNumberFormatType(_xNumberFormatter,_nFormatKey); + if( (nNumberFormat & ::com::sun::star::util::NumberFormat::DATE) == ::com::sun::star::util::NumberFormat::DATE + || (nNumberFormat & ::com::sun::star::util::NumberFormat::DATETIME) == ::com::sun::star::util::NumberFormat::DATETIME ) + { + nValue = DBTypeConversion::toStandardDbDate(DBTypeConversion::getNULLDate(_xNumberFormatter->getNumberFormatsSupplier()),nValue); + } + + return nValue; + } + // ----------------------------------------------------------------------------- +} + +//================================================================== +// class OFieldDescControl +//================================================================== + +DBG_NAME(OFieldDescControl) + +//================================================================== +OFieldDescControl::OFieldDescControl( Window* pParent, const ResId& rResId, OTableDesignHelpBar* pHelpBar) + :TabPage( pParent, rResId ) + ,pHelp( pHelpBar ) + ,pLastFocusWindow(NULL) + ,m_pActFocusWindow(NULL) + ,pDefaultText(NULL) + ,pRequiredText(NULL) + ,pAutoIncrementText(NULL) + ,pTextLenText(NULL) + ,pNumTypeText(NULL) + ,pLengthText(NULL) + ,pScaleText(NULL) + ,pFormatText(NULL) + ,pBoolDefaultText(NULL) + ,m_pColumnNameText(NULL) + ,m_pTypeText(NULL) + ,m_pAutoIncrementValueText(NULL) + ,pRequired(NULL) + ,pNumType(NULL) + ,pAutoIncrement(NULL) + ,pDefault(NULL) + ,pTextLen(NULL) + ,pLength(NULL) + ,pScale(NULL) + ,pFormatSample(NULL) + ,pBoolDefault(NULL) + ,m_pColumnName(NULL) + ,m_pType(NULL) + ,m_pAutoIncrementValue(NULL) + ,pFormat(NULL) + ,m_pVertScroll( NULL ) + ,m_pHorzScroll( NULL ) + ,m_pPreviousType() + ,nCurChildId(1) + ,m_nPos(-1) + ,aYes(ModuleRes(STR_VALUE_YES)) + ,aNo(ModuleRes(STR_VALUE_NO)) + ,m_nOldVThumb( 0 ) + ,m_nOldHThumb( 0 ) + ,m_nWidth(50) + ,nDelayedGrabFocusEvent(0) + ,m_bAdded(sal_False) + ,m_bRightAligned(false) + ,pActFieldDescr(NULL) +{ + DBG_CTOR(OFieldDescControl,NULL); + + m_pVertScroll = new ScrollBar(this, WB_VSCROLL | WB_REPEAT | WB_DRAG); + m_pHorzScroll = new ScrollBar(this, WB_HSCROLL | WB_REPEAT | WB_DRAG); + m_pVertScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll)); + m_pHorzScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll)); + m_pVertScroll->Show(); + m_pHorzScroll->Show(); + + m_pVertScroll->EnableClipSiblings(); + m_pHorzScroll->EnableClipSiblings(); + + m_pVertScroll->SetLineSize(1); + m_pVertScroll->SetPageSize(1); + m_pHorzScroll->SetLineSize(1); + m_pHorzScroll->SetPageSize(1); + + m_nOldVThumb = m_nOldHThumb = 0; +} +//------------------------------------------------------------------------------ +OFieldDescControl::OFieldDescControl( Window* pParent, OTableDesignHelpBar* pHelpBar ) + :TabPage( pParent, WB_3DLOOK | WB_DIALOGCONTROL ) + ,pHelp( pHelpBar ) + ,pLastFocusWindow(NULL) + ,m_pActFocusWindow(NULL) + ,pDefaultText(NULL) + ,pRequiredText(NULL) + ,pAutoIncrementText(NULL) + ,pTextLenText(NULL) + ,pNumTypeText(NULL) + ,pLengthText(NULL) + ,pScaleText(NULL) + ,pFormatText(NULL) + ,pBoolDefaultText(NULL) + ,m_pColumnNameText(NULL) + ,m_pTypeText(NULL) + ,m_pAutoIncrementValueText(NULL) + ,pRequired(NULL) + ,pNumType(NULL) + ,pAutoIncrement(NULL) + ,pDefault(NULL) + ,pTextLen(NULL) + ,pLength(NULL) + ,pScale(NULL) + ,pFormatSample(NULL) + ,pBoolDefault(NULL) + ,m_pColumnName(NULL) + ,m_pType(NULL) + ,m_pAutoIncrementValue(NULL) + ,pFormat(NULL) + ,m_pVertScroll( NULL ) + ,m_pHorzScroll( NULL ) + ,m_pPreviousType() + ,nCurChildId(1) + ,m_nPos(-1) + ,aYes(ModuleRes(STR_VALUE_YES)) + ,aNo(ModuleRes(STR_VALUE_NO)) + ,m_nOldVThumb( 0 ) + ,m_nOldHThumb( 0 ) + ,m_nWidth(50) + ,nDelayedGrabFocusEvent(0) + ,m_bAdded(sal_False) + ,m_bRightAligned(false) + ,pActFieldDescr(NULL) +{ + DBG_CTOR(OFieldDescControl,NULL); + + m_pVertScroll = new ScrollBar(this, WB_VSCROLL | WB_REPEAT | WB_DRAG); + m_pHorzScroll = new ScrollBar(this, WB_HSCROLL | WB_REPEAT | WB_DRAG); + m_pVertScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll)); + m_pHorzScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll)); + m_pVertScroll->Show(); + m_pHorzScroll->Show(); + + m_pVertScroll->EnableClipSiblings(); + m_pHorzScroll->EnableClipSiblings(); + + m_pVertScroll->SetLineSize(1); + m_pVertScroll->SetPageSize(1); + m_pHorzScroll->SetLineSize(1); + m_pHorzScroll->SetPageSize(1); + + m_nOldVThumb = m_nOldHThumb = 0; + +} + +//------------------------------------------------------------------------------ +OFieldDescControl::~OFieldDescControl() +{ + DBG_DTOR(OFieldDescControl,NULL); + + { + ::std::auto_ptr<Window> aTemp(m_pVertScroll); + m_pVertScroll = NULL; + } + { + ::std::auto_ptr<Window> aTemp(m_pHorzScroll); + m_pHorzScroll = NULL; + } + if ( m_bAdded ) + ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow)); + pLastFocusWindow = NULL; + + ////////////////////////////////////////////////////////////////////// + // Childs zerstoeren + DeactivateAggregate( tpDefault ); + DeactivateAggregate( tpRequired ); + DeactivateAggregate( tpTextLen ); + DeactivateAggregate( tpNumType ); + DeactivateAggregate( tpScale ); + DeactivateAggregate( tpLength ); + DeactivateAggregate( tpFormat ); + DeactivateAggregate( tpAutoIncrement ); + DeactivateAggregate( tpBoolDefault ); + DeactivateAggregate( tpColumnName ); + DeactivateAggregate( tpType ); + DeactivateAggregate( tpAutoIncrementValue ); + + if(nDelayedGrabFocusEvent) + Application::RemoveUserEvent(nDelayedGrabFocusEvent); +} + +//------------------------------------------------------------------------------ +String OFieldDescControl::BoolStringPersistent(const String& rUIString) const +{ + static String aZero('0'); + static String aOne('1'); + + if (rUIString == aNo) + return aZero; + if (rUIString == aYes) + return aOne; + return String(); +} + +//------------------------------------------------------------------------------ +String OFieldDescControl::BoolStringUI(const String& rPersistentString) const +{ + static String aZero('0'); + static String aOne('1'); + static String aNone(ModuleRes(STR_VALUE_NONE)); + + // FS - 66161 - 14.05.1999 - aeltere Versionen haben eventuell einen sprachabhaengigen String als Default gespeichert + if (rPersistentString.Equals(aYes) || rPersistentString.Equals(aNo)) + return rPersistentString; + + if (rPersistentString == aZero) + return aNo; + if (rPersistentString == aOne) + return aYes; + + return aNone; +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::Init() +{ + Reference< ::com::sun::star::util::XNumberFormatter > xFormatter = GetFormatter(); + ::dbaui::setEvalDateFormatForFormatter(xFormatter); +} + +//------------------------------------------------------------------------------ +IMPL_LINK(OFieldDescControl, OnScroll, ScrollBar*, /*pBar*/) +{ + ScrollAllAggregates(); + return 0; +} +// ----------------------------------------------------------------------------- +namespace +{ + void getMaxXPosition(Window* _pWindow,long& _rnMaxXPosition) + { + if (_pWindow) + { + long nTemp = _pWindow->GetSizePixel().Width() + _pWindow->GetPosPixel().X(); + _rnMaxXPosition = ::std::max(_rnMaxXPosition, nTemp); + } + } +} +//------------------------------------------------------------------------------ +void OFieldDescControl::CheckScrollBars() +{ + // ein paar Berechnungen zur neuen Position der ScrollBars + Size szOverallSize = GetSizePixel(); + long nHScrollHeight = m_pHorzScroll->GetSizePixel().Height(); + long nVScrollWidth = m_pVertScroll->GetSizePixel().Width(); + + long nNewHWidth = szOverallSize.Width() - nVScrollWidth; + long nNewVHeight = szOverallSize.Height() - nHScrollHeight; + + sal_Bool bNeedHScrollBar(sal_False), bNeedVScrollBar(sal_False); + + // die Bereiche anpassen + // brauche ich ScrollBars eigentlich ? + // horizontal : + long lMaxXPosition = 0; + Control* ppAggregates[] = { pRequired, pNumType, pAutoIncrement, pDefault, pTextLen, pLength, pScale, pFormat, m_pColumnName, m_pType,m_pAutoIncrementValue}; + for (sal_uInt16 i=0; i<sizeof(ppAggregates)/sizeof(ppAggregates[0]); ++i) + getMaxXPosition(ppAggregates[i],lMaxXPosition); + + if (m_pHorzScroll) + lMaxXPosition += m_pHorzScroll->GetThumbPos() * HSCROLL_STEP; + + long lMaxXAvailable = szOverallSize.Width(); + bNeedHScrollBar = lMaxXPosition > lMaxXAvailable; + // aendert sich vielleicht noch + + // vertikal + // wieviel Controls habe ich + sal_uInt16 nActive = CountActiveAggregates(); + // welches ist das letzte, was ganz drauf passt ? + sal_uInt16 nLastVisible; + const sal_Int32 nControlHeight = LogicToPixel(Size(0, CONTROL_HEIGHT),MAP_APPFONT).Height(); + const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height(); + if (bNeedHScrollBar) + nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y - nHScrollHeight) / (nControl_Spacing_y + nControlHeight)); + else + nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y) / (nControl_Spacing_y + nControlHeight)); + bNeedVScrollBar = nActive>nLastVisible; + + if (bNeedVScrollBar) + { + // in die urspruengliche Berechnung von lMaxXAvailable ist nicht mit eingegangen, dass ich eine VScrollBar habe, also muss ich + // das nachholen + lMaxXAvailable -= nVScrollWidth; + if (!bNeedHScrollBar && (lMaxXPosition > lMaxXAvailable)) + { + // durch die vertikale brauche ich jetzt ploetzlich doch eine horizontale + bNeedHScrollBar = sal_True; + // nLastVisible anpassen + nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y - nHScrollHeight) / (nControl_Spacing_y + nControlHeight)); + // bNeedVScrollBar aendert sich nicht : es ist schon auf sal_True und nLastVisible wird hoechstens kleiner + } + } + + // jetzt kann ich sie wirklich positionieren und ihre Parameter setzen + if (bNeedVScrollBar) + { + m_pVertScroll->Show(); + m_pVertScroll->SetRangeMax(nActive - nLastVisible); +// m_pVertScroll->SetThumbPos(0); + + m_pVertScroll->SetPosSizePixel( Point(nNewHWidth, 0), Size(nVScrollWidth, szOverallSize.Height()) ); + } + else + { + m_pVertScroll->Hide(); + m_pVertScroll->SetRangeMax(0); + m_pVertScroll->SetThumbPos(0); + } + + if (bNeedHScrollBar) + { + m_pHorzScroll->Show(); + m_pHorzScroll->SetRangeMax((lMaxXPosition - lMaxXAvailable + HSCROLL_STEP - 1 )/HSCROLL_STEP); +// m_pHorzScroll->SetThumbPos(0); + + m_pHorzScroll->SetPosSizePixel( Point(0, nNewVHeight), Size(bNeedVScrollBar ? nNewHWidth : szOverallSize.Width(), nHScrollHeight) ); + } + else + { + m_pHorzScroll->Hide(); + m_pHorzScroll->SetRangeMax(0); + m_pHorzScroll->SetThumbPos(0); + } +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::Resize() +{ + CheckScrollBars(); + ScrollAllAggregates(); +} + +//------------------------------------------------------------------------------ +inline void OFieldDescControl::ScrollAggregate(Control* pText, Control* pInput, Control* pButton, long nDeltaX, long nDeltaY) +{ + if (!pText) + return; + pText->SetPosPixel(pText->GetPosPixel() + Point(nDeltaX, nDeltaY)); + pInput->SetPosPixel(pInput->GetPosPixel() + Point(nDeltaX, nDeltaY)); + if (pButton) + pButton->SetPosPixel(pButton->GetPosPixel() + Point(nDeltaX, nDeltaY)); +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::ScrollAllAggregates() +{ + long nDeltaX = 0, nDeltaY = 0; + if (m_nOldHThumb != m_pHorzScroll->GetThumbPos()) + { + nDeltaX = (m_nOldHThumb - m_pHorzScroll->GetThumbPos()) * HSCROLL_STEP; + m_nOldHThumb = m_pHorzScroll->GetThumbPos(); + } + + if (m_nOldVThumb != m_pVertScroll->GetThumbPos()) + { + const sal_Int32 nControlHeight = LogicToPixel(Size(0, CONTROL_HEIGHT),MAP_APPFONT).Height(); + const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height(); + nDeltaY = (m_nOldVThumb - m_pVertScroll->GetThumbPos()) * (nControl_Spacing_y + nControlHeight); + m_nOldVThumb = m_pVertScroll->GetThumbPos(); + } + + if (nDeltaX || nDeltaY) + { + Control* ppAggregates[] = { pRequired, pNumType + , pAutoIncrement, pDefault + , pTextLen, pLength + , pScale, m_pColumnName + , m_pType, m_pAutoIncrementValue}; + Control* ppAggregatesText[] = { pRequiredText, pNumTypeText + , pAutoIncrementText, pDefaultText + , pTextLenText, pLengthText + , pScaleText, m_pColumnNameText + , m_pTypeText, m_pAutoIncrementValueText}; + OSL_ENSURE(sizeof(ppAggregates)/sizeof(ppAggregates[0]) == sizeof(ppAggregatesText)/sizeof(ppAggregatesText[0]),"Lists are not identical!"); + + for (sal_uInt16 i=0; i<sizeof(ppAggregates)/sizeof(ppAggregates[0]); ++i) + ScrollAggregate(ppAggregatesText[i],ppAggregates[i],NULL,nDeltaX, nDeltaY); + + ScrollAggregate(pFormatText,pFormatSample,pFormat,nDeltaX, nDeltaY); + } +} + +//------------------------------------------------------------------------------ +sal_uInt16 OFieldDescControl::CountActiveAggregates() const +{ + Control* ppAggregates[] = { pRequired, pNumType, pAutoIncrement, pDefault, pTextLen, pLength, pScale, pFormat, m_pColumnName, m_pType,m_pAutoIncrementValue}; + sal_uInt16 nVisibleAggregates = 0; + for (sal_uInt16 i=0; i<sizeof(ppAggregates)/sizeof(ppAggregates[0]); ++i) + if (ppAggregates[i]) + ++nVisibleAggregates; + return nVisibleAggregates; +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::SetReadOnly( sal_Bool bReadOnly ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + ////////////////////////////////////////////////////////////////////// + // Controls enablen/disablen + Control* ppAggregates[] = { pRequired, pNumType + , pAutoIncrement, pDefault + , pTextLen, pLength + , pScale, m_pColumnName + , m_pType, m_pAutoIncrementValue + , pFormat}; + Control* ppAggregatesText[] = { pRequiredText, pNumTypeText + , pAutoIncrementText, pDefaultText + , pTextLenText, pLengthText + , pScaleText, m_pColumnNameText + , m_pTypeText, m_pAutoIncrementValueText + , pFormatText}; + + OSL_ENSURE(sizeof(ppAggregates)/sizeof(ppAggregates[0]) == sizeof(ppAggregatesText)/sizeof(ppAggregatesText[0]),"Lists are not identical!"); + + for (sal_uInt16 i=0; i<sizeof(ppAggregates)/sizeof(ppAggregates[0]); ++i) + { + if ( ppAggregatesText[i] ) + ppAggregatesText[i]->Enable( !bReadOnly ); + if ( ppAggregates[i] ) + ppAggregates[i]->Enable( !bReadOnly ); + } +} + +//------------------------------------------------------------------------------ +String OFieldDescControl::GetControlText( sal_uInt16 nControlId ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + ////////////////////////////////////////////////////////////////////// + // Texte der Controls auslesen + switch( nControlId ) + { + case FIELD_PROPERTY_BOOL_DEFAULT: + if (pBoolDefault) + return pBoolDefault->GetSelectEntry(); + break; + case FIELD_PROPERTY_DEFAULT: + if (pDefault) + return pDefault->GetText(); + break; + case FIELD_PROPERTY_REQUIRED: + if (pRequired) + return pRequired->GetSelectEntry(); + break; + case FIELD_PROPERTY_TEXTLEN: + if (pTextLen) + return String::CreateFromInt64(pTextLen->GetValue()); + case FIELD_PROPERTY_NUMTYPE: + if (pNumType) + return pNumType->GetSelectEntry(); + break; + case FIELD_PROPERTY_AUTOINC: + if (pAutoIncrement) + return pAutoIncrement->GetSelectEntry(); + break; + case FIELD_PROPERTY_LENGTH: + if (pLength) + return pLength->GetText(); + break; + case FIELD_PROPERTY_SCALE: + if (pScale) + return pScale->GetText(); + break; + case FIELD_PROPERTY_FORMAT: + if (pFormatSample) + return pFormatSample->GetText(); + break; + case FIELD_PRPOERTY_COLUMNNAME: + if(m_pColumnName) + return m_pColumnName->GetText(); + case FIELD_PRPOERTY_TYPE: + if(m_pType) + return m_pType->GetSelectEntry(); + break; + case FIELD_PRPOERTY_AUTOINCREMENT: + if(m_pAutoIncrementValue) + return m_pAutoIncrementValue->GetText(); + } + + return String(); +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::SetControlText( sal_uInt16 nControlId, const String& rText ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + ////////////////////////////////////////////////////////////////////// + // Texte der Controls setzen + switch( nControlId ) + { + case FIELD_PROPERTY_BOOL_DEFAULT: + if (pBoolDefault) + { + String sOld = pBoolDefault->GetSelectEntry(); + pBoolDefault->SelectEntry(rText); + if (!sOld.Equals(rText)) + LINK(this, OFieldDescControl, ChangeHdl).Call(pBoolDefault); + } + break; + case FIELD_PROPERTY_DEFAULT: + if (pDefault) + { + pDefault->SetText(rText); + UpdateFormatSample(pActFieldDescr); + } + break; + + case FIELD_PROPERTY_REQUIRED: + if (pRequired) + pRequired->SelectEntry(rText); + break; + + + case FIELD_PROPERTY_TEXTLEN: + if (pTextLen) + pTextLen->SetText(rText); + break; + + case FIELD_PROPERTY_NUMTYPE: + if (pNumType) + pNumType->SelectEntry(rText); + break; + + case FIELD_PROPERTY_AUTOINC: + if (pAutoIncrement) + { + String sOld = pAutoIncrement->GetSelectEntry(); + pAutoIncrement->SelectEntry(rText); + if (!sOld.Equals(rText)) + LINK(this, OFieldDescControl, ChangeHdl).Call(pAutoIncrement); + } + break; + + case FIELD_PROPERTY_LENGTH: + if (pLength) + pLength->SetText(rText); + break; + + case FIELD_PROPERTY_SCALE: + if (pScale) + pScale->SetText(rText); + break; + + case FIELD_PROPERTY_FORMAT: + if (pActFieldDescr) + UpdateFormatSample(pActFieldDescr); + break; + case FIELD_PRPOERTY_COLUMNNAME: + if(m_pColumnName) + m_pColumnName->SetText(rText); + break; + case FIELD_PRPOERTY_TYPE: + if(m_pType) + m_pType->SelectEntry(rText); + break; + case FIELD_PRPOERTY_AUTOINCREMENT: + if(m_pAutoIncrementValue) + m_pAutoIncrementValue->SetText(rText); + break; + } +} + +//------------------------------------------------------------------------ +IMPL_LINK( OFieldDescControl, FormatClickHdl, Button *, /*pButton*/ ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + ////////////////////////////////////////////////////////////////////// + // Temporaere Column erzeugen, mit der Datenaustausch mit Dialog erfolgt + if( !pActFieldDescr ) + return 0; + + sal_Int32 nOldFormatKey(pActFieldDescr->GetFormatKey()); + SvxCellHorJustify rOldJustify = pActFieldDescr->GetHorJustify(); + Reference< XNumberFormatsSupplier > xSupplier = GetFormatter()->getNumberFormatsSupplier(); + SvNumberFormatsSupplierObj* pSupplierImpl = SvNumberFormatsSupplierObj::getImplementation( xSupplier ); + + SvNumberFormatter* pFormatter = pSupplierImpl->GetNumberFormatter(); + sal_uInt16 nFlags; + if(::dbaui::callColumnFormatDialog(this,pFormatter,pActFieldDescr->GetType(),nOldFormatKey,rOldJustify,nFlags,sal_True)) + { + sal_Bool bModified = sal_False; + if(nOldFormatKey != pActFieldDescr->GetFormatKey()) + { + pActFieldDescr->SetFormatKey( nOldFormatKey ); + bModified = sal_True; + } + if(rOldJustify != pActFieldDescr->GetHorJustify()) + { + pActFieldDescr->SetHorJustify( rOldJustify ); + bModified = sal_True; + } + + if(bModified) + { + SetModified(sal_True); + UpdateFormatSample(pActFieldDescr); + } + } + return 0; +} + +// ----------------------------------------------------------------------- +void OFieldDescControl::SetModified(sal_Bool /*bModified*/) +{ +} +//------------------------------------------------------------------------ +IMPL_LINK( OFieldDescControl, ChangeHdl, ListBox *, pListBox ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + if ( !pActFieldDescr ) + return 0; + + if ( pListBox->GetSavedValue() != pListBox->GetSelectEntryPos() ) + SetModified(sal_True); + + // Sonderbehandlund f"ur Bool Felder + if(pListBox == pRequired && pBoolDefault ) + { + // wenn pRequired auf sal_True gesetzt ist, dann darf das sal_Bool Feld nicht den Eintrag <<keiner>> besitzen + String sDef = BoolStringUI(::comphelper::getString(pActFieldDescr->GetControlDefault())); + + if(pRequired->GetSelectEntryPos() == 0) // JA + { + pBoolDefault->RemoveEntry(String(ModuleRes(STR_VALUE_NONE))); + if (!sDef.Equals(aYes) && !sDef.Equals(aNo)) + pBoolDefault->SelectEntryPos(1); // nein als Default + else + pBoolDefault->SelectEntry(sDef); + } + else if(pBoolDefault->GetEntryCount() < 3) + { + pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE))); + pBoolDefault->SelectEntry(sDef); + } + } + + // nur fuer AutoIncrement eine Sonderbehandlung + if (pListBox == pAutoIncrement) + { + if(pListBox->GetSelectEntryPos() == 1) + { // no + DeactivateAggregate( tpAutoIncrementValue ); + if(pActFieldDescr->IsPrimaryKey()) + DeactivateAggregate( tpRequired ); + else if( pActFieldDescr->getTypeInfo()->bNullable ) + { + ActivateAggregate( tpRequired ); + if(pRequired) + { + if( pActFieldDescr->IsNullable() ) + pRequired->SelectEntryPos( 1 ); // no + else + pRequired->SelectEntryPos( 0 ); // yes + } + } + ActivateAggregate( tpDefault ); + } + else + { + DeactivateAggregate( tpRequired ); + DeactivateAggregate( tpDefault ); + ActivateAggregate( tpAutoIncrementValue ); + } + // und jetzt alle nach oben schieben + ArrangeAggregates(); + } + + if(pListBox == m_pType) + { + TOTypeInfoSP pTypeInfo = getTypeInfo(m_pType->GetSelectEntryPos()); + pActFieldDescr->FillFromTypeInfo(pTypeInfo,sal_True,sal_False); // SetType(pTypeInfo); + + DisplayData(pActFieldDescr); + CellModified(-1, m_pType->GetPos()); + } + + return 0; +} +//------------------------------------------------------------------------------ +// alle Control neu anordnen, so dass sie in fester Reihenfolge und wirklich +// OBEN auf der DescriptionPage stehen +void OFieldDescControl::ArrangeAggregates() +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + // die Beschreibung eines Controls + struct AGGREGATE_DESCRIPTION + { + Control* pctrlInputControl; // das eigentliche Control zur Eingabe + Control* pctrlTextControl; // das Label dazu + USHORT nPosSizeArgument; // das zweite Argument fuer SetPosSize + }; + AGGREGATE_DESCRIPTION adAggregates[] = { + { m_pColumnName, m_pColumnNameText, 1}, + { m_pType, m_pTypeText, 1}, + { pAutoIncrement, pAutoIncrementText, 1 }, + { m_pAutoIncrementValue, m_pAutoIncrementValueText, 3 }, + { pNumType, pNumTypeText, 1 }, + { pRequired, pRequiredText, 1 }, + { pTextLen, pTextLenText, 1 }, + { pLength, pLengthText, 1 }, + { pScale, pScaleText, 1 }, + { pDefault, pDefaultText, 3 }, + { pFormatSample, pFormatText, 4 }, + { pBoolDefault, pBoolDefaultText, 1 }, + }; + + long nMaxWidth = 0; + for (size_t i=0; i<sizeof(adAggregates)/sizeof(adAggregates[0]); i++) + { + if (adAggregates[i].pctrlTextControl) + { + nMaxWidth = ::std::max<long>(OutputDevice::GetTextWidth(adAggregates[i].pctrlTextControl->GetText()),nMaxWidth); + } + } + + OSL_ENSURE(nMaxWidth != 0,"Invalid width!"); + + // und los ... + int nCurrentControlPos = 0; + Control* pZOrderPredecessor = NULL; + for (size_t i=0; i<sizeof(adAggregates)/sizeof(adAggregates[0]); i++) + { + if (adAggregates[i].pctrlInputControl) + { + SetPosSize(&adAggregates[i].pctrlTextControl, nCurrentControlPos, 0); + SetPosSize(&adAggregates[i].pctrlInputControl, nCurrentControlPos, adAggregates[i].nPosSizeArgument); + + // die Z-Order so, dass die Controls auch wirklich in derselben Reihenfolge durchwandert werden koennen, in der sie + // hier angeordnet wurden + adAggregates[i].pctrlInputControl->SetZOrder(pZOrderPredecessor, pZOrderPredecessor ? WINDOW_ZORDER_BEHIND : WINDOW_ZORDER_FIRST); + pZOrderPredecessor = adAggregates[i].pctrlInputControl; + + if (adAggregates[i].pctrlInputControl == pFormatSample) + { + pFormat->SetZOrder(pZOrderPredecessor, WINDOW_ZORDER_BEHIND); + pZOrderPredecessor = pFormat; + } + + ++nCurrentControlPos; + } + } + + // eine Sonderbehandlung fuer die Format-Controls + if (pFormat) + { + Point ptSamplePos(pFormatSample->GetPosPixel()); + Size szSampleSize(pFormatSample->GetSizePixel()); + pFormat->SetPosPixel(Point(ptSamplePos.X() + szSampleSize.Width() + 5, ptSamplePos.Y())); + } + + // als letztes noch die ScrollBars in der ZOrder ganz nach oben + m_pVertScroll->SetZOrder(NULL, WINDOW_ZORDER_FIRST); + m_pHorzScroll->SetZOrder(NULL, WINDOW_ZORDER_FIRST); +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::ActivateAggregate( EControlType eType ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + ////////////////////////////////////////////////////////////////////// + // Controls erzeugen + switch( eType ) + { + case tpDefault: + if( pDefault ) + return; + m_nPos++; + pDefaultText =new FixedText( this ); + pDefaultText->SetText( ModuleRes(STR_DEFAULT_VALUE) ); + pDefault = new OPropEditCtrl( this, STR_HELP_DEFAULT_VALUE, FIELD_PROPERTY_DEFAULT, WB_BORDER ); + pDefault->SetHelpId(HID_TAB_ENT_DEFAULT); + // SetPosSize( (Control**)&pDefaultText, m_nPos, 0 ); + // SetPosSize( (Control**)&pDefault, m_nPos, 3 ); + + pDefault->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pDefault->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pDefaultText->EnableClipSiblings(); + pDefault->EnableClipSiblings(); + break; + case tpAutoIncrementValue: + if( m_pAutoIncrementValue || !isAutoIncrementValueEnabled() ) + return; + m_nPos++; + m_pAutoIncrementValueText =new FixedText( this ); + m_pAutoIncrementValueText->SetText( ModuleRes(STR_AUTOINCREMENT_VALUE) ); + m_pAutoIncrementValue = new OPropEditCtrl( this, STR_HELP_AUTOINCREMENT_VALUE, FIELD_PRPOERTY_AUTOINCREMENT, WB_BORDER ); + m_pAutoIncrementValue->SetHelpId(HID_TAB_AUTOINCREMENTVALUE); + // SetPosSize( (Control**)&m_pAutoIncrementValueText, m_nPos, 0 ); + // SetPosSize( (Control**)&m_pAutoIncrementValue, m_nPos, 3 ); + + m_pAutoIncrementValue->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + m_pAutoIncrementValue->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + m_pAutoIncrementValueText->EnableClipSiblings(); + m_pAutoIncrementValue->EnableClipSiblings(); + m_pAutoIncrementValue->SetText( getAutoIncrementValue() ); + break; + + case tpRequired: + { + if( pRequired ) + return; + Reference< XDatabaseMetaData> xMetaData = getMetaData(); + + if(xMetaData.is() && xMetaData->supportsNonNullableColumns()) + { + m_nPos++; + pRequiredText =new FixedText( this ); + pRequiredText->SetText( ModuleRes(STR_FIELD_REQUIRED) ); + pRequired = new OPropListBoxCtrl( this, STR_HELP_FIELD_REQUIRED, FIELD_PROPERTY_REQUIRED, WB_DROPDOWN); + pRequired->SetHelpId(HID_TAB_ENT_REQUIRED); + + pRequired->InsertEntry( aYes ); + pRequired->InsertEntry( aNo ); + pRequired->SelectEntryPos(1); + pRequired->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl)); + + pRequired->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pRequired->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pRequiredText->EnableClipSiblings(); + pRequired->EnableClipSiblings(); + } + } + break; + case tpAutoIncrement: + { + if( pAutoIncrement ) + return; + m_nPos++; + pAutoIncrementText =new FixedText( this ); + pAutoIncrementText->SetText( ModuleRes(STR_FIELD_AUTOINCREMENT) ); + pAutoIncrement = new OPropListBoxCtrl( this, STR_HELP_AUTOINCREMENT, FIELD_PROPERTY_AUTOINC, WB_DROPDOWN ); + pAutoIncrement->SetHelpId(HID_TAB_ENT_AUTOINCREMENT); + + pAutoIncrement->InsertEntry( aYes ); + pAutoIncrement->InsertEntry( aNo ); + pAutoIncrement->SelectEntryPos(0); + pAutoIncrement->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl)); + + pAutoIncrement->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pAutoIncrement->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pAutoIncrementText->EnableClipSiblings(); + pAutoIncrement->EnableClipSiblings(); + } + break; + case tpTextLen: + if( pTextLen ) + return; + m_nPos++; + pTextLenText =new FixedText( this ); + pTextLenText->SetText( ModuleRes(STR_TEXT_LENGTH) ); + + pTextLen = new OPropNumericEditCtrl( this, STR_HELP_TEXT_LENGTH, FIELD_PROPERTY_TEXTLEN, WB_BORDER ); + pTextLen->SetDecimalDigits(0); + pTextLen->SetMin(0); + pTextLen->SetMax(0x7FFFFFFF); // soll draussen geaendert werden, wenn noetig + pTextLen->SetStrictFormat(TRUE); + + pTextLen->SetHelpId(HID_TAB_ENT_TEXT_LEN); + + pTextLen->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pTextLen->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pTextLenText->EnableClipSiblings(); + pTextLen->EnableClipSiblings(); + break; + + case tpType: + if( m_pType) + return; + m_nPos++; + m_pTypeText =new FixedText( this ); + m_pTypeText->SetText( ModuleRes(STR_TAB_FIELD_DATATYPE) ); + m_pType = new OPropListBoxCtrl( this, STR_HELP_AUTOINCREMENT, FIELD_PRPOERTY_TYPE, WB_DROPDOWN ); + m_pType->SetHelpId(HID_TAB_ENT_TYPE); + m_pType->SetDropDownLineCount(20); + { + const OTypeInfoMap* pTypeInfo = getTypeInfo(); + OTypeInfoMap::const_iterator aIter = pTypeInfo->begin(); + for(;aIter != pTypeInfo->end();++aIter) + m_pType->InsertEntry( aIter->second->aUIName ); + } + m_pType->SelectEntryPos(0); + m_pType->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl)); + + m_pType->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + m_pType->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + m_pTypeText->EnableClipSiblings(); + m_pType->EnableClipSiblings(); + break; + case tpColumnName: + if( m_pColumnName ) + return; + m_nPos++; + { + Reference< XDatabaseMetaData> xMetaData = getMetaData(); + sal_uInt32 nMax = xMetaData.is() ? xMetaData->getMaxColumnNameLength() : EDIT_NOLIMIT; + m_pColumnNameText =new FixedText( this ); + m_pColumnNameText->SetText( ModuleRes(STR_TAB_FIELD_NAME) ); + ::rtl::OUString aTmpString( xMetaData.is() ? xMetaData->getExtraNameCharacters() : ::rtl::OUString() ); + m_pColumnName = new OPropColumnEditCtrl( this, + aTmpString, + STR_HELP_DEFAULT_VALUE, + FIELD_PRPOERTY_COLUMNNAME, + WB_BORDER ); + m_pColumnName->SetHelpId(HID_TAB_ENT_COLUMNNAME); + m_pColumnName->SetMaxTextLen(xub_StrLen( nMax ? nMax : EDIT_NOLIMIT)); + m_pColumnName->setCheck( isSQL92CheckEnabled(getConnection()) ); + } + + m_pColumnName->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + m_pColumnName->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + m_pColumnNameText->EnableClipSiblings(); + m_pColumnName->EnableClipSiblings(); + break; + case tpNumType: + if( pNumType ) + return; + m_nPos++; + pNumTypeText =new FixedText( this ); + pNumTypeText->SetText( ModuleRes(STR_NUMERIC_TYPE) ); + + pNumType = new OPropListBoxCtrl( this, STR_HELP_NUMERIC_TYPE, FIELD_PROPERTY_NUMTYPE, WB_DROPDOWN ); + pNumType->SetDropDownLineCount(5); + pNumType->SetHelpId(HID_TAB_ENT_NUMTYP); + + pNumType->InsertEntry( String::CreateFromAscii("Byte") ); + pNumType->InsertEntry( String::CreateFromAscii("SmallInt") ); + pNumType->InsertEntry( String::CreateFromAscii("Integer") ); + pNumType->InsertEntry( String::CreateFromAscii("Single") ); + pNumType->InsertEntry( String::CreateFromAscii("Double") ); + pNumType->SelectEntryPos(2); + pNumType->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl)); + + pNumType->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pNumType->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pNumTypeText->EnableClipSiblings(); + pNumType->EnableClipSiblings(); + break; + + case tpLength: + if( pLength ) + return; + m_nPos++; + pLengthText =new FixedText( this ); + pLengthText->SetText( ModuleRes(STR_LENGTH) ); + + pLength = new OPropNumericEditCtrl( this, STR_HELP_LENGTH, FIELD_PROPERTY_LENGTH, WB_BORDER ); + pLength->SetDecimalDigits(0); + pLength->SetMin(0); + pLength->SetMax(0x7FFFFFFF); // soll draussen geaendert werden, wenn noetig + pLength->SetStrictFormat(TRUE); + + pLength->SetHelpId(HID_TAB_ENT_LEN); + + pLength->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pLength->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pLengthText->EnableClipSiblings(); + pLength->EnableClipSiblings(); + break; + + case tpScale: + if( pScale ) + return; + m_nPos++; + pScaleText =new FixedText( this ); + pScaleText->SetText( ModuleRes(STR_SCALE) ); + pScale = new OPropNumericEditCtrl( this, STR_HELP_SCALE, FIELD_PROPERTY_SCALE, WB_BORDER ); + pScale->SetDecimalDigits(0); + pScale->SetMin(0); + pScale->SetMax(0x7FFFFFFF); // soll draussen geaendert werden, wenn noetig + pScale->SetStrictFormat(TRUE); + + pScale->SetHelpId(HID_TAB_ENT_SCALE); + + pScale->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pScale->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pScaleText->EnableClipSiblings(); + pScale->EnableClipSiblings(); + break; + + case tpFormat: + if (!pFormat) + { + m_nPos++; + pFormatText =new FixedText( this ); + pFormatText->SetText( ModuleRes(STR_FORMAT) ); + + pFormatSample = new OPropEditCtrl( this, STR_HELP_FORMAT_CODE, -1, WB_BORDER ); + pFormatSample->SetHelpId(HID_TAB_ENT_FORMAT_SAMPLE); + pFormatSample->SetReadOnly(sal_True); + pFormatSample->Enable(sal_False); + + pFormat = new PushButton( this, ModuleRes(PB_FORMAT) ); + pFormat->SetHelpId(HID_TAB_ENT_FORMAT); + const sal_Int32 nControlHeight = LogicToPixel(Size(0, CONTROL_HEIGHT),MAP_APPFONT).Height(); + pFormat->SetSizePixel(Size(nControlHeight, nControlHeight)); + pFormat->SetClickHdl( LINK( this, OFieldDescControl, FormatClickHdl ) ); + + pFormatSample->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pFormatSample->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + pFormat->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pFormat->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pFormatText->EnableClipSiblings(); + pFormatSample->EnableClipSiblings(); + pFormat->EnableClipSiblings(); + } + + UpdateFormatSample(pActFieldDescr); + break; + case tpBoolDefault: + if (pBoolDefault) + return; + + m_nPos++; + pBoolDefaultText =new FixedText(this); + pBoolDefaultText->SetText(ModuleRes(STR_DEFAULT_VALUE)); + pBoolDefault = new OPropListBoxCtrl( this, STR_HELP_BOOL_DEFAULT, FIELD_PROPERTY_BOOL_DEFAULT, WB_DROPDOWN ); + pBoolDefault->SetDropDownLineCount(3); + pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE))); + pBoolDefault->InsertEntry(aYes); + pBoolDefault->InsertEntry(aNo); + pBoolDefault->SetHelpId(HID_TAB_ENT_BOOL_DEFAULT); + + pBoolDefault->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot)); + pBoolDefault->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost)); + + pBoolDefaultText->EnableClipSiblings(); + pBoolDefault->EnableClipSiblings(); + break; + + } +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::DeactivateAggregate( EControlType eType ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + pLastFocusWindow = NULL; + ////////////////////////////////////////////////////////////////////// + // Controls zerstoeren + switch( eType ) + { + case tpDefault: + if( !pDefault ) + return; + m_nPos--; + pDefault->Hide(); + pDefaultText->Hide(); + delete pDefault; + delete pDefaultText; + pDefault = NULL; + pDefaultText =NULL; + break; + + case tpAutoIncrementValue: + if( !m_pAutoIncrementValue ) + return; + m_nPos--; + m_pAutoIncrementValue->Hide(); + m_pAutoIncrementValueText->Hide(); + delete m_pAutoIncrementValue; + delete m_pAutoIncrementValueText; + m_pAutoIncrementValue = NULL; + m_pAutoIncrementValueText =NULL; + break; + + case tpColumnName: + if( !m_pColumnName ) + return; + m_nPos--; + m_pColumnName->Hide(); + m_pColumnNameText->Hide(); + delete m_pColumnName; + delete m_pColumnNameText; + m_pColumnName = NULL; + m_pColumnNameText =NULL; + break; + + case tpType: + if( !m_pType ) + return; + m_nPos--; + m_pType->Hide(); + m_pTypeText->Hide(); + delete m_pType; + delete m_pTypeText; + m_pType = NULL; + m_pTypeText =NULL; + break; + + case tpAutoIncrement: + if( !pAutoIncrement ) + return; + m_nPos--; + pAutoIncrement->Hide(); + pAutoIncrementText->Hide(); + delete pAutoIncrement; + delete pAutoIncrementText; + pAutoIncrement = NULL; + pAutoIncrementText =NULL; + break; + + case tpRequired: + if( !pRequired ) + return; + m_nPos--; + pRequired->Hide(); + pRequiredText->Hide(); + delete pRequired; + delete pRequiredText; + pRequired = NULL; + pRequiredText =NULL; + break; + + case tpTextLen: + if( !pTextLen ) + return; + m_nPos--; + pTextLen->Hide(); + pTextLenText->Hide(); + delete pTextLen; + delete pTextLenText; + pTextLen = NULL; + pTextLenText =NULL; + break; + + case tpNumType: + if( !pNumType ) + return; + m_nPos--; + pNumType->Hide(); + pNumTypeText->Hide(); + delete pNumType; + delete pNumTypeText; + pNumType = NULL; + pNumTypeText =NULL; + break; + + case tpLength: + if( !pLength ) + return; + m_nPos--; + pLength->Hide(); + pLengthText->Hide(); + delete pLength; + delete pLengthText; + pLength = NULL; + pLengthText =NULL; + break; + + case tpScale: + if( !pScale ) + return; + m_nPos--; + pScale->Hide(); + pScaleText->Hide(); + delete pScale; + delete pScaleText; + pScale = NULL; + pScaleText =NULL; + break; + + case tpFormat: + if( !pFormat ) + return; + pFormatText->Hide(); + pFormatSample->Hide(); + pFormat->Hide(); + delete pFormatText; + delete pFormatSample; + delete pFormat; + pFormatText =NULL; + pFormatSample = NULL; + pFormat = NULL; + break; + case tpBoolDefault: + if (!pBoolDefault) + return; + m_nPos--; + pBoolDefault->Hide(); + pBoolDefaultText->Hide(); + delete pBoolDefault; + delete pBoolDefaultText; + pBoolDefault = NULL; + pBoolDefaultText =NULL; + break; + + } +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::SetPosSize( Control** ppControl, long nRow, sal_uInt16 nCol ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + + ////////////////////////////////////////////////////////////////////// + // Groesse ermitteln + const sal_Int32 nControlHeight = LogicToPixel(Size(0, CONTROL_HEIGHT),MAP_APPFONT).Height(); + Size aSize; + switch( nCol ) + { + case 0: + aSize.Width() = CONTROL_WIDTH_1; + aSize.Height() = nControlHeight; + break; + case 1: + if ( isRightAligned() ) + aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width(); + else + aSize.Width() = CONTROL_WIDTH_2; + aSize.Height() = nControlHeight; + break; + case 2: + if ( isRightAligned() ) + aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width(); + else + aSize.Width() = CONTROL_WIDTH_2; + aSize.Height() = long(1.5*nControlHeight); + break; + case 3: + if ( isRightAligned() ) + aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width(); + else + aSize.Width() = CONTROL_WIDTH_3; + aSize.Height() = nControlHeight; + break; + case 4: + if ( isRightAligned() ) + aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width(); + else + aSize.Width() = CONTROL_WIDTH_4; + aSize.Height() = nControlHeight; + break; + default: + if ( isRightAligned() ) + aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width(); + else + aSize.Width() = CONTROL_WIDTH_1; + aSize.Height() = nControlHeight; + } + + + ////////////////////////////////////////////////////////////////////// + // Position ermitteln + Point aPosition; + switch( nCol ) + { + case 0: + aPosition.X() = 0; + aPosition.Y() = 1; + break; + case 1: + case 2: + case 3: + case 4: + if ( isRightAligned() ) + { + Size aOwnSize = GetSizePixel(); + aPosition.X() = aOwnSize.Width() - aSize.Width(); + } + else + aPosition.X() = CONTROL_WIDTH_1 + CONTROL_SPACING_X; + break; + default: + aPosition.X() = 0; + } + + (*ppControl)->SetSizePixel( aSize ); + aSize = (*ppControl)->GetSizePixel( ); + + const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height(); + aPosition.Y() += ((nRow+1)*nControl_Spacing_y) + + (nRow*nControlHeight); + + ////////////////////////////////////////////////////////////////////// + // Control anzeigen + (*ppControl)->SetPosSizePixel( aPosition, aSize ); + aSize = (*ppControl)->GetSizePixel(); + + (*ppControl)->Show(); +} +//------------------------------------------------------------------------------ +void OFieldDescControl::DisplayData(OFieldDescription* pFieldDescr ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + pActFieldDescr = pFieldDescr; + if(!pFieldDescr) + { + DeactivateAggregate( tpDefault ); + DeactivateAggregate( tpRequired ); + DeactivateAggregate( tpTextLen ); + DeactivateAggregate( tpNumType ); + DeactivateAggregate( tpScale ); + DeactivateAggregate( tpLength ); + DeactivateAggregate( tpFormat ); + DeactivateAggregate( tpAutoIncrement ); + DeactivateAggregate( tpBoolDefault ); + DeactivateAggregate( tpColumnName ); + DeactivateAggregate( tpType ); + DeactivateAggregate( tpAutoIncrementValue ); + m_pPreviousType = TOTypeInfoSP(); + ////////////////////////////////////////////////////////////////////// + // Zeiger des gespeicherten Focus zuruecksetzen + pLastFocusWindow = NULL; + if ( m_bAdded ) + { + ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow)); + m_bAdded = sal_False; + } + return; + } + + if ( !m_bAdded ) + { + ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::AddWindow)); + m_bAdded = sal_True; + } + + TOTypeInfoSP pFieldType; + if( pFieldDescr ) + pFieldType = pFieldDescr->getTypeInfo(); + + ActivateAggregate( tpColumnName ); + ActivateAggregate( tpType ); + + OSL_ENSURE(pFieldType.get(),"We need a type information here!"); + ////////////////////////////////////////////////////////////////////// + // Wenn sich der Typ geaendert hat, Controls austauschen + if( m_pPreviousType != pFieldType ) + { + ////////////////////////////////////////////////////////////////////// + // Zeiger des gespeicherten Focus zuruecksetzen + pLastFocusWindow = NULL; + + ////////////////////////////////////////////////////////////////////// + // Controls, die nicht mehr angezeigt werden duerfen + DeactivateAggregate( tpNumType ); + + ////////////////////////////////////////////////////////////////////// + // determine which controls we should show and which not + + // 1. the required control + if ( pFieldType->bNullable ) + ActivateAggregate( tpRequired ); + else + DeactivateAggregate( tpRequired ); + + // 2. the autoincrement + if ( pFieldType->bAutoIncrement ) + { + DeactivateAggregate( tpRequired ); + DeactivateAggregate( tpDefault ); + ActivateAggregate( tpAutoIncrement ); + ActivateAggregate( tpAutoIncrementValue ); + } + else + { + DeactivateAggregate( tpAutoIncrement ); + DeactivateAggregate( tpAutoIncrementValue ); + if(pFieldType->bNullable) + ActivateAggregate( tpRequired ); + else + DeactivateAggregate( tpRequired ); + ActivateAggregate( tpDefault ); + } + // 3. the scale and precision + if (pFieldType->nPrecision) + { + ActivateAggregate( tpLength ); + pLength->SetMax(::std::max<sal_Int32>(pFieldType->nPrecision,pFieldDescr->GetPrecision())); + pLength->SetSpecialReadOnly(pFieldType->aCreateParams.getLength()==0); + } + else + DeactivateAggregate( tpLength ); + + if (pFieldType->nMaximumScale) + { + ActivateAggregate( tpScale ); + pScale->SetMax(::std::max<sal_Int32>(pFieldType->nMaximumScale,pFieldDescr->GetScale())); + pScale->SetMin(pFieldType->nMinimumScale); + static const ::rtl::OUString s_sPRECISION(RTL_CONSTASCII_USTRINGPARAM("PRECISION")); + pScale->SetSpecialReadOnly(pFieldType->aCreateParams.getLength() == 0 || pFieldType->aCreateParams == s_sPRECISION); + } + else + DeactivateAggregate( tpScale ); + + // and now look for type specific things + switch( pFieldType->nType ) + { + case DataType::CHAR: + case DataType::VARCHAR: + case DataType::LONGVARCHAR: + DeactivateAggregate( tpLength ); + DeactivateAggregate( tpBoolDefault ); + + ActivateAggregate( tpDefault ); + ActivateAggregate( tpFormat ); + if (pFieldType->nPrecision) + { + ActivateAggregate( tpTextLen ); + pTextLen->SetMax(::std::max<sal_Int32>(pFieldType->nPrecision,pFieldDescr->GetPrecision())); + pTextLen->SetSpecialReadOnly(pFieldType->aCreateParams.getLength()==0); + } + else + DeactivateAggregate( tpTextLen ); + break; + case DataType::DATE: + case DataType::TIME: + case DataType::TIMESTAMP: + DeactivateAggregate( tpLength ); // we don't need a length for date types + DeactivateAggregate( tpTextLen ); + DeactivateAggregate( tpBoolDefault ); + + ActivateAggregate( tpDefault ); + ActivateAggregate( tpFormat ); + break; + case DataType::BIT: + case DataType::BOOLEAN: + DeactivateAggregate( tpTextLen ); + DeactivateAggregate( tpFormat ); + DeactivateAggregate( tpDefault ); + + ActivateAggregate( tpBoolDefault ); + break; + case DataType::DECIMAL: + case DataType::NUMERIC: + case DataType::BIGINT: + case DataType::FLOAT: + case DataType::DOUBLE: + case DataType::TINYINT: + case DataType::SMALLINT: + case DataType::INTEGER: + case DataType::REAL: + DeactivateAggregate( tpTextLen ); + DeactivateAggregate( tpBoolDefault ); + + ActivateAggregate( tpFormat ); + break; + case DataType::BINARY: + case DataType::VARBINARY: + DeactivateAggregate( tpDefault ); + DeactivateAggregate( tpRequired ); + DeactivateAggregate( tpTextLen ); + DeactivateAggregate( tpBoolDefault ); + + ActivateAggregate( tpFormat ); + break; + case DataType::LONGVARBINARY: + case DataType::SQLNULL: + case DataType::OBJECT: + case DataType::DISTINCT: + case DataType::STRUCT: + case DataType::ARRAY: + case DataType::BLOB: + case DataType::CLOB: + case DataType::REF: + case DataType::OTHER: + DeactivateAggregate( tpFormat ); + DeactivateAggregate( tpTextLen ); + DeactivateAggregate( tpBoolDefault ); + + break; + default: + OSL_ENSURE(0,"Unknown type"); + } + m_pPreviousType = pFieldType; + } + if(pFieldDescr) + { + if(pFieldDescr->IsPrimaryKey()) + { + DeactivateAggregate( tpRequired ); + } + else if ( !pAutoIncrement && pFieldType.get() ) + { + if ( pFieldType->bNullable ) + ActivateAggregate( tpRequired ); + else + DeactivateAggregate( tpRequired ); + } + } + ////////////////////////////////////////////////////////////////////// + // Controls initialisieren + if( pAutoIncrement ) + { + if ( pFieldDescr->IsAutoIncrement() ) + { + pAutoIncrement->SelectEntryPos( 0 ); // yes + ActivateAggregate( tpAutoIncrementValue ); + if ( m_pAutoIncrementValue ) + m_pAutoIncrementValue->SetText(pFieldDescr->GetAutoIncrementValue()); + DeactivateAggregate( tpRequired ); + DeactivateAggregate( tpDefault ); + } + else + { + // disable autoincrement value because it should only be visible when autoincrement is to true + DeactivateAggregate( tpAutoIncrementValue ); + pAutoIncrement->SelectEntryPos( 1 ); // no + ActivateAggregate( tpDefault ); + // hat Auswirkungen auf pRequired + if(!pFieldDescr->IsPrimaryKey()) + ActivateAggregate( tpRequired ); + } + } + + if( pDefault ) + { + pDefault->SetText( getControlDefault(pFieldDescr) ); + pDefault->ClearModifyFlag(); + } + + if( pBoolDefault ) + { + // wenn pRequired auf sal_True gesetzt ist, dann darf das sal_Bool Feld nicht den Eintrag <<keiner>> besitzen + String sDef = BoolStringUI(::comphelper::getString(pFieldDescr->GetControlDefault())); + + // sicher stellen das <<keiner>> nur vorhanden ist, wenn das Feld NULL sein darf + if ( ( pFieldType.get() && !pFieldType->bNullable ) || !pFieldDescr->IsNullable() ) + { + pFieldDescr->SetIsNullable(ColumnValue::NO_NULLS); // der Typ sagt das + + pBoolDefault->RemoveEntry(String(ModuleRes(STR_VALUE_NONE))); + if ( !sDef.Equals(aYes) && !sDef.Equals(aNo) ) + pBoolDefault->SelectEntryPos(1); // nein als Default + else + pBoolDefault->SelectEntry(sDef); + + pFieldDescr->SetControlDefault(makeAny(::rtl::OUString(BoolStringPersistent(pBoolDefault->GetSelectEntry())))); + } + else if(pBoolDefault->GetEntryCount() < 3) + { + pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE))); + pBoolDefault->SelectEntry(sDef); + } + else + pBoolDefault->SelectEntry(sDef); + } + + if( pRequired ) + { + if( pFieldDescr->IsNullable() ) + pRequired->SelectEntryPos( 1 ); // no + else + pRequired->SelectEntryPos( 0 ); // yes + } + + if( pTextLen ) + { + pTextLen->SetText( String::CreateFromInt32(pFieldDescr->GetPrecision()) ); + pTextLen->ClearModifyFlag(); + } + + if( pNumType ) + { + OSL_ENSURE(sal_False, "OFieldDescControl::DisplayData: invalid num type!"); + } + + if( pLength ) + pLength->SetText( String::CreateFromInt32(pFieldDescr->GetPrecision()) ); + + if( pScale ) + pScale->SetText( String::CreateFromInt32(pFieldDescr->GetScale()) ); + + if( pFormat ) + UpdateFormatSample(pFieldDescr); + + if(m_pColumnName) + m_pColumnName->SetText(pFieldDescr->GetName()); + + if(m_pType) + { + USHORT nPos = pFieldType.get() ? m_pType->GetEntryPos(String(pFieldDescr->getTypeInfo()->aUIName)) : LISTBOX_ENTRY_NOTFOUND; + if(nPos == LISTBOX_ENTRY_NOTFOUND) + { + const OTypeInfoMap* pMap = getTypeInfo(); + OTypeInfoMap::const_iterator aIter = pMap->find(pFieldType.get() ? pFieldDescr->getTypeInfo()->nType : pFieldDescr->GetType()); + if(aIter == pMap->end() && !pMap->empty()) + { + aIter = pMap->begin(); + if(pFieldDescr->GetPrecision() > aIter->second->nPrecision) + pFieldDescr->SetPrecision(aIter->second->nPrecision); + if(pFieldDescr->GetScale() > aIter->second->nMaximumScale) + pFieldDescr->SetScale(0); + if(!aIter->second->bNullable && pFieldDescr->IsNullable()) + pFieldDescr->SetIsNullable(ColumnValue::NO_NULLS); + if(!aIter->second->bAutoIncrement && pFieldDescr->IsAutoIncrement()) + pFieldDescr->SetAutoIncrement(sal_False); + } + if ( aIter != pMap->end() ) + { + pFieldDescr->SetType(aIter->second); + } + } + m_pType->SelectEntry(pFieldDescr->getTypeInfo()->aUIName); + } + + + ////////////////////////////////////////////////////////////////////// + // Controls Enablen/Disablen + sal_Bool bRead(IsReadOnly()); + + + ArrangeAggregates(); + CheckScrollBars(); + ScrollAllAggregates(); + + SetReadOnly( bRead ); +} +//------------------------------------------------------------------------ +IMPL_LINK(OFieldDescControl, DelayedGrabFocus, Control**, ppControl) +{ + nDelayedGrabFocusEvent = 0; + if (*ppControl) + (*ppControl)->GrabFocus(); + + return 0L; +} + +//------------------------------------------------------------------------------ +IMPL_LINK(OFieldDescControl, OnControlFocusGot, Control*, pControl ) +{ + String strHelpText; + OPropNumericEditCtrl* pNumeric = dynamic_cast< OPropNumericEditCtrl* >( pControl ); + if ( pNumeric ) + { + pNumeric->SaveValue(); + strHelpText = pNumeric->GetHelp(); + } + + OPropColumnEditCtrl* pColumn = dynamic_cast< OPropColumnEditCtrl* >( pControl ); + if ( pColumn ) + { + pColumn->SaveValue(); + strHelpText = pColumn->GetHelp(); + } + + OPropEditCtrl* pEdit = dynamic_cast< OPropEditCtrl* >( pControl ); + if ( pEdit ) + { + pEdit->SaveValue(); + strHelpText = pEdit->GetHelp(); + } + + OPropListBoxCtrl* pListBox = dynamic_cast< OPropListBoxCtrl* >( pControl ); + if ( pListBox ) + { + pListBox->SaveValue(); + strHelpText = pListBox->GetHelp(); + } + + if (pControl == pFormat) + strHelpText =String(ModuleRes(STR_HELP_FORMAT_BUTTON)); + + if (strHelpText.Len() && (pHelp != NULL)) + pHelp->SetHelpText(strHelpText); + + m_pActFocusWindow = pControl; + + return 0L; +} + +//------------------------------------------------------------------------------ +IMPL_LINK(OFieldDescControl, OnControlFocusLost, Control*, pControl ) +{ + if ((pControl == pLength) || (pControl == pTextLen) || (pControl == pScale)) + { + OPropNumericEditCtrl* pConverted = (OPropNumericEditCtrl*)pControl; + if (pConverted->IsModified()) + CellModified(-1, pConverted->GetPos()); + } + if(pControl == m_pColumnName) + { + OPropColumnEditCtrl* pConverted = (OPropColumnEditCtrl*)pControl; + if (pConverted->IsModified()) + CellModified(-1, pConverted->GetPos()); + } + else if ((pControl == pDefault) || (pControl == pFormatSample) || (pControl == m_pAutoIncrementValue) ) + { + OPropEditCtrl* pConverted = (OPropEditCtrl*)pControl; + if (pConverted->IsModified()) + CellModified(-1, pConverted->GetPos()); + } + else if ((pControl == pRequired) || (pControl == pNumType) || (pControl == pAutoIncrement) || (pControl == pBoolDefault) || (pControl == m_pType)) + { + OPropListBoxCtrl* pConverted = (OPropListBoxCtrl*)pControl; + if (pConverted->IsModified()) + CellModified(-1, pConverted->GetPos()); + } + + if (pControl == pDefault) + UpdateFormatSample(pActFieldDescr); + + implFocusLost(pControl); + + return 0L; +} +//------------------------------------------------------------------------------ +void OFieldDescControl::SaveData( OFieldDescription* pFieldDescr ) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + if( !pFieldDescr ) + return; + + ////////////////////////////////////////////////////////////////////// + // Controls auslesen + ::rtl::OUString sDefault; + if (pDefault) + { + if ( pDefault->GetSavedValue() != pDefault->GetText() ) + sDefault = pDefault->GetText(); + } + else if (pBoolDefault) + { + sDefault = BoolStringPersistent(pBoolDefault->GetSelectEntry()); + } + + if ( sDefault.getLength() ) + { + sal_uInt32 nFormatKey; + try + { + if ( isTextFormat(pFieldDescr,nFormatKey) || pBoolDefault ) + { + pFieldDescr->SetControlDefault(makeAny(sDefault)); + } + else + { + try + { + double nValue = GetFormatter()->convertStringToNumber(nFormatKey,sDefault); + nValue = checkDoubleForDateFormat(nValue,nFormatKey,GetFormatter()); + pFieldDescr->SetControlDefault(makeAny(nValue)); + } + catch(const Exception&) + { + if ( sDefault.getLength() ) + pFieldDescr->SetControlDefault(makeAny(sDefault)); + else + pFieldDescr->SetControlDefault(Any()); + } + } + } + catch(const Exception&) + { + } + } // if ( sDefault.getLength() ) + else + pFieldDescr->SetControlDefault(Any()); + + if((pRequired && pRequired->GetSelectEntryPos() == 0) || pFieldDescr->IsPrimaryKey() || (pBoolDefault && pBoolDefault->GetEntryCount() == 2)) // yes + pFieldDescr->SetIsNullable( ColumnValue::NO_NULLS ); + else + pFieldDescr->SetIsNullable( ColumnValue::NULLABLE ); + + if ( pAutoIncrement ) + pFieldDescr->SetAutoIncrement( pAutoIncrement->GetSelectEntryPos() == 0 ); + + if( pTextLen ) + pFieldDescr->SetPrecision( static_cast<sal_Int32>(pTextLen->GetValue()) ); + else if( pLength ) + pFieldDescr->SetPrecision( static_cast<sal_Int32>(pLength->GetValue()) ); + if( pScale ) + pFieldDescr->SetScale( static_cast<sal_Int32>(pScale->GetValue()) ); + + if(m_pColumnName) + pFieldDescr->SetName(m_pColumnName->GetText()); + + if ( m_pAutoIncrementValue && isAutoIncrementValueEnabled() ) + pFieldDescr->SetAutoIncrementValue(m_pAutoIncrementValue->GetText()); +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::UpdateFormatSample(OFieldDescription* pFieldDescr) +{ + if(!pFieldDescr) + return; + if(!pFormatSample) + return; + + pFormatSample->SetText(getControlDefault(pFieldDescr,sal_False)); +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::GetFocus() +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + ////////////////////////////////////////////////////////////////////// + // Setzt den Focus auf das zuletzt aktive Control + TabPage::GetFocus(); + if( pLastFocusWindow ) + { + pLastFocusWindow->GrabFocus(); + pLastFocusWindow = NULL; + } +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::implFocusLost(Window* _pWhich) +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + DBG_ASSERT(!_pWhich || IsChild(_pWhich), "OFieldDescControl::implFocusLost : invalid window !"); + + ////////////////////////////////////////////////////////////////////// + // Das aktive Control merken + if (!pLastFocusWindow) + pLastFocusWindow = _pWhich; + + ////////////////////////////////////////////////////////////////////// + // HelpText zuruecksetzen + if (pHelp && !pHelp->HasChildPathFocus()) + pHelp->SetHelpText( String() ); +} + +//------------------------------------------------------------------------------ +void OFieldDescControl::LoseFocus() +{ + DBG_CHKTHIS(OFieldDescControl,NULL); + + implFocusLost(NULL); + + TabPage::LoseFocus(); +} +// ----------------------------------------------------------------------------- +sal_Bool OFieldDescControl::isCopyAllowed() +{ + sal_Bool bAllowed = (m_pActFocusWindow != NULL) && + (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample || + m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength || + m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName || + m_pActFocusWindow == m_pAutoIncrementValue) && + static_cast<Edit*>(m_pActFocusWindow)->GetSelected().Len() != 0; + + return bAllowed; +} +// ----------------------------------------------------------------------------- +sal_Bool OFieldDescControl::isCutAllowed() +{ + sal_Bool bAllowed = (m_pActFocusWindow != NULL) && + (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample || + m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength || + m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName || + m_pActFocusWindow == m_pAutoIncrementValue) && + static_cast<Edit*>(m_pActFocusWindow)->GetSelected().Len() != 0; + return bAllowed; +} +// ----------------------------------------------------------------------------- +sal_Bool OFieldDescControl::isPasteAllowed() +{ + sal_Bool bAllowed = (m_pActFocusWindow != NULL) && + (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample || + m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength || + m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName || + m_pActFocusWindow == m_pAutoIncrementValue); + if ( bAllowed ) + { + TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(GetParent())); + bAllowed = aTransferData.HasFormat(SOT_FORMAT_STRING); + } + return bAllowed; +} +// ----------------------------------------------------------------------------- +void OFieldDescControl::cut() +{ + if(isCutAllowed()) + static_cast<Edit*>(m_pActFocusWindow)->Cut(); +} +// ----------------------------------------------------------------------------- +void OFieldDescControl::copy() +{ + if(isCopyAllowed()) // this only checks if the focus window is valid + static_cast<Edit*>(m_pActFocusWindow)->Copy(); +} +// ----------------------------------------------------------------------------- +void OFieldDescControl::paste() +{ + if(m_pActFocusWindow) // this only checks if the focus window is valid + static_cast<Edit*>(m_pActFocusWindow)->Paste(); +} +// ----------------------------------------------------------------------------- +sal_Bool OFieldDescControl::isTextFormat(const OFieldDescription* _pFieldDescr,sal_uInt32& _nFormatKey) const +{ + _nFormatKey = _pFieldDescr->GetFormatKey(); + sal_Bool bTextFormat = sal_True; + + try + { + if (!_nFormatKey) + { + Reference< ::com::sun::star::util::XNumberFormatTypes> xNumberTypes(GetFormatter()->getNumberFormatsSupplier()->getNumberFormats(),UNO_QUERY); + OSL_ENSURE(xNumberTypes.is(),"XNumberFormatTypes is null!"); + + _nFormatKey = ::dbtools::getDefaultNumberFormat( _pFieldDescr->GetType(), + _pFieldDescr->GetScale(), + _pFieldDescr->IsCurrency(), + xNumberTypes, + GetLocale()); + } + sal_Int32 nNumberFormat = ::comphelper::getNumberFormatType(GetFormatter(),_nFormatKey); + bTextFormat = (nNumberFormat == ::com::sun::star::util::NumberFormat::TEXT); + } + catch(const Exception&) + { + + } + + return bTextFormat; +} +// ----------------------------------------------------------------------------- +String OFieldDescControl::getControlDefault( const OFieldDescription* _pFieldDescr ,sal_Bool _bCheck) const +{ + ::rtl::OUString sDefault; + sal_Bool bCheck = !_bCheck || _pFieldDescr->GetControlDefault().hasValue(); + if ( bCheck ) + { + sal_uInt32 nFormatKey; + sal_Bool bTextFormat = sal_False; + double nValue = 0.0; + + try + { + bTextFormat = isTextFormat(_pFieldDescr,nFormatKey); + if ( _pFieldDescr->GetControlDefault() >>= sDefault ) + { + if ( !bTextFormat ) + { + if ( sDefault.getLength() ) + { + try + { + nValue = GetFormatter()->convertStringToNumber(nFormatKey,sDefault); + } + catch(const Exception&) + { + return ::rtl::OUString(); // return empty string for format example + } + } + } + } + else + _pFieldDescr->GetControlDefault() >>= nValue; + + + Reference< ::com::sun::star::util::XNumberFormatter> xNumberFormatter = GetFormatter(); + Reference<XPropertySet> xFormSet = xNumberFormatter->getNumberFormatsSupplier()->getNumberFormats()->getByKey(nFormatKey); + OSL_ENSURE(xFormSet.is(),"XPropertySet is null!"); + ::rtl::OUString sFormat; + xFormSet->getPropertyValue(::rtl::OUString::createFromAscii("FormatString")) >>= sFormat; + + if ( !bTextFormat ) + { + Locale aLocale; + ::comphelper::getNumberFormatProperty(xNumberFormatter,nFormatKey,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Locale"))) >>= aLocale; + + sal_Int32 nNumberFormat = ::comphelper::getNumberFormatType(xNumberFormatter,nFormatKey); + if( (nNumberFormat & ::com::sun::star::util::NumberFormat::DATE) == ::com::sun::star::util::NumberFormat::DATE + || (nNumberFormat & ::com::sun::star::util::NumberFormat::DATETIME) == ::com::sun::star::util::NumberFormat::DATETIME ) + { + nValue = DBTypeConversion::toNullDate(DBTypeConversion::getNULLDate(xNumberFormatter->getNumberFormatsSupplier()),nValue); + } + + + + Reference< ::com::sun::star::util::XNumberFormatPreviewer> xPreViewer(xNumberFormatter,UNO_QUERY); + OSL_ENSURE(xPreViewer.is(),"XNumberFormatPreviewer is null!"); + sDefault = xPreViewer->convertNumberToPreviewString(sFormat,nValue,aLocale,sal_True); + } + else if ( !_bCheck || (sDefault.getLength() != 0) ) + sDefault = xNumberFormatter->formatString(nFormatKey,(sDefault.getLength() != 0 )? sDefault : sFormat); + } + catch(const Exception&) + { + + } + } + + return sDefault; +} +// ----------------------------------------------------------------------------- + + + + + diff --git a/dbaccess/source/ui/dlg/ExtensionNotPresent.src b/dbaccess/source/ui/dlg/ExtensionNotPresent.src index ea4cdee8b310..e3adfea5c0ad 100644 --- a/dbaccess/source/ui/dlg/ExtensionNotPresent.src +++ b/dbaccess/source/ui/dlg/ExtensionNotPresent.src @@ -1,91 +1,91 @@ -/*************************************************************************
- *
- * 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: ExtensionNotPresent.src,v $
- * $Revision: 1.5 $
- *
- * 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.
- *
- ************************************************************************/
-#include "ExtensionNotPresent.hrc"
-#include "dbaccess_helpid.hrc"
-#include "dbu_resource.hrc"
-#include <svx/globlmn.hrc>
-#include <svx/svxids.hrc>
-
-
-String RID_STR_EXTENSION_NOT_PRESENT
-{
- // #i96130# use hard coded name
- Text [ en-US ] = "To open a report you require the extension Sun™ Report Builder.\n\nClick 'Download...' to download and install the extension.";
- // OLD: Text [ en-US ] = "To open a report you require the extension %RPT_EXTENSION_NAME.\n\nClick 'Download...' to download and install the extension.";
-};
-// To open a report you require the extension Sun Report Designer weiss der Geier Hauptsache extra langer Name
-// String RID_STR_EXTENSION_NAME
-// {
-// Text = "Sun(TM) Report Builder";
-// };
-
-ModalDialog RID_EXTENSION_NOT_PRESENT_DLG
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- Size = MAP_APPFONT ( DLG_WIDTH , DLG_HEIGHT ) ;
- Text [ en-US ] = "%PRODUCTNAME %PRODUCTVERSION" ;
- HelpId = HID_EXTENSION_NOT_PRESENT_DLG;
- Moveable = TRUE ;
- Closeable = TRUE ;
-
- // most of the calulated values here are overridden by the ExtensionNotPresent ctor itself.
- FixedImage FI_WARNING
- {
- Pos = MAP_APPFONT (CELL_PADDING / 2, CELL_PADDING) ;
- Size = (32, 32);
- Fixed=BMP_EXCEPTION_WARNING;
- };
-
-
- FixedText FT_TEXT
- {
- Pos = MAP_APPFONT ( 32 , CELL_PADDING ) ;
- Size = MAP_APPFONT ( DLG_WIDTH - LEFT_PADDING - RIGHT_PADDING , 3 * (FIXEDTEXT_HEIGHT + 2) ) ;
- // Border = TRUE ;
- // Text will set outside from RID_STR_EXTENSION_NOT_PRESENT
- };
-
- PushButton PB_DOWNLOAD
- {
- Pos = MAP_APPFONT ( DLG_WIDTH / 2 - (CELL_PADDING/2) - BUTTON_WIDTH, ACTION_LINE_START ) ;
- Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ;
- DefButton = TRUE ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Download..." ;
- };
-
- CancelButton PB_CANCEL
- {
- Pos = MAP_APPFONT ( DLG_WIDTH / 2 + (CELL_PADDING/2), ACTION_LINE_START) ;
- Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ;
- TabStop = TRUE ;
- };
-};
+/************************************************************************* + * + * 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: ExtensionNotPresent.src,v $ + * $Revision: 1.5 $ + * + * 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. + * + ************************************************************************/ +#include "ExtensionNotPresent.hrc" +#include "dbaccess_helpid.hrc" +#include "dbu_resource.hrc" +#include <svx/globlmn.hrc> +#include <svx/svxids.hrc> + + +String RID_STR_EXTENSION_NOT_PRESENT +{ + // #i96130# use hard coded name + Text [ en-US ] = "To open a report you require the extension Sun™ Report Builder.\n\nClick 'Download...' to download and install the extension."; + // OLD: Text [ en-US ] = "To open a report you require the extension %RPT_EXTENSION_NAME.\n\nClick 'Download...' to download and install the extension."; +}; +// To open a report you require the extension Sun Report Designer weiss der Geier Hauptsache extra langer Name +// String RID_STR_EXTENSION_NAME +// { +// Text = "Sun(TM) Report Builder"; +// }; + +ModalDialog RID_EXTENSION_NOT_PRESENT_DLG +{ + OutputSize = TRUE ; + SVLook = TRUE ; + Size = MAP_APPFONT ( DLG_WIDTH , DLG_HEIGHT ) ; + Text [ en-US ] = "%PRODUCTNAME %PRODUCTVERSION" ; + HelpId = HID_EXTENSION_NOT_PRESENT_DLG; + Moveable = TRUE ; + Closeable = TRUE ; + + // most of the calulated values here are overridden by the ExtensionNotPresent ctor itself. + FixedImage FI_WARNING + { + Pos = MAP_APPFONT (CELL_PADDING / 2, CELL_PADDING) ; + Size = (32, 32); + Fixed=BMP_EXCEPTION_WARNING; + }; + + + FixedText FT_TEXT + { + Pos = MAP_APPFONT ( 32 , CELL_PADDING ) ; + Size = MAP_APPFONT ( DLG_WIDTH - LEFT_PADDING - RIGHT_PADDING , 3 * (FIXEDTEXT_HEIGHT + 2) ) ; + // Border = TRUE ; + // Text will set outside from RID_STR_EXTENSION_NOT_PRESENT + }; + + PushButton PB_DOWNLOAD + { + Pos = MAP_APPFONT ( DLG_WIDTH / 2 - (CELL_PADDING/2) - BUTTON_WIDTH, ACTION_LINE_START ) ; + Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; + DefButton = TRUE ; + TabStop = TRUE ; + Text [ en-US ] = "~Download..." ; + }; + + CancelButton PB_CANCEL + { + Pos = MAP_APPFONT ( DLG_WIDTH / 2 + (CELL_PADDING/2), ACTION_LINE_START) ; + Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; + TabStop = TRUE ; + }; +}; diff --git a/dbaccess/source/ui/inc/sqledit.hxx b/dbaccess/source/ui/inc/sqledit.hxx index 1de6f785f54a..039ea9f8404b 100644 --- a/dbaccess/source/ui/inc/sqledit.hxx +++ b/dbaccess/source/ui/inc/sqledit.hxx @@ -1,92 +1,92 @@ -/*************************************************************************
- *
- * 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: sqledit.hxx,v $
- * $Revision: 1.5.60.2 $
- *
- * 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_SQLEDIT_HXX
-#define DBAUI_SQLEDIT_HXX
-
-#include <svtools/editsyntaxhighlighter.hxx>
-#include <svtools/lstner.hxx>
-#include <svtools/colorcfg.hxx>
-#include <svtools/sourceviewconfig.hxx>
-
-namespace dbaui
-{
- class OQueryTextView;
- class OSqlEdit : public MultiLineEditSyntaxHighlight, SfxListener
- {
- private:
- Timer m_timerInvalidate;
- Timer m_timerUndoActionCreation;
- Link m_lnkTextModifyHdl;
- String m_strOrigText; // wird beim Undo wiederhergestellt
- OQueryTextView* m_pView;
- BOOL m_bAccelAction; // Wird bei Cut, Copy, Paste gesetzt
- BOOL m_bStopTimer;
- svt::SourceViewConfig m_SourceViewConfig;
- svtools::ColorConfig m_ColorConfig;
-
- DECL_LINK(OnUndoActionTimer, void*);
- DECL_LINK(OnInvalidateTimer, void*);
-
- private:
- void ImplSetFont();
-
- protected:
- virtual void KeyInput( const KeyEvent& rKEvt );
- virtual void GetFocus();
-
- DECL_LINK(ModifyHdl, void*);
-
- public:
- OSqlEdit( OQueryTextView* pParent, WinBits nWinStyle = WB_LEFT | WB_VSCROLL |WB_BORDER);
- virtual ~OSqlEdit();
-
- // Edit overridables
- virtual void SetText(const String& rNewText);
- using MultiLineEditSyntaxHighlight::SetText;
-
- // own functionality
- BOOL IsInAccelAct();
-
- void SetTextModifyHdl(const Link& lnk) { m_lnkTextModifyHdl = lnk; }
- // bitte nicht SetModifyHdl benutzen, den brauche ich selber, der hier wird von dem damit gesetzten Handler
- // gerufen
- // der Link bekommt einen Pointer-to-string, der nach dem Link nicht mehr gueltig ist
-
- void stopTimer();
- void startTimer();
-
- virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
- using MultiLineEditSyntaxHighlight::Notify;
- };
-}
-
-#endif // DBAUI_SQLEDIT_HXX
-
-
+/************************************************************************* + * + * 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: sqledit.hxx,v $ + * $Revision: 1.5.60.2 $ + * + * 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_SQLEDIT_HXX +#define DBAUI_SQLEDIT_HXX + +#include <svtools/editsyntaxhighlighter.hxx> +#include <svtools/lstner.hxx> +#include <svtools/colorcfg.hxx> +#include <svtools/sourceviewconfig.hxx> + +namespace dbaui +{ + class OQueryTextView; + class OSqlEdit : public MultiLineEditSyntaxHighlight, SfxListener + { + private: + Timer m_timerInvalidate; + Timer m_timerUndoActionCreation; + Link m_lnkTextModifyHdl; + String m_strOrigText; // wird beim Undo wiederhergestellt + OQueryTextView* m_pView; + BOOL m_bAccelAction; // Wird bei Cut, Copy, Paste gesetzt + BOOL m_bStopTimer; + svt::SourceViewConfig m_SourceViewConfig; + svtools::ColorConfig m_ColorConfig; + + DECL_LINK(OnUndoActionTimer, void*); + DECL_LINK(OnInvalidateTimer, void*); + + private: + void ImplSetFont(); + + protected: + virtual void KeyInput( const KeyEvent& rKEvt ); + virtual void GetFocus(); + + DECL_LINK(ModifyHdl, void*); + + public: + OSqlEdit( OQueryTextView* pParent, WinBits nWinStyle = WB_LEFT | WB_VSCROLL |WB_BORDER); + virtual ~OSqlEdit(); + + // Edit overridables + virtual void SetText(const String& rNewText); + using MultiLineEditSyntaxHighlight::SetText; + + // own functionality + BOOL IsInAccelAct(); + + void SetTextModifyHdl(const Link& lnk) { m_lnkTextModifyHdl = lnk; } + // bitte nicht SetModifyHdl benutzen, den brauche ich selber, der hier wird von dem damit gesetzten Handler + // gerufen + // der Link bekommt einen Pointer-to-string, der nach dem Link nicht mehr gueltig ist + + void stopTimer(); + void startTimer(); + + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + using MultiLineEditSyntaxHighlight::Notify; + }; +} + +#endif // DBAUI_SQLEDIT_HXX + + diff --git a/dbaccess/util/hidother.src b/dbaccess/util/hidother.src index 08a4620fee86..2f97d1918fd3 100644 --- a/dbaccess/util/hidother.src +++ b/dbaccess/util/hidother.src @@ -1,519 +1,519 @@ -/*************************************************************************
-*
- * 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: hidother.src,v $
- * $Revision: 1.69 $
- *
- * 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.
- *
-************************************************************************/
-
-#include "../inc/dbaccess_helpid.hrc"
-#include "../inc/dbaccess_slotid.hrc"
-#ifndef _SBASLTID_HRC
-#include <svx/svxids.hrc>
-#endif
-
-hidspecial HID_DLG_FILTERCRIT { HelpId = HID_DLG_FILTERCRIT; };
-hidspecial HID_DLG_ORDERCRIT { HelpId = HID_DLG_ORDERCRIT; };
-hidspecial HID_DATABROWSE_HEADER { HelpId = HID_DATABROWSE_HEADER; };
-hidspecial HID_CTL_TABBROWSER { HelpId = HID_CTL_TABBROWSER; };
-hidspecial UID_DATABROWSE_DATAWINDOW { HelpId = UID_DATABROWSE_DATAWINDOW; };
-hidspecial HID_CTL_TREEVIEW { HelpId = HID_CTL_TREEVIEW; };
-hidspecial UID_CTL_CONTENT { HelpId = UID_CTL_CONTENT; };
-hidspecial HID_TLB_TABBROWSER { HelpId = HID_TLB_TABBROWSER; };
-hidspecial HID_TLB_TREELISTBOX { HelpId = HID_TLB_TREELISTBOX; };
-
-hidspecial HID_DSADMIN_DIALOG { HelpId = HID_DSADMIN_DIALOG; };
-hidspecial HID_DSADMIN_CHARSET { HelpId = HID_DSADMIN_CHARSET; };
-hidspecial HID_DSADMIN_TABCONTROL { HelpId = HID_DSADMIN_TABCONTROL; };
-hidspecial HID_DSADMIN_PAGE_GENERAL { HelpId = HID_DSADMIN_PAGE_GENERAL; };
-hidspecial HID_DSADMIN_PAGE_DBASE { HelpId = HID_DSADMIN_PAGE_DBASE; };
-hidspecial HID_DSADMIN_PAGE_JDBC { HelpId = HID_DSADMIN_PAGE_JDBC; };
-hidspecial HID_DSADMIN_PAGE_ODBC { HelpId = HID_DSADMIN_PAGE_ODBC; };
-hidspecial HID_DSADMIN_PAGE_ADABAS { HelpId = HID_DSADMIN_PAGE_ADABAS; };
-hidspecial HID_DSADMIN_PAGE_TEXT { HelpId = HID_DSADMIN_PAGE_TEXT; };
-hidspecial HID_DSADMIN_TABLE_SUBSCRIPTION { HelpId = HID_DSADMIN_TABLE_SUBSCRIPTION; };
-hidspecial HID_DSADMIN_DSACTIONS_NEWDS { HelpId = HID_DSADMIN_DSACTIONS_NEWDS; };
-hidspecial HID_DSADMIN_DSACTIONS_DELETEDS { HelpId = HID_DSADMIN_DSACTIONS_DELETEDS; };
-hidspecial HID_DSADMIN_DSACTIONS_RESTOREDS { HelpId = HID_DSADMIN_DSACTIONS_RESTOREDS; };
-hidspecial HID_DSADMIN_DSNAME { HelpId = HID_DSADMIN_DSNAME; };
-hidspecial HID_DSADMIN_DSTYPE { HelpId = HID_DSADMIN_DSTYPE; };
-hidspecial HID_DSADMIN_URL_GENERAL { HelpId = HID_DSADMIN_URL_GENERAL; };
-hidspecial HID_DSADMIN_BROWSECONN { HelpId = HID_DSADMIN_BROWSECONN; };
-hidspecial HID_DSADMIN_LOGINTIMEOUT_NUMBER { HelpId = HID_DSADMIN_LOGINTIMEOUT_NUMBER; };
-hidspecial HID_DSADMIN_LOGINTIMEOUT_UNIT { HelpId = HID_DSADMIN_LOGINTIMEOUT_UNIT; };
-hidspecial HID_DSADMIN_SHOWDELETED { HelpId = HID_DSADMIN_SHOWDELETED; };
-hidspecial HID_DSADMIN_ALLOWLONG { HelpId = HID_DSADMIN_ALLOWLONG; };
-hidspecial HID_DSADMIN_DBASE_INDICIES { HelpId = HID_DSADMIN_DBASE_INDICIES; };
-hidspecial HID_DSADMIN_DRIVERCLASS { HelpId = HID_DSADMIN_DRIVERCLASS; };
-hidspecial HID_DSADMIN_ODBC_OPTIONS { HelpId = HID_DSADMIN_ODBC_OPTIONS; };
-hidspecial HID_DSADMIN_TEXT_HEADER { HelpId = HID_DSADMIN_TEXT_HEADER; };
-hidspecial HID_DSADMIN_FIELD_SEPARATOR { HelpId = HID_DSADMIN_FIELD_SEPARATOR; };
-hidspecial HID_DSADMIN_TEXT_SEPARATOR { HelpId = HID_DSADMIN_TEXT_SEPARATOR; };
-hidspecial HID_DSADMIN_DECIMAL_SEPARATOR { HelpId = HID_DSADMIN_DECIMAL_SEPARATOR; };
-hidspecial HID_DSADMIN_THOUSANDS_SEPARATOR { HelpId = HID_DSADMIN_THOUSANDS_SEPARATOR; };
-hidspecial HID_DSADMIN_EXTENSION { HelpId = HID_DSADMIN_EXTENSION; };
-hidspecial HID_DSADMIN_ALL_TABLES { HelpId = HID_DSADMIN_ALL_TABLES; };
-hidspecial HID_DSADMIN_NO_TABLES { HelpId = HID_DSADMIN_NO_TABLES; };
-hidspecial HID_DSADMIN_SELECT_TABLES { HelpId = HID_DSADMIN_SELECT_TABLES; };
-hidspecial HID_DSADMIN_TABLE_SELECTOR { HelpId = HID_DSADMIN_TABLE_SELECTOR; };
-hidspecial HID_DSADMIN_SUPPRESS_VERSIONCL { HelpId = HID_DSADMIN_SUPPRESS_VERSIONCL; };
-hidspecial HID_GENERIC_SQL_ERROR { HelpId = HID_GENERIC_SQL_ERROR; };
-hidspecial HID_BROWSER_COLUMNFORMAT { HelpId = HID_BROWSER_COLUMNFORMAT; };
-hidspecial HID_BROWSER_COLUMNWIDTH { HelpId = HID_BROWSER_COLUMNWIDTH; };
-hidspecial HID_BROWSER_TABLEFORMAT { HelpId = HID_BROWSER_TABLEFORMAT; };
-hidspecial HID_BROWSER_ROWHEIGHT { HelpId = HID_BROWSER_ROWHEIGHT; };
-hidspecial HID_BROWSER_EDIT_DATABASE { HelpId = HID_BROWSER_EDIT_DATABASE; };
-hidspecial HID_BROWSER_CLOSECONN { HelpId = HID_BROWSER_CLOSECONN; };
-hidspecial HID_BROWSER_REFRESHCONN { HelpId = HID_BROWSER_REFRESHCONN; };
-hidspecial HID_DSADMIN_SPECIAL_MESSAGE { HelpId = HID_DSADMIN_SPECIAL_MESSAGE; };
-
-hidspecial HID_DLG_ROWHEIGHT { HelpId = HID_DLG_ROWHEIGHT; };
-hidspecial HID_DLG_COLWIDTH { HelpId = HID_DLG_COLWIDTH; };
-hidspecial HID_TLB_QUERYDESIGN { HelpId = HID_TLB_QUERYDESIGN; };
-hidspecial HID_CTL_QRYSQLEDIT { HelpId = HID_CTL_QRYSQLEDIT; };
-
-hidspecial HID_DSADMIN_SPECIAL_MESSAGE { HelpId = HID_DSADMIN_SPECIAL_MESSAGE; };
-
-hidspecial HID_BROWSER_QUERY_CREATE_DESIGN { HelpId = HID_BROWSER_QUERY_CREATE_DESIGN; };
-hidspecial HID_BROWSER_QUERY_CREATE_TEXT { HelpId = HID_BROWSER_QUERY_CREATE_TEXT; };
-
-hidspecial HID_DLG_ERROR { HelpId = HID_DLG_ERROR; };
-hidspecial HID_DLG_TEXT { HelpId = HID_DLG_TEXT; };
-hidspecial UID_SQLERROR_BUTTONMORE { HelpId = UID_SQLERROR_BUTTONMORE; };
-hidspecial HID_DLG_SAVE_AS { HelpId = HID_DLG_SAVE_AS; };
-hidspecial HID_BROWSER_QUERY_EDIT { HelpId = HID_BROWSER_QUERY_EDIT; };
-hidspecial HID_BROWSER_QUERY_DELETE { HelpId = HID_BROWSER_QUERY_DELETE; };
-
-hidspecial HID_DSADMIN_USER_ADO { HelpId = HID_DSADMIN_USER_ADO; };
-hidspecial HID_DSADMIN_PWDREC_ADO { HelpId = HID_DSADMIN_PWDREC_ADO; };
-hidspecial HID_DSADMIN_CONNURL_ADOPAGE { HelpId = HID_DSADMIN_CONNURL_ADOPAGE; };
-hidspecial HID_DSADMIN_PAGE_ADO { HelpId = HID_DSADMIN_PAGE_ADO; };
-
-hidspecial HID_JOINSH_ADDTAB_CLOSE { HelpId = HID_JOINSH_ADDTAB_CLOSE; };
-hidspecial HID_JOINSH_ADDTAB_TABLELIST { HelpId = HID_JOINSH_ADDTAB_TABLELIST; };
-hidspecial HID_JOINSH_ADDTAB_QUERYLIST { HelpId = HID_JOINSH_ADDTAB_QUERYLIST; };
-hidspecial HID_CTL_QRYDGNTAB { HelpId = HID_CTL_QRYDGNTAB; };
-hidspecial HID_DLG_QRY_JOIN { HelpId = HID_DLG_QRY_JOIN; };
-hidspecial HID_DLG_QRY_JOINTYPE { HelpId = HID_DLG_QRY_JOINTYPE; };
-hidspecial HID_DLG_QRY_HELPTEXT { HelpId = HID_DLG_QRY_HELPTEXT; };
-
-hidspecial HID_CTL_QRYDGNCRIT { HelpId = HID_CTL_QRYDGNCRIT; };
-hidspecial HID_QRYDGN_ROW_VISIBLE { HelpId = HID_QRYDGN_ROW_VISIBLE; };
-hidspecial HID_QRYDGN_ROW_TABLE { HelpId = HID_QRYDGN_ROW_TABLE; };
-hidspecial HID_QRYDGN_ROW_FIELD { HelpId = HID_QRYDGN_ROW_FIELD; };
-hidspecial HID_QRYDGN_ROW_ORDER { HelpId = HID_QRYDGN_ROW_ORDER; };
-hidspecial HID_QRYDGN_ROW_FUNCTION { HelpId = HID_QRYDGN_ROW_FUNCTION; };
-hidspecial HID_QRYDGN_ROW_ALIAS { HelpId = HID_QRYDGN_ROW_ALIAS; };
-hidspecial HID_QRYDGN_ROW_CRIT { HelpId = HID_QRYDGN_ROW_CRIT; };
-
-hidspecial HID_QUERY_FUNCTION { HelpId = HID_QUERY_FUNCTION; };
-hidspecial HID_QUERY_TABLENAME { HelpId = HID_QUERY_TABLENAME; };
-hidspecial HID_QUERY_ALIASNAME { HelpId = HID_QUERY_ALIASNAME; };
-hidspecial HID_QUERY_DISTINCT { HelpId = HID_QUERY_DISTINCT; };
-
-hidspecial HID_DSADMIN_QUERYADMINISTRATION { HelpId = HID_DSADMIN_QUERYADMINISTRATION; };
-hidspecial HID_DSADMIN_QUERIES { HelpId = HID_DSADMIN_QUERIES; };
-hidspecial HID_DSADMIN_QUERIES_NEW { HelpId = HID_DSADMIN_QUERIES_NEW; };
-hidspecial HID_DSADMIN_QUERIES_EDIT { HelpId = HID_DSADMIN_QUERIES_EDIT; };
-hidspecial HID_DSADMIN_QUERIES_DELETE { HelpId = HID_DSADMIN_QUERIES_DELETE; };
-
-hidspecial HID_TAB_DESIGN_TABLE_DESC { HelpId = HID_TAB_DESIGN_TABLE_DESC; };
-hidspecial HID_TAB_DESIGN_FIELDCONTROL { HelpId = HID_TAB_DESIGN_FIELDCONTROL; };
-hidspecial HID_TABLE_DESIGN_HELP_WINDOW { HelpId = HID_TABLE_DESIGN_HELP_WINDOW; };
-hidspecial HID_TAB_DESIGN_DESCWIN { HelpId = HID_TAB_DESIGN_DESCWIN; };
-hidspecial HID_TAB_DESIGN_TABLE_PROPS { HelpId = HID_TAB_DESIGN_TABLE_PROPS; };
-hidspecial HID_TABDESIGN_BACKGROUND { HelpId = HID_TABDESIGN_BACKGROUND; };
-hidspecial HID_CTL_TABLEEDIT { HelpId = HID_CTL_TABLEEDIT; };
-hidspecial HID_TABDESIGN_NAMECELL { HelpId = HID_TABDESIGN_NAMECELL; };
-hidspecial HID_TABDESIGN_TYPECELL { HelpId = HID_TABDESIGN_TYPECELL; };
-hidspecial HID_TABDESIGN_COMMENTCELL { HelpId = HID_TABDESIGN_COMMENTCELL; };
-hidspecial SID_TABLEDESIGN_INSERTROWS { HelpId = SID_TABLEDESIGN_INSERTROWS; };
-hidspecial SID_TABLEDESIGN_TABED_PRIMARYKEY { HelpId = SID_TABLEDESIGN_TABED_PRIMARYKEY; };
-hidspecial HID_TLB_TABLEDESIGN { HelpId = HID_TLB_TABLEDESIGN; };
-hidspecial HID_TAB_DESIGN_HELP_TEXT_FRAME { HelpId = HID_TAB_DESIGN_HELP_TEXT_FRAME; };
-hidspecial HID_TABLE_DESIGN_TABPAGE_GENERAL { HelpId = HID_TABLE_DESIGN_TABPAGE_GENERAL; };
-hidspecial HID_TAB_ENT_DEFAULT { HelpId = HID_TAB_ENT_DEFAULT; };
-hidspecial HID_TAB_ENT_FORMAT_SAMPLE { HelpId = HID_TAB_ENT_FORMAT_SAMPLE; };
-hidspecial HID_TAB_ENT_FORMAT { HelpId = HID_TAB_ENT_FORMAT; };
-hidspecial HID_TAB_ENT_BOOL_DEFAULT { HelpId = HID_TAB_ENT_BOOL_DEFAULT; };
-hidspecial HID_TAB_ENT_REQUIRED { HelpId = HID_TAB_ENT_REQUIRED; };
-hidspecial HID_TAB_ENT_AUTOINCREMENT { HelpId = HID_TAB_ENT_AUTOINCREMENT; };
-hidspecial HID_TAB_ENT_TEXT_LEN { HelpId = HID_TAB_ENT_TEXT_LEN; };
-hidspecial HID_TAB_ENT_TYPE { HelpId = HID_TAB_ENT_TYPE; };
-hidspecial HID_TAB_ENT_COLUMNNAME { HelpId = HID_TAB_ENT_COLUMNNAME; };
-hidspecial HID_TAB_ENT_NUMTYP { HelpId = HID_TAB_ENT_NUMTYP; };
-hidspecial HID_TAB_ENT_LEN { HelpId = HID_TAB_ENT_LEN; };
-hidspecial HID_TAB_ENT_SCALE { HelpId = HID_TAB_ENT_SCALE; };
-hidspecial HID_BROWSER_TABLE_CREATE_DESIGN { HelpId = HID_BROWSER_TABLE_CREATE_DESIGN; };
-hidspecial HID_BROWSER_TABLE_EDIT { HelpId = HID_BROWSER_TABLE_EDIT; };
-hidspecial HID_BROWSER_TABLE_DELETE { HelpId = HID_BROWSER_TABLE_DELETE; };
-hidspecial HID_SQLERROR_EXCHAIN_ERRORS { HelpId = HID_SQLERROR_EXCHAIN_ERRORS; };
-hidspecial HID_DBACCESS_START { HelpId = HID_DBACCESS_START; };
-hidspecial HID_SQLERROR_EXCHAIN_TEXT { HelpId = HID_SQLERROR_EXCHAIN_TEXT; };
-hidspecial HID_TAB_WIZ_COLUMN_SELECT { HelpId = HID_TAB_WIZ_COLUMN_SELECT; };
-hidspecial HID_TAB_WIZ_TYPE_SELECT { HelpId = HID_TAB_WIZ_TYPE_SELECT; };
-hidspecial HID_TAB_NAMEMATCHING_COLS_AVAIL { HelpId = HID_TAB_NAMEMATCHING_COLS_AVAIL; };
-hidspecial HID_TAB_NAMEMATCHING_COLS_ASSIGN { HelpId = HID_TAB_NAMEMATCHING_COLS_ASSIGN; };
-hidspecial HID_TAB_WIZ_COPYTABLE { HelpId = HID_TAB_WIZ_COPYTABLE; };
-hidspecial HID_TAB_WIZ_TABLENAME_EDIT { HelpId = HID_TAB_WIZ_TABLENAME_EDIT; };
-hidspecial HID_CTL_RELATIONTAB { HelpId = HID_CTL_RELATIONTAB; };
-hidspecial HID_TLB_RELATIONDESIGN { HelpId = HID_TLB_RELATIONDESIGN ; };
-hidspecial HID_RELATIONDIALOG_LEFTFIELDCELL { HelpId = HID_RELATIONDIALOG_LEFTFIELDCELL ; };
-hidspecial HID_RELATIONDIALOG_RIGHTFIELDCELL { HelpId = HID_RELATIONDIALOG_RIGHTFIELDCELL ; };
-hidspecial HID_RELDLG_KEYFIELDS { HelpId = HID_RELDLG_KEYFIELDS ; };
-hidspecial HID_BROWSER_RELATION_DESIGN { HelpId = HID_BROWSER_RELATION_DESIGN ; };
-hidspecial HID_TABLE_DESIGN_NO_CONNECTION { HelpId = HID_TABLE_DESIGN_NO_CONNECTION ; };
-hidspecial HID_DSADMIN_CREATEDATABASE { HelpId = HID_DSADMIN_CREATEDATABASE ; };
-hidspecial HID_BROWSER_COLUMNINFO { HelpId = HID_BROWSER_COLUMNINFO ; };
-hidspecial HID_DSADMIN_USECATALOG { HelpId = HID_DSADMIN_USECATALOG ; };
-hidspecial HID_BROWSER_VIEW_CREATE_DESIGN { HelpId = HID_BROWSER_VIEW_CREATE_DESIGN ; };
-hidspecial HID_DSADMIN_DOCUMENTS { HelpId = HID_DSADMIN_DOCUMENTS ; };
-hidspecial HID_DSADMIN_DOCUMENTLINKS { HelpId = HID_DSADMIN_DOCUMENTLINKS ; };
-
-hidspecial HID_DSADMIN_FILTER_EXPLANATION { HelpId = HID_DSADMIN_FILTER_EXPLANATION ; };
-hidspecial HID_CONFIRM_DROP_BUTTON_ALL { HelpId = HID_CONFIRM_DROP_BUTTON_ALL ; };
-hidspecial HID_DSBROWSER_BOOKMARK_SELECTED { HelpId = HID_DSBROWSER_BOOKMARK_SELECTED ; };
-hidspecial HID_DSADMIN_TABLE_TOOLBOX { HelpId = HID_DSADMIN_TABLE_TOOLBOX ; };
-hidspecial HID_DSADMIN_QUERY_TOOLBOX { HelpId = HID_DSADMIN_QUERY_TOOLBOX ; };
-hidspecial HID_DSADMIN_BOOKMARK_TOOLBOX { HelpId = HID_DSADMIN_BOOKMARK_TOOLBOX ; };
-hidspecial HID_DSADMIN_PAGE_LDAP { HelpId = HID_DSADMIN_PAGE_LDAP ; };
-hidspecial HID_DSADMIN_LDAP_HOSTNAME { HelpId = HID_DSADMIN_LDAP_HOSTNAME ; };
-hidspecial HID_DSADMIN_LDAP_BASEDN { HelpId = HID_DSADMIN_LDAP_BASEDN ; };
-hidspecial HID_DSADMIN_LDAP_PORTNUMBER { HelpId = HID_DSADMIN_LDAP_PORTNUMBER ; };
-hidspecial HID_DSADMIN_PAGE_MOZILLA { HelpId = HID_DSADMIN_PAGE_MOZILLA ; };
-hidspecial HID_DSADMIN_MOZILLA_PROFILE_NAME { HelpId = HID_DSADMIN_MOZILLA_PROFILE_NAME ; };
-
-hidspecial HID_TAB_PAGE_USERADMIN { HelpId = HID_TAB_PAGE_USERADMIN ; };
-hidspecial HID_TAB_PAGE_PBUSER { HelpId = HID_TAB_PAGE_PBUSER ; };
-hidspecial HID_TAB_PAGE_PBCHGPWD { HelpId = HID_TAB_PAGE_PBCHGPWD ; };
-hidspecial HID_TAB_PAGE_PBUSERDELETE { HelpId = HID_TAB_PAGE_PBUSERDELETE ; };
-hidspecial HID_TAB_PAGE_TBLGRANTS { HelpId = HID_TAB_PAGE_TBLGRANTS ; };
-hidspecial HID_TAB_PAGE_LBUSER { HelpId = HID_TAB_PAGE_LBUSER ; };
-hidspecial HID_DSBROWSER_BOOKMARKSELECTED { HelpId = HID_DSBROWSER_BOOKMARKSELECTED ; };
-hidspecial HID_DSBROWSER_DISCONNECTING { HelpId = HID_DSBROWSER_DISCONNECTING ; };
-hidspecial HID_DSBROWSER_DIRECTSQL { HelpId = HID_DSBROWSER_DIRECTSQL ; };
-hidspecial HID_DSADMIN_LDAP_ROWCOUNT { HelpId = HID_DSADMIN_LDAP_ROWCOUNT ; };
-hidspecial HID_DLG_PASSWORD { HelpId = HID_DLG_PASSWORD ; };
-hidspecial HID_BROWSER_QUERY_EDITSQL { HelpId = HID_BROWSER_QUERY_EDITSQL ; };
-hidspecial HID_BROWSER_OPEN_DOCUMENT { HelpId = HID_BROWSER_OPEN_DOCUMENT ; };
-hidspecial HID_BROWSER_EDIT_DOCUMENT { HelpId = HID_BROWSER_EDIT_DOCUMENT ; };
-hidspecial HID_BROWSER_BEW_DOCUMENT { HelpId = HID_BROWSER_BEW_DOCUMENT ; };
-
-hidspecial HID_DLGIDX_NEWINDEX { HelpId = HID_DLGIDX_NEWINDEX; }
-hidspecial HID_DLGIDX_DROPINDEX { HelpId = HID_DLGIDX_DROPINDEX; }
-hidspecial HID_DLGIDX_RENAMEINDEX { HelpId = HID_DLGIDX_RENAMEINDEX; }
-hidspecial HID_DLGIDX_SAVEINDEX { HelpId = HID_DLGIDX_SAVEINDEX; }
-hidspecial HID_DLGIDX_RESETINDEX { HelpId = HID_DLGIDX_RESETINDEX; }
-hidspecial HID_DLGIDX_INDEXLIST { HelpId = HID_DLGIDX_INDEXLIST; }
-hidspecial UID_DLGINDEX_INDEXDETAILS_BACK { HelpId = UID_DLGINDEX_INDEXDETAILS_BACK; }
-hidspecial UID_DLGINDEX_INDEXDETAILS_MAIN { HelpId = UID_DLGINDEX_INDEXDETAILS_MAIN; }
-hidspecial HID_DLGINDEX_INDEXDETAILS_FIELD { HelpId = HID_DLGINDEX_INDEXDETAILS_FIELD; }
-hidspecial HID_DLGINDEX_INDEXDETAILS_SORTORDER { HelpId = HID_DLGINDEX_INDEXDETAILS_SORTORDER; }
-hidspecial HID_DOCLINKEDIT_URL { HelpId = HID_DOCLINKEDIT_URL; }
-
-hidspecial HID_QUERY_SQLMODE { HelpId = HID_QUERY_SQLMODE ; };
-hidspecial HID_BROWSER_REFRESH_REBUILDVIEW { HelpId = HID_BROWSER_REFRESH_REBUILDVIEW ; };
-hidspecial HID_BROWSER_RENAME_ENTRY { HelpId = HID_BROWSER_RENAME_ENTRY ; };
-
-hidspecial HID_QUERY_EDIT_JOINCONNECTION { HelpId = HID_QUERY_EDIT_JOINCONNECTION ; };
-
-hidspecial HID_DLG_QRY_WINDOW_CONTROL { HelpId = HID_DLG_QRY_WINDOW_CONTROL ; };
-hidspecial HID_DLG_QRY_LEFT_TABLE { HelpId = HID_DLG_QRY_LEFT_TABLE ; };
-hidspecial HID_DLG_QRY_RIGHT_TABLE { HelpId = HID_DLG_QRY_RIGHT_TABLE ; };
-
-hidspecial HID_DLG_REL_CASC_DEL { HelpId = HID_DLG_REL_CASC_DEL ; };
-hidspecial HID_DLG_REL_NO_CASC_DEL { HelpId = HID_DLG_REL_NO_CASC_DEL ; };
-hidspecial HID_DLG_REL_CASC_DEL_NULL { HelpId = HID_DLG_REL_CASC_DEL_NULL ; };
-hidspecial HID_DLG_REL_CASC_DEL_DEFAULT { HelpId = HID_DLG_REL_CASC_DEL_DEFAULT ; };
-
-hidspecial HID_DLG_REL_CASC_UPD { HelpId = HID_DLG_REL_CASC_UPD ; };
-hidspecial HID_DLG_REL_NO_CASC_UPD { HelpId = HID_DLG_REL_NO_CASC_UPD ; };
-hidspecial HID_DLG_REL_CASC_UPD_NULL { HelpId = HID_DLG_REL_CASC_UPD_NULL ; };
-hidspecial HID_DLG_REL_CASC_UPD_DEFAULT { HelpId = HID_DLG_REL_CASC_UPD_DEFAULT ; };
-hidspecial HID_BROWSER_SAVE_RECORD { HelpId = HID_BROWSER_SAVE_RECORD ; };
-hidspecial HID_BROWSER_UNDO_RECORD { HelpId = HID_BROWSER_UNDO_RECORD ; };
-
-// missing pre processor for helpids so we have to include them here
-hidspecial SID_RELATION_ADD_RELATION { HelpId = SID_RELATION_ADD_RELATION ; };
-hidspecial SID_FM_NATIVESQL { HelpId = SID_FM_NATIVESQL ; };
-hidspecial SID_FM_ADDTABLE { HelpId = SID_FM_ADDTABLE ; };
-hidspecial SID_FM_EXECUTE { HelpId = SID_FM_EXECUTE ; };
-
-hidspecial HID_DSADMIN_SQL92CHECK { HelpId = HID_DSADMIN_SQL92CHECK ; };
-hidspecial HID_DSADMIN_AUTOINCREMENTVALUE { HelpId = HID_DSADMIN_AUTOINCREMENTVALUE ; };
-hidspecial HID_TAB_AUTOINCREMENTVALUE { HelpId = HID_TAB_AUTOINCREMENTVALUE ; };
-hidspecial HID_DOCUMENT_CREATE_REPWIZ { HelpId = HID_DOCUMENT_CREATE_REPWIZ ; };
-hidspecial HID_DSADMIN_RETRIEVE_AUTO { HelpId = HID_DSADMIN_RETRIEVE_AUTO ; };
-hidspecial HID_DSADMIN_AUTORETRIEVEENABLED { HelpId = HID_DSADMIN_AUTORETRIEVEENABLED ; };
-
-hidspecial HID_DSADMIN_PAGE_MYSQL_ODBC { HelpId = HID_DSADMIN_PAGE_MYSQL_ODBC ; };
-hidspecial HID_DSADMIN_PAGE_MYSQL_JDBC { HelpId = HID_DSADMIN_PAGE_MYSQL_JDBC ; };
-hidspecial HID_TAB_PAGE_TABLEPRIVILEGES { HelpId = HID_TAB_PAGE_TABLEPRIVILEGES ; };
-
-hidspecial HID_DSADMIN_PAGE_USERDRIVER { HelpId = HID_DSADMIN_PAGE_USERDRIVER ; };
-hidspecial HID_DSADMIN_USER_DEFINED { HelpId = HID_DSADMIN_USER_DEFINED ; };
-hidspecial HID_DSADMIN_USERDEF_OPTIONS { HelpId = HID_DSADMIN_USERDEF_OPTIONS ; };
-hidspecial HID_DSADMIN_CHARSET_USERDEF { HelpId = HID_DSADMIN_CHARSET_USERDEF ; };
-
-hidspecial HID_DLG_RENAME { HelpId = HID_DLG_RENAME ; };
-
-hidspecial HID_DSADMIN_DBASE_PATH { HelpId = HID_DSADMIN_DBASE_PATH ; };
-hidspecial HID_DSADMIN_MYSQL_DATABASE { HelpId = HID_DSADMIN_MYSQL_DATABASE ; };
-hidspecial HID_DSADMIN_MYSQL_ODBC_DATASOURCE { HelpId = HID_DSADMIN_MYSQL_ODBC_DATASOURCE ; };
-hidspecial HID_DSADMIN_ODBC_DATASOURCE { HelpId = HID_DSADMIN_ODBC_DATASOURCE ; };
-hidspecial HID_DSADMIN_ADABAS_DATABASE { HelpId = HID_DSADMIN_ADABAS_DATABASE ; };
-hidspecial HID_DSADMIN_MSACCESS_MDB_FILE { HelpId = HID_DSADMIN_MSACCESS_MDB_FILE ; };
-hidspecial HID_DSADMIN_PAGE_MSACCESS { HelpId = HID_DSADMIN_PAGE_MSACCESS ; };
-hidspecial HID_DSADMIN_FLAT_PATH { HelpId = HID_DSADMIN_FLAT_PATH ; };
-hidspecial HID_DSADMIN_CALC_PATH { HelpId = HID_DSADMIN_CALC_PATH ; };
-hidspecial HID_DSADMIN_ADVANCED { HelpId = HID_DSADMIN_ADVANCED ; };
-hidspecial HID_DSADMIN_BOOLEANCOMPARISON { HelpId = HID_DSADMIN_BOOLEANCOMPARISON ; };
-hidspecial HID_DSADMIN_ORACLE_DATABASE { HelpId = HID_DSADMIN_ORACLE_DATABASE ; };
-
-hidspecial UID_APP_VIEW { HelpId = UID_APP_VIEW ; };
-hidspecial HID_APP_TABLE_TREE { HelpId = HID_APP_TABLE_TREE ; };
-hidspecial HID_APP_FORM_TREE { HelpId = HID_APP_FORM_TREE ; };
-hidspecial HID_APP_QUERY_TREE { HelpId = HID_APP_QUERY_TREE ; };
-hidspecial HID_APP_REPORT_TREE { HelpId = HID_APP_REPORT_TREE ; };
-hidspecial UID_APP_DETAIL_VIEW { HelpId = UID_APP_DETAIL_VIEW; };
-hidspecial UID_APP_VIEW_VERT_SPLIT { HelpId = UID_APP_VIEW_VERT_SPLIT ; };
-hidspecial UID_APP_VIEW_BORDER_WIN { HelpId = UID_APP_VIEW_BORDER_WIN ; };
-hidspecial HID_APP_CREATION_LIST { HelpId = HID_APP_CREATION_LIST ; };
-hidspecial UID_APP_SWAP_VIEW { HelpId = UID_APP_SWAP_VIEW ; };
-hidspecial UID_DLG_TABLE_FILTER { HelpId = UID_DLG_TABLE_FILTER ; };
-hidspecial HID_APP_SWAP_ICONCONTROL { HelpId = HID_APP_SWAP_ICONCONTROL ; };
-
-hidspecial HID_DSADMIN_APPENDTABLEALIAS { HelpId = HID_DSADMIN_APPENDTABLEALIAS ; };
-hidspecial HID_DSADMIN_AS_BEFORE_CORRELATION_NAME { HelpId = HID_DSADMIN_AS_BEFORE_CORRELATION_NAME ; };
-hidspecial HID_DSADMIN_CHECK_REQUIRED_FIELDS { HelpId = HID_DSADMIN_CHECK_REQUIRED_FIELDS ; };
-hidspecial HID_DSADMIN_PARAMETERNAMESUBST { HelpId = HID_DSADMIN_PARAMETERNAMESUBST ; };
-hidspecial HID_DSADMIN_IGNOREDRIVER_PRIV { HelpId = HID_DSADMIN_IGNOREDRIVER_PRIV ; };
-hidspecial HID_DSADMIN_HOSTNAME { HelpId = HID_DSADMIN_HOSTNAME ; };
-hidspecial HID_DSADMIN_PORTNUMBER { HelpId = HID_DSADMIN_PORTNUMBER ; };
-
-hidspecial HID_APP_HELP_TEXT { HelpId = HID_APP_HELP_TEXT ; };
-hidspecial HID_EXPLORERDLG_COLLECTION { HelpId = HID_EXPLORERDLG_COLLECTION ; };
-hidspecial UID_APP_DATABASE_VIEW { HelpId = UID_APP_DATABASE_VIEW ; };
-hidspecial UID_APP_TASKS_VIEW { HelpId = UID_APP_TASKS_VIEW ; };
-hidspecial UID_APP_CONTAINER_VIEW { HelpId = UID_APP_CONTAINER_VIEW ; };
-hidspecial UID_APP_TASKS_WINDOW { HelpId = UID_APP_TASKS_WINDOW ; };
-hidspecial HID_APP_DESCRIPTION_TEXT { HelpId = HID_APP_DESCRIPTION_TEXT ; };
-hidspecial UID_APP_DETAILPAGE_HELPER { HelpId = UID_APP_DETAILPAGE_HELPER ; };
-
-hidspecial HID_APP_VIEW_PREVIEW_CB { HelpId = HID_APP_VIEW_PREVIEW_CB ; };
-hidspecial HID_APP_VIEW_PREVIEW_1 { HelpId = HID_APP_VIEW_PREVIEW_1 ; };
-hidspecial HID_APP_VIEW_PREVIEW_2 { HelpId = HID_APP_VIEW_PREVIEW_2 ; };
-hidspecial UID_APP_VIEW_HORZ_SPLIT { HelpId = UID_APP_VIEW_HORZ_SPLIT ; };
-hidspecial UID_APP_VIEW_PREVIEW_1 { HelpId = UID_APP_VIEW_PREVIEW_1 ; };
-hidspecial HID_APP_VIEW_PREVIEW_3 { HelpId = HID_APP_VIEW_PREVIEW_3 ; };
-
-hidspecial HID_DSADMIN_TYPE_DIALOG { HelpId = HID_DSADMIN_TYPE_DIALOG ; };
-hidspecial HID_DSADMIN_ENABLEOUTERJOIN { HelpId = HID_DSADMIN_ENABLEOUTERJOIN ; };
-hidspecial HID_DSADMIN_ADABASADMIN { HelpId = HID_DSADMIN_ADABASADMIN ; };
-hidspecial HID_DSADMIN_USERADMIN { HelpId = HID_DSADMIN_USERADMIN ; };
-
-hidspecial HID_DBWIZ_PREVIOUS { HelpId = HID_DBWIZ_PREVIOUS ; };
-hidspecial HID_DBWIZ_NEXT { HelpId = HID_DBWIZ_NEXT ; };
-hidspecial HID_DBWIZ_CANCEL { HelpId = HID_DBWIZ_CANCEL ; };
-hidspecial HID_DBWIZ_FINISH { HelpId = HID_DBWIZ_FINISH ; };
-hidspecial UID_DBWIZ_HELP { HelpId = UID_DBWIZ_HELP ; };
-
-hidspecial HID_DSADMIN_CATALOG { HelpId = HID_DSADMIN_CATALOG ; };
-hidspecial HID_DSADMIN_SCHEMA { HelpId = HID_DSADMIN_SCHEMA ; };
-hidspecial HID_DSADMIN_IGNOREINDEXAPPENDIX { HelpId = HID_DSADMIN_IGNOREINDEXAPPENDIX ; };
-
-hidspecial HID_PAGE_DBWIZARD_GENERALPAGE { HelpId = HID_PAGE_DBWIZARD_GENERALPAGE ; };
-hidspecial HID_PAGE_DBWIZARD_GENERAL_RB_CREATEDBDATABASE { HelpId = HID_PAGE_DBWIZARD_GENERAL_RB_CREATEDBDATABASE ; };
-hidspecial HID_PAGE_DBWIZARD_GENERAL_RB_GETEXISTINGDATABASE { HelpId = HID_PAGE_DBWIZARD_GENERAL_RB_GETEXISTINGDATABASE ; };
-
-hidspecial HID_PAGE_DBWIZARD_DBASE_ET_DBASELOCATION { HelpId = HID_PAGE_DBWIZARD_DBASE_ET_DBASELOCATION ; };
-hidspecial HID_PAGE_DBWIZARD_DBASE_PB_DBASELOCATION { HelpId = HID_PAGE_DBWIZARD_DBASE_PB_DBASELOCATION ; };
-
-hidspecial SID_INDEXDESIGN { HelpId = SID_INDEXDESIGN; };
-hidspecial SID_DOCUMENT_DATA_SOURCE { HelpId = SID_DOCUMENT_DATA_SOURCE; };
-hidspecial SID_DB_NEW { HelpId = SID_DB_NEW; };
-hidspecial SID_DB_APP_DISABLE_PREVIEW { HelpId = SID_DB_APP_DISABLE_PREVIEW; };
-hidspecial SID_DB_APP_DSCONNECTION_TYPE { HelpId = SID_DB_APP_DSCONNECTION_TYPE; };
-hidspecial SID_DB_APP_DSADVANCED_SETTINGS { HelpId = SID_DB_APP_DSADVANCED_SETTINGS; };
-
-hidspecial SID_DB_APP_VIEW_DOCINFO_PREVIEW { HelpId = SID_DB_APP_VIEW_DOCINFO_PREVIEW; };
-hidspecial SID_DB_APP_VIEW_DOC_PREVIEW { HelpId = SID_DB_APP_VIEW_DOC_PREVIEW; };
-hidspecial SID_DB_APP_VIEW_TABLES { HelpId = SID_DB_APP_VIEW_TABLES; };
-hidspecial SID_DB_APP_VIEW_QUERIES { HelpId = SID_DB_APP_VIEW_QUERIES; };
-hidspecial SID_DB_APP_DSIMPORT { HelpId = SID_DB_APP_DSIMPORT; };
-hidspecial SID_DB_APP_VIEW_FORMS { HelpId = SID_DB_APP_VIEW_FORMS; };
-hidspecial SID_DB_APP_DSRELDESIGN { HelpId = SID_DB_APP_DSRELDESIGN; };
-hidspecial SID_DB_APP_DSUSERADMIN { HelpId = SID_DB_APP_DSUSERADMIN; };
-hidspecial SID_DB_APP_TABLEFILTER { HelpId = SID_DB_APP_TABLEFILTER; };
-hidspecial SID_DB_APP_CLOSECONNECTION { HelpId = SID_DB_APP_CLOSECONNECTION; };
-hidspecial SID_DB_APP_DSPROPS { HelpId = SID_DB_APP_DSPROPS; };
-hidspecial SID_DB_APP_DBADMIN { HelpId = SID_DB_APP_DBADMIN; };
-
-hidspecial SID_DB_APP_CONVERTTOVIEW { HelpId = SID_DB_APP_CONVERTTOVIEW; };
-hidspecial SID_DB_APP_REFRESH_TABLES { HelpId = SID_DB_APP_REFRESH_TABLES; };
-hidspecial SID_DB_APP_VIEW_REPORTS { HelpId = SID_DB_APP_VIEW_REPORTS; };
-hidspecial SID_DB_APP_DSEXPORT { HelpId = SID_DB_APP_DSEXPORT; };
-
-hidspecial SID_DB_APP_TABLE_DELETE { HelpId = SID_DB_APP_TABLE_DELETE; };
-hidspecial SID_DB_APP_TABLE_RENAME { HelpId = SID_DB_APP_TABLE_RENAME; };
-hidspecial SID_DB_APP_TABLE_EDIT { HelpId = SID_DB_APP_TABLE_EDIT; };
-hidspecial SID_DB_APP_TABLE_OPEN { HelpId = SID_DB_APP_TABLE_OPEN; };
-
-hidspecial SID_DB_APP_QUERY_DELETE { HelpId = SID_DB_APP_QUERY_DELETE; };
-hidspecial SID_DB_APP_QUERY_RENAME { HelpId = SID_DB_APP_QUERY_RENAME; };
-hidspecial SID_DB_APP_QUERY_EDIT { HelpId = SID_DB_APP_QUERY_EDIT; };
-hidspecial SID_DB_APP_QUERY_OPEN { HelpId = SID_DB_APP_QUERY_OPEN; };
-
-hidspecial SID_DB_APP_FORM_DELETE { HelpId = SID_DB_APP_FORM_DELETE; };
-hidspecial SID_DB_APP_FORM_RENAME { HelpId = SID_DB_APP_FORM_RENAME; };
-hidspecial SID_DB_APP_FORM_EDIT { HelpId = SID_DB_APP_FORM_EDIT; };
-hidspecial SID_DB_APP_FORM_OPEN { HelpId = SID_DB_APP_FORM_OPEN; };
-
-hidspecial SID_DB_APP_REPORT_DELETE { HelpId = SID_DB_APP_REPORT_DELETE; };
-hidspecial SID_DB_APP_REPORT_RENAME { HelpId = SID_DB_APP_REPORT_RENAME; };
-hidspecial SID_DB_APP_REPORT_EDIT { HelpId = SID_DB_APP_REPORT_EDIT; };
-hidspecial SID_DB_APP_REPORT_OPEN { HelpId = SID_DB_APP_REPORT_OPEN; };
-
-hidspecial SID_DB_APP_DELETE { HelpId = SID_DB_APP_DELETE; };
-hidspecial SID_DB_APP_RENAME { HelpId = SID_DB_APP_RENAME; };
-hidspecial SID_DB_APP_EDIT { HelpId = SID_DB_APP_EDIT; };
-hidspecial SID_DB_APP_EDIT_SQL_VIEW { HelpId = SID_DB_APP_EDIT_SQL_VIEW; };
-hidspecial SID_DB_APP_OPEN { HelpId = SID_DB_APP_OPEN; };
-
-hidspecial SID_BROWSER_CLEAR_QUERY { HelpId = SID_BROWSER_CLEAR_QUERY; };
-hidspecial SID_RELATION_ADD_RELATION { HelpId = SID_RELATION_ADD_RELATION; };
-hidspecial SID_QUERY_VIEW_FUNCTIONS { HelpId = SID_QUERY_VIEW_FUNCTIONS; };
-hidspecial SID_QUERY_VIEW_TABLES { HelpId = SID_QUERY_VIEW_TABLES; };
-hidspecial SID_QUERY_VIEW_ALIASES { HelpId = SID_QUERY_VIEW_ALIASES; };
-hidspecial SID_QUERY_DISTINCT_VALUES { HelpId = SID_QUERY_DISTINCT_VALUES; };
-hidspecial SID_FORM_CREATE_REPWIZ_PRE_SEL { HelpId = SID_FORM_CREATE_REPWIZ_PRE_SEL; };
-hidspecial SID_REPORT_CREATE_REPWIZ_PRE_SEL { HelpId = SID_REPORT_CREATE_REPWIZ_PRE_SEL; };
-hidspecial SID_APP_NEW_REPORT_PRE_SEL { HelpId = SID_APP_NEW_REPORT_PRE_SEL; };
-
-hidspecial SID_APP_NEW_FOLDER { HelpId = SID_APP_NEW_FOLDER; };
-hidspecial SID_APP_NEW_FORM { HelpId = SID_APP_NEW_FORM; };
-hidspecial SID_DB_APP_PASTE_SPECIAL { HelpId = SID_DB_APP_PASTE_SPECIAL; };
-hidspecial SID_DB_QUERY_PREVIEW { HelpId = SID_DB_QUERY_PREVIEW; };
-
-hidspecial SID_DB_APP_STATUS_TYPE { HelpId = SID_DB_APP_STATUS_TYPE; };
-hidspecial SID_DB_APP_STATUS_DBNAME { HelpId = SID_DB_APP_STATUS_DBNAME; };
-hidspecial SID_DB_APP_STATUS_USERNAME { HelpId = SID_DB_APP_STATUS_USERNAME; };
-hidspecial SID_DB_APP_STATUS_HOSTNAME { HelpId = SID_DB_APP_STATUS_HOSTNAME; };
-
-hidspecial SID_DB_APP_SENDREPORTASMAIL { HelpId = SID_DB_APP_SENDREPORTASMAIL; };
-hidspecial SID_DB_APP_SENDREPORTTOWRITER { HelpId = SID_DB_APP_SENDREPORTTOWRITER; };
-hidspecial SID_DB_NEW_VIEW_SQL { HelpId = SID_DB_NEW_VIEW_SQL; };
-
-hidspecial HID_PAGE_DBWIZARD_TEXT_ET_LOCATIONTEXTFILE { HelpId = HID_PAGE_DBWIZARD_TEXT_ET_LOCATIONTEXTFILE ; };
-hidspecial HID_PAGE_DBWIZARD_TEXT_PB_LOCATIONTEXTFILE { HelpId = HID_PAGE_DBWIZARD_TEXT_PB_LOCATIONTEXTFILE ; };
-
-hidspecial HID_PAGE_DBWIZARD_TEXT_RB_ACCESSTXTFILES { HelpId = HID_PAGE_DBWIZARD_TEXT_RB_ACCESSTXTFILES ; };
-hidspecial HID_PAGE_DBWIZARD_TEXT_RB_ACCESSCSVFILES { HelpId = HID_PAGE_DBWIZARD_TEXT_RB_ACCESSCSVFILES ; };
-hidspecial HID_PAGE_DBWIZARD_TEXT_RB_ACCESSOTHERFILES { HelpId = HID_PAGE_DBWIZARD_TEXT_RB_ACCESSOTHERFILES ; };
-hidspecial HID_PAGE_DBWIZARD_TEXT_ET_OWNEXTENSION { HelpId = HID_PAGE_DBWIZARD_TEXT_ET_OWNEXTENSION ; };
-
-hidspecial HID_PAGE_DBWIZARD_TEXT_CB_FIELDSEPARATOR { HelpId = HID_PAGE_DBWIZARD_TEXT_CB_FIELDSEPARATOR ; };
-hidspecial HID_PAGE_DBWIZARD_TEXT_CB_TEXTSEPARATOR { HelpId = HID_PAGE_DBWIZARD_TEXT_CB_TEXTSEPARATOR ; };
-hidspecial HID_PAGE_DBWIZARD_TEXT_CB_DECIMALSEPARATOR { HelpId = HID_PAGE_DBWIZARD_TEXT_CB_DECIMALSEPARATOR ; };
-hidspecial HID_PAGE_DBWIZARD_TEXT_CB_THOUSANDSSEPARATOR { HelpId = HID_PAGE_DBWIZARD_TEXT_CB_THOUSANDSSEPARATOR ; };
-
-hidspecial HID_PAGE_DBWIZARD_MSACCESS_ET_MSACCESSLOCATION { HelpId = HID_PAGE_DBWIZARD_MSACCESS_ET_MSACCESSLOCATION ; };
-hidspecial HID_PAGE_DBWIZARD_MSACCESS_PB_MSACCESSLOCATION { HelpId = HID_PAGE_DBWIZARD_MSACCESS_PB_MSACCESSLOCATION ; };
-
-hidspecial HID_PAGE_DBWIZARD_LDAP_ET_HOSTSERVER { HelpId = HID_PAGE_DBWIZARD_LDAP_ET_HOSTSERVER ; };
-hidspecial HID_PAGE_DBWIZARD_LDAP_ET_BASEDN { HelpId = HID_PAGE_DBWIZARD_LDAP_ET_BASEDN ; };
-hidspecial HID_PAGE_DBWIZARD_LDAP_ET_PORTNUMBER { HelpId = HID_PAGE_DBWIZARD_LDAP_ET_PORTNUMBER ; };
-hidspecial HID_PAGE_DBWIZARD_LDAP_CB_USESSL { HelpId = HID_PAGE_DBWIZARD_LDAP_CB_USESSL ; };
-hidspecial HID_PAGE_DBWIZARD_LDAP_PB_TESTLDAPCONNECTION { HelpId = HID_PAGE_DBWIZARD_LDAP_PB_TESTLDAPCONNECTION ; };
-
-hidspecial HID_PAGE_DBWIZARD_ADABAS_ET_ADABASNAME { HelpId = HID_PAGE_DBWIZARD_ADABAS_ET_ADABASNAME ; };
-hidspecial HID_PAGE_DBWIZARD_ADABAS_PB_ADABASNAME { HelpId = HID_PAGE_DBWIZARD_ADABAS_PB_ADABASNAME ; };
-
-hidspecial HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAODBC { HelpId = HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAODBC ; };
-hidspecial HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAJDBC { HelpId = HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAJDBC ; };
-
-hidspecial HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEDBNAME { HelpId = HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEDBNAME ; };
-hidspecial HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEHOSTSERVER { HelpId = HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEHOSTSERVER ; };
-hidspecial HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEPORT { HelpId = HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEPORT ; };
-hidspecial HID_PAGE_DBWIZARD_ORACLE_ET_ORACLECLASS { HelpId = HID_PAGE_DBWIZARD_ORACLE_ET_ORACLECLASS ; };
-hidspecial HID_PAGE_DBWIZARD_ORACLE_PB_TESTORACLECLASS { HelpId = HID_PAGE_DBWIZARD_ORACLE_PB_TESTORACLECLASS ; };
-
-hidspecial HID_PAGE_DBWIZARD_JDBC_ET_JDBCURL { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_JDBCURL ; };
-hidspecial HID_PAGE_DBWIZARD_JDBC_PB_JDBCURL { HelpId = HID_PAGE_DBWIZARD_JDBC_PB_JDBCURL ; };
-
-hidspecial HID_PAGE_DBWIZARD_JDBC_ET_MYSQLDBNAME { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_MYSQLDBNAME ; };
-hidspecial HID_PAGE_DBWIZARD_JDBC_ET_MYSQLHOSTSERVER { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_MYSQLHOSTSERVER ; };
-hidspecial HID_PAGE_DBWIZARD_JDBC_ET_MYSQLPORT { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_MYSQLPORT ; };
-hidspecial HID_PAGE_DBWIZARD_JDBC_ET_MYSQLCLASS { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_MYSQLCLASS ; };
-hidspecial HID_PAGE_DBWIZARD_JDBC_PB_TESTMYSQLCLASS { HelpId = HID_PAGE_DBWIZARD_JDBC_PB_TESTMYSQLCLASS ; };
-
-hidspecial HID_PAGE_DBWIZARD_ADO_ET_ADOURL { HelpId = HID_PAGE_DBWIZARD_ADO_ET_ADOURL ; };
-hidspecial HID_PAGE_DBWIZARD_ADO_PB_ADOURL { HelpId = HID_PAGE_DBWIZARD_ADO_PB_ADOURL ; };
-hidspecial HID_PAGE_DBWIZARD_ADO_PB_TESTADOCONNECTION { HelpId = HID_PAGE_DBWIZARD_ADO_PB_TESTADOCONNECTION ; };
-
-hidspecial HID_PAGE_DBWIZARD_ODBC_ET_NAMEOFODBCDATASOURCE { HelpId = HID_PAGE_DBWIZARD_ODBC_ET_NAMEOFODBCDATASOURCE ; };
-hidspecial HID_PAGE_DBWIZARD_ODBC_PB_NAMEOFODBCDATASOURCE { HelpId = HID_PAGE_DBWIZARD_ODBC_PB_NAMEOFODBCDATASOURCE ; };
-
-hidspecial HID_PAGE_DBWIZARD_SPREADSHEET_ET_SPREADSHEETPATH { HelpId = HID_PAGE_DBWIZARD_SPREADSHEET_ET_SPREADSHEETPATH ; };
-hidspecial HID_PAGE_DBWIZARD_SPREADSHEET_PB_SPREADSHEETPATH { HelpId = HID_PAGE_DBWIZARD_SPREADSHEET_PB_SPREADSHEETPATH ; };
-hidspecial HID_PAGE_DBWIZARD_SPREADSHEET_CB_SPREADSHEETPASSWORDREQUIRED { HelpId = HID_PAGE_DBWIZARD_SPREADSHEET_CB_SPREADSHEETPASSWORDREQUIRED ; };
-
-hidspecial HID_PAGE_DBWIZARD_AUTHENTIFICATION_CB_GENERALPASSWORDREQUIRED { HelpId = HID_PAGE_DBWIZARD_AUTHENTIFICATION_CB_GENERALPASSWORDREQUIRED ; };
-hidspecial HID_PAGE_DBWIZARD_AUTHENTIFICATION_ET_GENERALUSERNAME { HelpId = HID_PAGE_DBWIZARD_AUTHENTIFICATION_ET_GENERALUSERNAME ; };
-hidspecial HID_PAGE_DBWIZARD_FINAL_RB_REGISTERDATASOURCE { HelpId = HID_PAGE_DBWIZARD_FINAL_RB_REGISTERDATASOURCE ; };
-hidspecial HID_PAGE_DBWIZARD_FINAL_RB_DONTREGISTERDATASOURCE { HelpId = HID_PAGE_DBWIZARD_FINAL_RB_DONTREGISTERDATASOURCE ; };
-hidspecial HID_PAGE_DBWIZARD_FINAL_CB_STARTTABLEWIZARD { HelpId = HID_PAGE_DBWIZARD_FINAL_CB_STARTTABLEWIZARD ; };
-hidspecial HID_PAGE_DBWIZARD_FINAL_CB_OPENAFTERWARDS { HelpId = HID_PAGE_DBWIZARD_FINAL_CB_OPENAFTERWARDS ; };
-hidspecial HID_DSADMIN_USESSL_LDAP { HelpId = HID_DSADMIN_USESSL_LDAP ; };
-hidspecial HID_DSADMIN_DOSLINEENDS { HelpId = HID_DSADMIN_DOSLINEENDS ; };
-hidspecial SID_DB_QUERY_PREVIEW { HelpId = SID_DB_QUERY_PREVIEW ; };
-hidspecial HID_PAGE_DBWIZARD_USERDEFINED_ET_BROWSE { HelpId = HID_PAGE_DBWIZARD_USERDEFINED_ET_BROWSE ; };
-hidspecial HID_PAGE_DBWIZARD_USERDEFINED_BROWSE { HelpId = HID_PAGE_DBWIZARD_USERDEFINED_BROWSE ; };
-hidspecial HID_DLG_DATABASE_WIZARD { HelpId = HID_DLG_DATABASE_WIZARD ; };
-hidspecial HID_BROWSER_ADMINISTRATE { HelpId = HID_BROWSER_ADMINISTRATE ; };
-hidspecial HID_DSADMIN_IGNORECURRENCY { HelpId = HID_DSADMIN_IGNORECURRENCY ; };
-hidspecial HID_DLG_QRY_JOIN_CONTROL { HelpId = HID_DLG_QRY_JOIN_CONTROL ; };
-hidspecial HID_EXTENSION_NOT_PRESENT_DLG { HelpId = HID_EXTENSION_NOT_PRESENT_DLG ; };
-hidspecial HID_DLG_ADABAS_NEWDB { HelpId = HID_DLG_ADABAS_NEWDB; };
-hidspecial HID_DLG_ADABAS_DBNAME { HelpId = HID_DLG_ADABAS_DBNAME ; };
-hidspecial HID_DLG_ADABAS_SYSUSR { HelpId = HID_DLG_ADABAS_SYSUSR ; };
-hidspecial HID_DLG_ADABAS_SYSPWD { HelpId = HID_DLG_ADABAS_SYSPWD ; };
-hidspecial HID_DLG_ADABAS_CONUSR { HelpId = HID_DLG_ADABAS_CONUSR ; };
-hidspecial HID_DLG_ADABAS_CONPWD { HelpId = HID_DLG_ADABAS_CONPWD ; };
-hidspecial HID_DLG_ADABAS_DATADEVSPACE_SIZE { HelpId = HID_DLG_ADABAS_DATADEVSPACE_SIZE ; };
-hidspecial HID_DLG_ADABAS_CACHE_SIZE { HelpId = HID_DLG_ADABAS_CACHE_SIZE ; };
-hidspecial HID_DLG_ADABAS_USR { HelpId = HID_DLG_ADABAS_USR ; };
-hidspecial HID_DLG_ADABAS_DOMAINPWD { HelpId = HID_DLG_ADABAS_DOMAINPWD ; };
-hidspecial HID_DLG_ADABAS_RESTORE { HelpId = HID_DLG_ADABAS_RESTORE ; };
-hidspecial HID_DLG_ADABAS_PBRESTORE { HelpId = HID_DLG_ADABAS_PBRESTORE ; };
-hidspecial HID_DLG_ADABAS_SYSDEVSPACE { HelpId = HID_DLG_ADABAS_SYSDEVSPACE ; };
-hidspecial HID_DLG_ADABAS_PBSYSDEVSPACE { HelpId = HID_DLG_ADABAS_PBSYSDEVSPACE ; };
-hidspecial HID_DLG_ADABAS_TRANSACTIONLOG { HelpId = HID_DLG_ADABAS_TRANSACTIONLOG ; };
-hidspecial HID_DLG_ADABAS_PBTRANSACTIONLOG { HelpId = HID_DLG_ADABAS_PBTRANSACTIONLOG ; };
-hidspecial HID_DLG_ADABAS_DATADEVSPACE { HelpId = HID_DLG_ADABAS_DATADEVSPACE ; };
-hidspecial HID_DLG_ADABAS_PBDATADEVSPACE { HelpId = HID_DLG_ADABAS_PBDATADEVSPACE ; };
-hidspecial HID_DLG_ADABAS_TRANSACTIONLOG_SIZE { HelpId = HID_DLG_ADABAS_TRANSACTIONLOG_SIZE; };
-
-hidspecial HID_MACRO_MIGRATION_BACKUP_LOCATION { HelpId = HID_MACRO_MIGRATION_BACKUP_LOCATION; };
+/************************************************************************* +* + * 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: hidother.src,v $ + * $Revision: 1.69 $ + * + * 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. + * +************************************************************************/ + +#include "../inc/dbaccess_helpid.hrc" +#include "../inc/dbaccess_slotid.hrc" +#ifndef _SBASLTID_HRC +#include <svx/svxids.hrc> +#endif + +hidspecial HID_DLG_FILTERCRIT { HelpId = HID_DLG_FILTERCRIT; }; +hidspecial HID_DLG_ORDERCRIT { HelpId = HID_DLG_ORDERCRIT; }; +hidspecial HID_DATABROWSE_HEADER { HelpId = HID_DATABROWSE_HEADER; }; +hidspecial HID_CTL_TABBROWSER { HelpId = HID_CTL_TABBROWSER; }; +hidspecial UID_DATABROWSE_DATAWINDOW { HelpId = UID_DATABROWSE_DATAWINDOW; }; +hidspecial HID_CTL_TREEVIEW { HelpId = HID_CTL_TREEVIEW; }; +hidspecial UID_CTL_CONTENT { HelpId = UID_CTL_CONTENT; }; +hidspecial HID_TLB_TABBROWSER { HelpId = HID_TLB_TABBROWSER; }; +hidspecial HID_TLB_TREELISTBOX { HelpId = HID_TLB_TREELISTBOX; }; + +hidspecial HID_DSADMIN_DIALOG { HelpId = HID_DSADMIN_DIALOG; }; +hidspecial HID_DSADMIN_CHARSET { HelpId = HID_DSADMIN_CHARSET; }; +hidspecial HID_DSADMIN_TABCONTROL { HelpId = HID_DSADMIN_TABCONTROL; }; +hidspecial HID_DSADMIN_PAGE_GENERAL { HelpId = HID_DSADMIN_PAGE_GENERAL; }; +hidspecial HID_DSADMIN_PAGE_DBASE { HelpId = HID_DSADMIN_PAGE_DBASE; }; +hidspecial HID_DSADMIN_PAGE_JDBC { HelpId = HID_DSADMIN_PAGE_JDBC; }; +hidspecial HID_DSADMIN_PAGE_ODBC { HelpId = HID_DSADMIN_PAGE_ODBC; }; +hidspecial HID_DSADMIN_PAGE_ADABAS { HelpId = HID_DSADMIN_PAGE_ADABAS; }; +hidspecial HID_DSADMIN_PAGE_TEXT { HelpId = HID_DSADMIN_PAGE_TEXT; }; +hidspecial HID_DSADMIN_TABLE_SUBSCRIPTION { HelpId = HID_DSADMIN_TABLE_SUBSCRIPTION; }; +hidspecial HID_DSADMIN_DSACTIONS_NEWDS { HelpId = HID_DSADMIN_DSACTIONS_NEWDS; }; +hidspecial HID_DSADMIN_DSACTIONS_DELETEDS { HelpId = HID_DSADMIN_DSACTIONS_DELETEDS; }; +hidspecial HID_DSADMIN_DSACTIONS_RESTOREDS { HelpId = HID_DSADMIN_DSACTIONS_RESTOREDS; }; +hidspecial HID_DSADMIN_DSNAME { HelpId = HID_DSADMIN_DSNAME; }; +hidspecial HID_DSADMIN_DSTYPE { HelpId = HID_DSADMIN_DSTYPE; }; +hidspecial HID_DSADMIN_URL_GENERAL { HelpId = HID_DSADMIN_URL_GENERAL; }; +hidspecial HID_DSADMIN_BROWSECONN { HelpId = HID_DSADMIN_BROWSECONN; }; +hidspecial HID_DSADMIN_LOGINTIMEOUT_NUMBER { HelpId = HID_DSADMIN_LOGINTIMEOUT_NUMBER; }; +hidspecial HID_DSADMIN_LOGINTIMEOUT_UNIT { HelpId = HID_DSADMIN_LOGINTIMEOUT_UNIT; }; +hidspecial HID_DSADMIN_SHOWDELETED { HelpId = HID_DSADMIN_SHOWDELETED; }; +hidspecial HID_DSADMIN_ALLOWLONG { HelpId = HID_DSADMIN_ALLOWLONG; }; +hidspecial HID_DSADMIN_DBASE_INDICIES { HelpId = HID_DSADMIN_DBASE_INDICIES; }; +hidspecial HID_DSADMIN_DRIVERCLASS { HelpId = HID_DSADMIN_DRIVERCLASS; }; +hidspecial HID_DSADMIN_ODBC_OPTIONS { HelpId = HID_DSADMIN_ODBC_OPTIONS; }; +hidspecial HID_DSADMIN_TEXT_HEADER { HelpId = HID_DSADMIN_TEXT_HEADER; }; +hidspecial HID_DSADMIN_FIELD_SEPARATOR { HelpId = HID_DSADMIN_FIELD_SEPARATOR; }; +hidspecial HID_DSADMIN_TEXT_SEPARATOR { HelpId = HID_DSADMIN_TEXT_SEPARATOR; }; +hidspecial HID_DSADMIN_DECIMAL_SEPARATOR { HelpId = HID_DSADMIN_DECIMAL_SEPARATOR; }; +hidspecial HID_DSADMIN_THOUSANDS_SEPARATOR { HelpId = HID_DSADMIN_THOUSANDS_SEPARATOR; }; +hidspecial HID_DSADMIN_EXTENSION { HelpId = HID_DSADMIN_EXTENSION; }; +hidspecial HID_DSADMIN_ALL_TABLES { HelpId = HID_DSADMIN_ALL_TABLES; }; +hidspecial HID_DSADMIN_NO_TABLES { HelpId = HID_DSADMIN_NO_TABLES; }; +hidspecial HID_DSADMIN_SELECT_TABLES { HelpId = HID_DSADMIN_SELECT_TABLES; }; +hidspecial HID_DSADMIN_TABLE_SELECTOR { HelpId = HID_DSADMIN_TABLE_SELECTOR; }; +hidspecial HID_DSADMIN_SUPPRESS_VERSIONCL { HelpId = HID_DSADMIN_SUPPRESS_VERSIONCL; }; +hidspecial HID_GENERIC_SQL_ERROR { HelpId = HID_GENERIC_SQL_ERROR; }; +hidspecial HID_BROWSER_COLUMNFORMAT { HelpId = HID_BROWSER_COLUMNFORMAT; }; +hidspecial HID_BROWSER_COLUMNWIDTH { HelpId = HID_BROWSER_COLUMNWIDTH; }; +hidspecial HID_BROWSER_TABLEFORMAT { HelpId = HID_BROWSER_TABLEFORMAT; }; +hidspecial HID_BROWSER_ROWHEIGHT { HelpId = HID_BROWSER_ROWHEIGHT; }; +hidspecial HID_BROWSER_EDIT_DATABASE { HelpId = HID_BROWSER_EDIT_DATABASE; }; +hidspecial HID_BROWSER_CLOSECONN { HelpId = HID_BROWSER_CLOSECONN; }; +hidspecial HID_BROWSER_REFRESHCONN { HelpId = HID_BROWSER_REFRESHCONN; }; +hidspecial HID_DSADMIN_SPECIAL_MESSAGE { HelpId = HID_DSADMIN_SPECIAL_MESSAGE; }; + +hidspecial HID_DLG_ROWHEIGHT { HelpId = HID_DLG_ROWHEIGHT; }; +hidspecial HID_DLG_COLWIDTH { HelpId = HID_DLG_COLWIDTH; }; +hidspecial HID_TLB_QUERYDESIGN { HelpId = HID_TLB_QUERYDESIGN; }; +hidspecial HID_CTL_QRYSQLEDIT { HelpId = HID_CTL_QRYSQLEDIT; }; + +hidspecial HID_DSADMIN_SPECIAL_MESSAGE { HelpId = HID_DSADMIN_SPECIAL_MESSAGE; }; + +hidspecial HID_BROWSER_QUERY_CREATE_DESIGN { HelpId = HID_BROWSER_QUERY_CREATE_DESIGN; }; +hidspecial HID_BROWSER_QUERY_CREATE_TEXT { HelpId = HID_BROWSER_QUERY_CREATE_TEXT; }; + +hidspecial HID_DLG_ERROR { HelpId = HID_DLG_ERROR; }; +hidspecial HID_DLG_TEXT { HelpId = HID_DLG_TEXT; }; +hidspecial UID_SQLERROR_BUTTONMORE { HelpId = UID_SQLERROR_BUTTONMORE; }; +hidspecial HID_DLG_SAVE_AS { HelpId = HID_DLG_SAVE_AS; }; +hidspecial HID_BROWSER_QUERY_EDIT { HelpId = HID_BROWSER_QUERY_EDIT; }; +hidspecial HID_BROWSER_QUERY_DELETE { HelpId = HID_BROWSER_QUERY_DELETE; }; + +hidspecial HID_DSADMIN_USER_ADO { HelpId = HID_DSADMIN_USER_ADO; }; +hidspecial HID_DSADMIN_PWDREC_ADO { HelpId = HID_DSADMIN_PWDREC_ADO; }; +hidspecial HID_DSADMIN_CONNURL_ADOPAGE { HelpId = HID_DSADMIN_CONNURL_ADOPAGE; }; +hidspecial HID_DSADMIN_PAGE_ADO { HelpId = HID_DSADMIN_PAGE_ADO; }; + +hidspecial HID_JOINSH_ADDTAB_CLOSE { HelpId = HID_JOINSH_ADDTAB_CLOSE; }; +hidspecial HID_JOINSH_ADDTAB_TABLELIST { HelpId = HID_JOINSH_ADDTAB_TABLELIST; }; +hidspecial HID_JOINSH_ADDTAB_QUERYLIST { HelpId = HID_JOINSH_ADDTAB_QUERYLIST; }; +hidspecial HID_CTL_QRYDGNTAB { HelpId = HID_CTL_QRYDGNTAB; }; +hidspecial HID_DLG_QRY_JOIN { HelpId = HID_DLG_QRY_JOIN; }; +hidspecial HID_DLG_QRY_JOINTYPE { HelpId = HID_DLG_QRY_JOINTYPE; }; +hidspecial HID_DLG_QRY_HELPTEXT { HelpId = HID_DLG_QRY_HELPTEXT; }; + +hidspecial HID_CTL_QRYDGNCRIT { HelpId = HID_CTL_QRYDGNCRIT; }; +hidspecial HID_QRYDGN_ROW_VISIBLE { HelpId = HID_QRYDGN_ROW_VISIBLE; }; +hidspecial HID_QRYDGN_ROW_TABLE { HelpId = HID_QRYDGN_ROW_TABLE; }; +hidspecial HID_QRYDGN_ROW_FIELD { HelpId = HID_QRYDGN_ROW_FIELD; }; +hidspecial HID_QRYDGN_ROW_ORDER { HelpId = HID_QRYDGN_ROW_ORDER; }; +hidspecial HID_QRYDGN_ROW_FUNCTION { HelpId = HID_QRYDGN_ROW_FUNCTION; }; +hidspecial HID_QRYDGN_ROW_ALIAS { HelpId = HID_QRYDGN_ROW_ALIAS; }; +hidspecial HID_QRYDGN_ROW_CRIT { HelpId = HID_QRYDGN_ROW_CRIT; }; + +hidspecial HID_QUERY_FUNCTION { HelpId = HID_QUERY_FUNCTION; }; +hidspecial HID_QUERY_TABLENAME { HelpId = HID_QUERY_TABLENAME; }; +hidspecial HID_QUERY_ALIASNAME { HelpId = HID_QUERY_ALIASNAME; }; +hidspecial HID_QUERY_DISTINCT { HelpId = HID_QUERY_DISTINCT; }; + +hidspecial HID_DSADMIN_QUERYADMINISTRATION { HelpId = HID_DSADMIN_QUERYADMINISTRATION; }; +hidspecial HID_DSADMIN_QUERIES { HelpId = HID_DSADMIN_QUERIES; }; +hidspecial HID_DSADMIN_QUERIES_NEW { HelpId = HID_DSADMIN_QUERIES_NEW; }; +hidspecial HID_DSADMIN_QUERIES_EDIT { HelpId = HID_DSADMIN_QUERIES_EDIT; }; +hidspecial HID_DSADMIN_QUERIES_DELETE { HelpId = HID_DSADMIN_QUERIES_DELETE; }; + +hidspecial HID_TAB_DESIGN_TABLE_DESC { HelpId = HID_TAB_DESIGN_TABLE_DESC; }; +hidspecial HID_TAB_DESIGN_FIELDCONTROL { HelpId = HID_TAB_DESIGN_FIELDCONTROL; }; +hidspecial HID_TABLE_DESIGN_HELP_WINDOW { HelpId = HID_TABLE_DESIGN_HELP_WINDOW; }; +hidspecial HID_TAB_DESIGN_DESCWIN { HelpId = HID_TAB_DESIGN_DESCWIN; }; +hidspecial HID_TAB_DESIGN_TABLE_PROPS { HelpId = HID_TAB_DESIGN_TABLE_PROPS; }; +hidspecial HID_TABDESIGN_BACKGROUND { HelpId = HID_TABDESIGN_BACKGROUND; }; +hidspecial HID_CTL_TABLEEDIT { HelpId = HID_CTL_TABLEEDIT; }; +hidspecial HID_TABDESIGN_NAMECELL { HelpId = HID_TABDESIGN_NAMECELL; }; +hidspecial HID_TABDESIGN_TYPECELL { HelpId = HID_TABDESIGN_TYPECELL; }; +hidspecial HID_TABDESIGN_COMMENTCELL { HelpId = HID_TABDESIGN_COMMENTCELL; }; +hidspecial SID_TABLEDESIGN_INSERTROWS { HelpId = SID_TABLEDESIGN_INSERTROWS; }; +hidspecial SID_TABLEDESIGN_TABED_PRIMARYKEY { HelpId = SID_TABLEDESIGN_TABED_PRIMARYKEY; }; +hidspecial HID_TLB_TABLEDESIGN { HelpId = HID_TLB_TABLEDESIGN; }; +hidspecial HID_TAB_DESIGN_HELP_TEXT_FRAME { HelpId = HID_TAB_DESIGN_HELP_TEXT_FRAME; }; +hidspecial HID_TABLE_DESIGN_TABPAGE_GENERAL { HelpId = HID_TABLE_DESIGN_TABPAGE_GENERAL; }; +hidspecial HID_TAB_ENT_DEFAULT { HelpId = HID_TAB_ENT_DEFAULT; }; +hidspecial HID_TAB_ENT_FORMAT_SAMPLE { HelpId = HID_TAB_ENT_FORMAT_SAMPLE; }; +hidspecial HID_TAB_ENT_FORMAT { HelpId = HID_TAB_ENT_FORMAT; }; +hidspecial HID_TAB_ENT_BOOL_DEFAULT { HelpId = HID_TAB_ENT_BOOL_DEFAULT; }; +hidspecial HID_TAB_ENT_REQUIRED { HelpId = HID_TAB_ENT_REQUIRED; }; +hidspecial HID_TAB_ENT_AUTOINCREMENT { HelpId = HID_TAB_ENT_AUTOINCREMENT; }; +hidspecial HID_TAB_ENT_TEXT_LEN { HelpId = HID_TAB_ENT_TEXT_LEN; }; +hidspecial HID_TAB_ENT_TYPE { HelpId = HID_TAB_ENT_TYPE; }; +hidspecial HID_TAB_ENT_COLUMNNAME { HelpId = HID_TAB_ENT_COLUMNNAME; }; +hidspecial HID_TAB_ENT_NUMTYP { HelpId = HID_TAB_ENT_NUMTYP; }; +hidspecial HID_TAB_ENT_LEN { HelpId = HID_TAB_ENT_LEN; }; +hidspecial HID_TAB_ENT_SCALE { HelpId = HID_TAB_ENT_SCALE; }; +hidspecial HID_BROWSER_TABLE_CREATE_DESIGN { HelpId = HID_BROWSER_TABLE_CREATE_DESIGN; }; +hidspecial HID_BROWSER_TABLE_EDIT { HelpId = HID_BROWSER_TABLE_EDIT; }; +hidspecial HID_BROWSER_TABLE_DELETE { HelpId = HID_BROWSER_TABLE_DELETE; }; +hidspecial HID_SQLERROR_EXCHAIN_ERRORS { HelpId = HID_SQLERROR_EXCHAIN_ERRORS; }; +hidspecial HID_DBACCESS_START { HelpId = HID_DBACCESS_START; }; +hidspecial HID_SQLERROR_EXCHAIN_TEXT { HelpId = HID_SQLERROR_EXCHAIN_TEXT; }; +hidspecial HID_TAB_WIZ_COLUMN_SELECT { HelpId = HID_TAB_WIZ_COLUMN_SELECT; }; +hidspecial HID_TAB_WIZ_TYPE_SELECT { HelpId = HID_TAB_WIZ_TYPE_SELECT; }; +hidspecial HID_TAB_NAMEMATCHING_COLS_AVAIL { HelpId = HID_TAB_NAMEMATCHING_COLS_AVAIL; }; +hidspecial HID_TAB_NAMEMATCHING_COLS_ASSIGN { HelpId = HID_TAB_NAMEMATCHING_COLS_ASSIGN; }; +hidspecial HID_TAB_WIZ_COPYTABLE { HelpId = HID_TAB_WIZ_COPYTABLE; }; +hidspecial HID_TAB_WIZ_TABLENAME_EDIT { HelpId = HID_TAB_WIZ_TABLENAME_EDIT; }; +hidspecial HID_CTL_RELATIONTAB { HelpId = HID_CTL_RELATIONTAB; }; +hidspecial HID_TLB_RELATIONDESIGN { HelpId = HID_TLB_RELATIONDESIGN ; }; +hidspecial HID_RELATIONDIALOG_LEFTFIELDCELL { HelpId = HID_RELATIONDIALOG_LEFTFIELDCELL ; }; +hidspecial HID_RELATIONDIALOG_RIGHTFIELDCELL { HelpId = HID_RELATIONDIALOG_RIGHTFIELDCELL ; }; +hidspecial HID_RELDLG_KEYFIELDS { HelpId = HID_RELDLG_KEYFIELDS ; }; +hidspecial HID_BROWSER_RELATION_DESIGN { HelpId = HID_BROWSER_RELATION_DESIGN ; }; +hidspecial HID_TABLE_DESIGN_NO_CONNECTION { HelpId = HID_TABLE_DESIGN_NO_CONNECTION ; }; +hidspecial HID_DSADMIN_CREATEDATABASE { HelpId = HID_DSADMIN_CREATEDATABASE ; }; +hidspecial HID_BROWSER_COLUMNINFO { HelpId = HID_BROWSER_COLUMNINFO ; }; +hidspecial HID_DSADMIN_USECATALOG { HelpId = HID_DSADMIN_USECATALOG ; }; +hidspecial HID_BROWSER_VIEW_CREATE_DESIGN { HelpId = HID_BROWSER_VIEW_CREATE_DESIGN ; }; +hidspecial HID_DSADMIN_DOCUMENTS { HelpId = HID_DSADMIN_DOCUMENTS ; }; +hidspecial HID_DSADMIN_DOCUMENTLINKS { HelpId = HID_DSADMIN_DOCUMENTLINKS ; }; + +hidspecial HID_DSADMIN_FILTER_EXPLANATION { HelpId = HID_DSADMIN_FILTER_EXPLANATION ; }; +hidspecial HID_CONFIRM_DROP_BUTTON_ALL { HelpId = HID_CONFIRM_DROP_BUTTON_ALL ; }; +hidspecial HID_DSBROWSER_BOOKMARK_SELECTED { HelpId = HID_DSBROWSER_BOOKMARK_SELECTED ; }; +hidspecial HID_DSADMIN_TABLE_TOOLBOX { HelpId = HID_DSADMIN_TABLE_TOOLBOX ; }; +hidspecial HID_DSADMIN_QUERY_TOOLBOX { HelpId = HID_DSADMIN_QUERY_TOOLBOX ; }; +hidspecial HID_DSADMIN_BOOKMARK_TOOLBOX { HelpId = HID_DSADMIN_BOOKMARK_TOOLBOX ; }; +hidspecial HID_DSADMIN_PAGE_LDAP { HelpId = HID_DSADMIN_PAGE_LDAP ; }; +hidspecial HID_DSADMIN_LDAP_HOSTNAME { HelpId = HID_DSADMIN_LDAP_HOSTNAME ; }; +hidspecial HID_DSADMIN_LDAP_BASEDN { HelpId = HID_DSADMIN_LDAP_BASEDN ; }; +hidspecial HID_DSADMIN_LDAP_PORTNUMBER { HelpId = HID_DSADMIN_LDAP_PORTNUMBER ; }; +hidspecial HID_DSADMIN_PAGE_MOZILLA { HelpId = HID_DSADMIN_PAGE_MOZILLA ; }; +hidspecial HID_DSADMIN_MOZILLA_PROFILE_NAME { HelpId = HID_DSADMIN_MOZILLA_PROFILE_NAME ; }; + +hidspecial HID_TAB_PAGE_USERADMIN { HelpId = HID_TAB_PAGE_USERADMIN ; }; +hidspecial HID_TAB_PAGE_PBUSER { HelpId = HID_TAB_PAGE_PBUSER ; }; +hidspecial HID_TAB_PAGE_PBCHGPWD { HelpId = HID_TAB_PAGE_PBCHGPWD ; }; +hidspecial HID_TAB_PAGE_PBUSERDELETE { HelpId = HID_TAB_PAGE_PBUSERDELETE ; }; +hidspecial HID_TAB_PAGE_TBLGRANTS { HelpId = HID_TAB_PAGE_TBLGRANTS ; }; +hidspecial HID_TAB_PAGE_LBUSER { HelpId = HID_TAB_PAGE_LBUSER ; }; +hidspecial HID_DSBROWSER_BOOKMARKSELECTED { HelpId = HID_DSBROWSER_BOOKMARKSELECTED ; }; +hidspecial HID_DSBROWSER_DISCONNECTING { HelpId = HID_DSBROWSER_DISCONNECTING ; }; +hidspecial HID_DSBROWSER_DIRECTSQL { HelpId = HID_DSBROWSER_DIRECTSQL ; }; +hidspecial HID_DSADMIN_LDAP_ROWCOUNT { HelpId = HID_DSADMIN_LDAP_ROWCOUNT ; }; +hidspecial HID_DLG_PASSWORD { HelpId = HID_DLG_PASSWORD ; }; +hidspecial HID_BROWSER_QUERY_EDITSQL { HelpId = HID_BROWSER_QUERY_EDITSQL ; }; +hidspecial HID_BROWSER_OPEN_DOCUMENT { HelpId = HID_BROWSER_OPEN_DOCUMENT ; }; +hidspecial HID_BROWSER_EDIT_DOCUMENT { HelpId = HID_BROWSER_EDIT_DOCUMENT ; }; +hidspecial HID_BROWSER_BEW_DOCUMENT { HelpId = HID_BROWSER_BEW_DOCUMENT ; }; + +hidspecial HID_DLGIDX_NEWINDEX { HelpId = HID_DLGIDX_NEWINDEX; } +hidspecial HID_DLGIDX_DROPINDEX { HelpId = HID_DLGIDX_DROPINDEX; } +hidspecial HID_DLGIDX_RENAMEINDEX { HelpId = HID_DLGIDX_RENAMEINDEX; } +hidspecial HID_DLGIDX_SAVEINDEX { HelpId = HID_DLGIDX_SAVEINDEX; } +hidspecial HID_DLGIDX_RESETINDEX { HelpId = HID_DLGIDX_RESETINDEX; } +hidspecial HID_DLGIDX_INDEXLIST { HelpId = HID_DLGIDX_INDEXLIST; } +hidspecial UID_DLGINDEX_INDEXDETAILS_BACK { HelpId = UID_DLGINDEX_INDEXDETAILS_BACK; } +hidspecial UID_DLGINDEX_INDEXDETAILS_MAIN { HelpId = UID_DLGINDEX_INDEXDETAILS_MAIN; } +hidspecial HID_DLGINDEX_INDEXDETAILS_FIELD { HelpId = HID_DLGINDEX_INDEXDETAILS_FIELD; } +hidspecial HID_DLGINDEX_INDEXDETAILS_SORTORDER { HelpId = HID_DLGINDEX_INDEXDETAILS_SORTORDER; } +hidspecial HID_DOCLINKEDIT_URL { HelpId = HID_DOCLINKEDIT_URL; } + +hidspecial HID_QUERY_SQLMODE { HelpId = HID_QUERY_SQLMODE ; }; +hidspecial HID_BROWSER_REFRESH_REBUILDVIEW { HelpId = HID_BROWSER_REFRESH_REBUILDVIEW ; }; +hidspecial HID_BROWSER_RENAME_ENTRY { HelpId = HID_BROWSER_RENAME_ENTRY ; }; + +hidspecial HID_QUERY_EDIT_JOINCONNECTION { HelpId = HID_QUERY_EDIT_JOINCONNECTION ; }; + +hidspecial HID_DLG_QRY_WINDOW_CONTROL { HelpId = HID_DLG_QRY_WINDOW_CONTROL ; }; +hidspecial HID_DLG_QRY_LEFT_TABLE { HelpId = HID_DLG_QRY_LEFT_TABLE ; }; +hidspecial HID_DLG_QRY_RIGHT_TABLE { HelpId = HID_DLG_QRY_RIGHT_TABLE ; }; + +hidspecial HID_DLG_REL_CASC_DEL { HelpId = HID_DLG_REL_CASC_DEL ; }; +hidspecial HID_DLG_REL_NO_CASC_DEL { HelpId = HID_DLG_REL_NO_CASC_DEL ; }; +hidspecial HID_DLG_REL_CASC_DEL_NULL { HelpId = HID_DLG_REL_CASC_DEL_NULL ; }; +hidspecial HID_DLG_REL_CASC_DEL_DEFAULT { HelpId = HID_DLG_REL_CASC_DEL_DEFAULT ; }; + +hidspecial HID_DLG_REL_CASC_UPD { HelpId = HID_DLG_REL_CASC_UPD ; }; +hidspecial HID_DLG_REL_NO_CASC_UPD { HelpId = HID_DLG_REL_NO_CASC_UPD ; }; +hidspecial HID_DLG_REL_CASC_UPD_NULL { HelpId = HID_DLG_REL_CASC_UPD_NULL ; }; +hidspecial HID_DLG_REL_CASC_UPD_DEFAULT { HelpId = HID_DLG_REL_CASC_UPD_DEFAULT ; }; +hidspecial HID_BROWSER_SAVE_RECORD { HelpId = HID_BROWSER_SAVE_RECORD ; }; +hidspecial HID_BROWSER_UNDO_RECORD { HelpId = HID_BROWSER_UNDO_RECORD ; }; + +// missing pre processor for helpids so we have to include them here +hidspecial SID_RELATION_ADD_RELATION { HelpId = SID_RELATION_ADD_RELATION ; }; +hidspecial SID_FM_NATIVESQL { HelpId = SID_FM_NATIVESQL ; }; +hidspecial SID_FM_ADDTABLE { HelpId = SID_FM_ADDTABLE ; }; +hidspecial SID_FM_EXECUTE { HelpId = SID_FM_EXECUTE ; }; + +hidspecial HID_DSADMIN_SQL92CHECK { HelpId = HID_DSADMIN_SQL92CHECK ; }; +hidspecial HID_DSADMIN_AUTOINCREMENTVALUE { HelpId = HID_DSADMIN_AUTOINCREMENTVALUE ; }; +hidspecial HID_TAB_AUTOINCREMENTVALUE { HelpId = HID_TAB_AUTOINCREMENTVALUE ; }; +hidspecial HID_DOCUMENT_CREATE_REPWIZ { HelpId = HID_DOCUMENT_CREATE_REPWIZ ; }; +hidspecial HID_DSADMIN_RETRIEVE_AUTO { HelpId = HID_DSADMIN_RETRIEVE_AUTO ; }; +hidspecial HID_DSADMIN_AUTORETRIEVEENABLED { HelpId = HID_DSADMIN_AUTORETRIEVEENABLED ; }; + +hidspecial HID_DSADMIN_PAGE_MYSQL_ODBC { HelpId = HID_DSADMIN_PAGE_MYSQL_ODBC ; }; +hidspecial HID_DSADMIN_PAGE_MYSQL_JDBC { HelpId = HID_DSADMIN_PAGE_MYSQL_JDBC ; }; +hidspecial HID_TAB_PAGE_TABLEPRIVILEGES { HelpId = HID_TAB_PAGE_TABLEPRIVILEGES ; }; + +hidspecial HID_DSADMIN_PAGE_USERDRIVER { HelpId = HID_DSADMIN_PAGE_USERDRIVER ; }; +hidspecial HID_DSADMIN_USER_DEFINED { HelpId = HID_DSADMIN_USER_DEFINED ; }; +hidspecial HID_DSADMIN_USERDEF_OPTIONS { HelpId = HID_DSADMIN_USERDEF_OPTIONS ; }; +hidspecial HID_DSADMIN_CHARSET_USERDEF { HelpId = HID_DSADMIN_CHARSET_USERDEF ; }; + +hidspecial HID_DLG_RENAME { HelpId = HID_DLG_RENAME ; }; + +hidspecial HID_DSADMIN_DBASE_PATH { HelpId = HID_DSADMIN_DBASE_PATH ; }; +hidspecial HID_DSADMIN_MYSQL_DATABASE { HelpId = HID_DSADMIN_MYSQL_DATABASE ; }; +hidspecial HID_DSADMIN_MYSQL_ODBC_DATASOURCE { HelpId = HID_DSADMIN_MYSQL_ODBC_DATASOURCE ; }; +hidspecial HID_DSADMIN_ODBC_DATASOURCE { HelpId = HID_DSADMIN_ODBC_DATASOURCE ; }; +hidspecial HID_DSADMIN_ADABAS_DATABASE { HelpId = HID_DSADMIN_ADABAS_DATABASE ; }; +hidspecial HID_DSADMIN_MSACCESS_MDB_FILE { HelpId = HID_DSADMIN_MSACCESS_MDB_FILE ; }; +hidspecial HID_DSADMIN_PAGE_MSACCESS { HelpId = HID_DSADMIN_PAGE_MSACCESS ; }; +hidspecial HID_DSADMIN_FLAT_PATH { HelpId = HID_DSADMIN_FLAT_PATH ; }; +hidspecial HID_DSADMIN_CALC_PATH { HelpId = HID_DSADMIN_CALC_PATH ; }; +hidspecial HID_DSADMIN_ADVANCED { HelpId = HID_DSADMIN_ADVANCED ; }; +hidspecial HID_DSADMIN_BOOLEANCOMPARISON { HelpId = HID_DSADMIN_BOOLEANCOMPARISON ; }; +hidspecial HID_DSADMIN_ORACLE_DATABASE { HelpId = HID_DSADMIN_ORACLE_DATABASE ; }; + +hidspecial UID_APP_VIEW { HelpId = UID_APP_VIEW ; }; +hidspecial HID_APP_TABLE_TREE { HelpId = HID_APP_TABLE_TREE ; }; +hidspecial HID_APP_FORM_TREE { HelpId = HID_APP_FORM_TREE ; }; +hidspecial HID_APP_QUERY_TREE { HelpId = HID_APP_QUERY_TREE ; }; +hidspecial HID_APP_REPORT_TREE { HelpId = HID_APP_REPORT_TREE ; }; +hidspecial UID_APP_DETAIL_VIEW { HelpId = UID_APP_DETAIL_VIEW; }; +hidspecial UID_APP_VIEW_VERT_SPLIT { HelpId = UID_APP_VIEW_VERT_SPLIT ; }; +hidspecial UID_APP_VIEW_BORDER_WIN { HelpId = UID_APP_VIEW_BORDER_WIN ; }; +hidspecial HID_APP_CREATION_LIST { HelpId = HID_APP_CREATION_LIST ; }; +hidspecial UID_APP_SWAP_VIEW { HelpId = UID_APP_SWAP_VIEW ; }; +hidspecial UID_DLG_TABLE_FILTER { HelpId = UID_DLG_TABLE_FILTER ; }; +hidspecial HID_APP_SWAP_ICONCONTROL { HelpId = HID_APP_SWAP_ICONCONTROL ; }; + +hidspecial HID_DSADMIN_APPENDTABLEALIAS { HelpId = HID_DSADMIN_APPENDTABLEALIAS ; }; +hidspecial HID_DSADMIN_AS_BEFORE_CORRELATION_NAME { HelpId = HID_DSADMIN_AS_BEFORE_CORRELATION_NAME ; }; +hidspecial HID_DSADMIN_CHECK_REQUIRED_FIELDS { HelpId = HID_DSADMIN_CHECK_REQUIRED_FIELDS ; }; +hidspecial HID_DSADMIN_PARAMETERNAMESUBST { HelpId = HID_DSADMIN_PARAMETERNAMESUBST ; }; +hidspecial HID_DSADMIN_IGNOREDRIVER_PRIV { HelpId = HID_DSADMIN_IGNOREDRIVER_PRIV ; }; +hidspecial HID_DSADMIN_HOSTNAME { HelpId = HID_DSADMIN_HOSTNAME ; }; +hidspecial HID_DSADMIN_PORTNUMBER { HelpId = HID_DSADMIN_PORTNUMBER ; }; + +hidspecial HID_APP_HELP_TEXT { HelpId = HID_APP_HELP_TEXT ; }; +hidspecial HID_EXPLORERDLG_COLLECTION { HelpId = HID_EXPLORERDLG_COLLECTION ; }; +hidspecial UID_APP_DATABASE_VIEW { HelpId = UID_APP_DATABASE_VIEW ; }; +hidspecial UID_APP_TASKS_VIEW { HelpId = UID_APP_TASKS_VIEW ; }; +hidspecial UID_APP_CONTAINER_VIEW { HelpId = UID_APP_CONTAINER_VIEW ; }; +hidspecial UID_APP_TASKS_WINDOW { HelpId = UID_APP_TASKS_WINDOW ; }; +hidspecial HID_APP_DESCRIPTION_TEXT { HelpId = HID_APP_DESCRIPTION_TEXT ; }; +hidspecial UID_APP_DETAILPAGE_HELPER { HelpId = UID_APP_DETAILPAGE_HELPER ; }; + +hidspecial HID_APP_VIEW_PREVIEW_CB { HelpId = HID_APP_VIEW_PREVIEW_CB ; }; +hidspecial HID_APP_VIEW_PREVIEW_1 { HelpId = HID_APP_VIEW_PREVIEW_1 ; }; +hidspecial HID_APP_VIEW_PREVIEW_2 { HelpId = HID_APP_VIEW_PREVIEW_2 ; }; +hidspecial UID_APP_VIEW_HORZ_SPLIT { HelpId = UID_APP_VIEW_HORZ_SPLIT ; }; +hidspecial UID_APP_VIEW_PREVIEW_1 { HelpId = UID_APP_VIEW_PREVIEW_1 ; }; +hidspecial HID_APP_VIEW_PREVIEW_3 { HelpId = HID_APP_VIEW_PREVIEW_3 ; }; + +hidspecial HID_DSADMIN_TYPE_DIALOG { HelpId = HID_DSADMIN_TYPE_DIALOG ; }; +hidspecial HID_DSADMIN_ENABLEOUTERJOIN { HelpId = HID_DSADMIN_ENABLEOUTERJOIN ; }; +hidspecial HID_DSADMIN_ADABASADMIN { HelpId = HID_DSADMIN_ADABASADMIN ; }; +hidspecial HID_DSADMIN_USERADMIN { HelpId = HID_DSADMIN_USERADMIN ; }; + +hidspecial HID_DBWIZ_PREVIOUS { HelpId = HID_DBWIZ_PREVIOUS ; }; +hidspecial HID_DBWIZ_NEXT { HelpId = HID_DBWIZ_NEXT ; }; +hidspecial HID_DBWIZ_CANCEL { HelpId = HID_DBWIZ_CANCEL ; }; +hidspecial HID_DBWIZ_FINISH { HelpId = HID_DBWIZ_FINISH ; }; +hidspecial UID_DBWIZ_HELP { HelpId = UID_DBWIZ_HELP ; }; + +hidspecial HID_DSADMIN_CATALOG { HelpId = HID_DSADMIN_CATALOG ; }; +hidspecial HID_DSADMIN_SCHEMA { HelpId = HID_DSADMIN_SCHEMA ; }; +hidspecial HID_DSADMIN_IGNOREINDEXAPPENDIX { HelpId = HID_DSADMIN_IGNOREINDEXAPPENDIX ; }; + +hidspecial HID_PAGE_DBWIZARD_GENERALPAGE { HelpId = HID_PAGE_DBWIZARD_GENERALPAGE ; }; +hidspecial HID_PAGE_DBWIZARD_GENERAL_RB_CREATEDBDATABASE { HelpId = HID_PAGE_DBWIZARD_GENERAL_RB_CREATEDBDATABASE ; }; +hidspecial HID_PAGE_DBWIZARD_GENERAL_RB_GETEXISTINGDATABASE { HelpId = HID_PAGE_DBWIZARD_GENERAL_RB_GETEXISTINGDATABASE ; }; + +hidspecial HID_PAGE_DBWIZARD_DBASE_ET_DBASELOCATION { HelpId = HID_PAGE_DBWIZARD_DBASE_ET_DBASELOCATION ; }; +hidspecial HID_PAGE_DBWIZARD_DBASE_PB_DBASELOCATION { HelpId = HID_PAGE_DBWIZARD_DBASE_PB_DBASELOCATION ; }; + +hidspecial SID_INDEXDESIGN { HelpId = SID_INDEXDESIGN; }; +hidspecial SID_DOCUMENT_DATA_SOURCE { HelpId = SID_DOCUMENT_DATA_SOURCE; }; +hidspecial SID_DB_NEW { HelpId = SID_DB_NEW; }; +hidspecial SID_DB_APP_DISABLE_PREVIEW { HelpId = SID_DB_APP_DISABLE_PREVIEW; }; +hidspecial SID_DB_APP_DSCONNECTION_TYPE { HelpId = SID_DB_APP_DSCONNECTION_TYPE; }; +hidspecial SID_DB_APP_DSADVANCED_SETTINGS { HelpId = SID_DB_APP_DSADVANCED_SETTINGS; }; + +hidspecial SID_DB_APP_VIEW_DOCINFO_PREVIEW { HelpId = SID_DB_APP_VIEW_DOCINFO_PREVIEW; }; +hidspecial SID_DB_APP_VIEW_DOC_PREVIEW { HelpId = SID_DB_APP_VIEW_DOC_PREVIEW; }; +hidspecial SID_DB_APP_VIEW_TABLES { HelpId = SID_DB_APP_VIEW_TABLES; }; +hidspecial SID_DB_APP_VIEW_QUERIES { HelpId = SID_DB_APP_VIEW_QUERIES; }; +hidspecial SID_DB_APP_DSIMPORT { HelpId = SID_DB_APP_DSIMPORT; }; +hidspecial SID_DB_APP_VIEW_FORMS { HelpId = SID_DB_APP_VIEW_FORMS; }; +hidspecial SID_DB_APP_DSRELDESIGN { HelpId = SID_DB_APP_DSRELDESIGN; }; +hidspecial SID_DB_APP_DSUSERADMIN { HelpId = SID_DB_APP_DSUSERADMIN; }; +hidspecial SID_DB_APP_TABLEFILTER { HelpId = SID_DB_APP_TABLEFILTER; }; +hidspecial SID_DB_APP_CLOSECONNECTION { HelpId = SID_DB_APP_CLOSECONNECTION; }; +hidspecial SID_DB_APP_DSPROPS { HelpId = SID_DB_APP_DSPROPS; }; +hidspecial SID_DB_APP_DBADMIN { HelpId = SID_DB_APP_DBADMIN; }; + +hidspecial SID_DB_APP_CONVERTTOVIEW { HelpId = SID_DB_APP_CONVERTTOVIEW; }; +hidspecial SID_DB_APP_REFRESH_TABLES { HelpId = SID_DB_APP_REFRESH_TABLES; }; +hidspecial SID_DB_APP_VIEW_REPORTS { HelpId = SID_DB_APP_VIEW_REPORTS; }; +hidspecial SID_DB_APP_DSEXPORT { HelpId = SID_DB_APP_DSEXPORT; }; + +hidspecial SID_DB_APP_TABLE_DELETE { HelpId = SID_DB_APP_TABLE_DELETE; }; +hidspecial SID_DB_APP_TABLE_RENAME { HelpId = SID_DB_APP_TABLE_RENAME; }; +hidspecial SID_DB_APP_TABLE_EDIT { HelpId = SID_DB_APP_TABLE_EDIT; }; +hidspecial SID_DB_APP_TABLE_OPEN { HelpId = SID_DB_APP_TABLE_OPEN; }; + +hidspecial SID_DB_APP_QUERY_DELETE { HelpId = SID_DB_APP_QUERY_DELETE; }; +hidspecial SID_DB_APP_QUERY_RENAME { HelpId = SID_DB_APP_QUERY_RENAME; }; +hidspecial SID_DB_APP_QUERY_EDIT { HelpId = SID_DB_APP_QUERY_EDIT; }; +hidspecial SID_DB_APP_QUERY_OPEN { HelpId = SID_DB_APP_QUERY_OPEN; }; + +hidspecial SID_DB_APP_FORM_DELETE { HelpId = SID_DB_APP_FORM_DELETE; }; +hidspecial SID_DB_APP_FORM_RENAME { HelpId = SID_DB_APP_FORM_RENAME; }; +hidspecial SID_DB_APP_FORM_EDIT { HelpId = SID_DB_APP_FORM_EDIT; }; +hidspecial SID_DB_APP_FORM_OPEN { HelpId = SID_DB_APP_FORM_OPEN; }; + +hidspecial SID_DB_APP_REPORT_DELETE { HelpId = SID_DB_APP_REPORT_DELETE; }; +hidspecial SID_DB_APP_REPORT_RENAME { HelpId = SID_DB_APP_REPORT_RENAME; }; +hidspecial SID_DB_APP_REPORT_EDIT { HelpId = SID_DB_APP_REPORT_EDIT; }; +hidspecial SID_DB_APP_REPORT_OPEN { HelpId = SID_DB_APP_REPORT_OPEN; }; + +hidspecial SID_DB_APP_DELETE { HelpId = SID_DB_APP_DELETE; }; +hidspecial SID_DB_APP_RENAME { HelpId = SID_DB_APP_RENAME; }; +hidspecial SID_DB_APP_EDIT { HelpId = SID_DB_APP_EDIT; }; +hidspecial SID_DB_APP_EDIT_SQL_VIEW { HelpId = SID_DB_APP_EDIT_SQL_VIEW; }; +hidspecial SID_DB_APP_OPEN { HelpId = SID_DB_APP_OPEN; }; + +hidspecial SID_BROWSER_CLEAR_QUERY { HelpId = SID_BROWSER_CLEAR_QUERY; }; +hidspecial SID_RELATION_ADD_RELATION { HelpId = SID_RELATION_ADD_RELATION; }; +hidspecial SID_QUERY_VIEW_FUNCTIONS { HelpId = SID_QUERY_VIEW_FUNCTIONS; }; +hidspecial SID_QUERY_VIEW_TABLES { HelpId = SID_QUERY_VIEW_TABLES; }; +hidspecial SID_QUERY_VIEW_ALIASES { HelpId = SID_QUERY_VIEW_ALIASES; }; +hidspecial SID_QUERY_DISTINCT_VALUES { HelpId = SID_QUERY_DISTINCT_VALUES; }; +hidspecial SID_FORM_CREATE_REPWIZ_PRE_SEL { HelpId = SID_FORM_CREATE_REPWIZ_PRE_SEL; }; +hidspecial SID_REPORT_CREATE_REPWIZ_PRE_SEL { HelpId = SID_REPORT_CREATE_REPWIZ_PRE_SEL; }; +hidspecial SID_APP_NEW_REPORT_PRE_SEL { HelpId = SID_APP_NEW_REPORT_PRE_SEL; }; + +hidspecial SID_APP_NEW_FOLDER { HelpId = SID_APP_NEW_FOLDER; }; +hidspecial SID_APP_NEW_FORM { HelpId = SID_APP_NEW_FORM; }; +hidspecial SID_DB_APP_PASTE_SPECIAL { HelpId = SID_DB_APP_PASTE_SPECIAL; }; +hidspecial SID_DB_QUERY_PREVIEW { HelpId = SID_DB_QUERY_PREVIEW; }; + +hidspecial SID_DB_APP_STATUS_TYPE { HelpId = SID_DB_APP_STATUS_TYPE; }; +hidspecial SID_DB_APP_STATUS_DBNAME { HelpId = SID_DB_APP_STATUS_DBNAME; }; +hidspecial SID_DB_APP_STATUS_USERNAME { HelpId = SID_DB_APP_STATUS_USERNAME; }; +hidspecial SID_DB_APP_STATUS_HOSTNAME { HelpId = SID_DB_APP_STATUS_HOSTNAME; }; + +hidspecial SID_DB_APP_SENDREPORTASMAIL { HelpId = SID_DB_APP_SENDREPORTASMAIL; }; +hidspecial SID_DB_APP_SENDREPORTTOWRITER { HelpId = SID_DB_APP_SENDREPORTTOWRITER; }; +hidspecial SID_DB_NEW_VIEW_SQL { HelpId = SID_DB_NEW_VIEW_SQL; }; + +hidspecial HID_PAGE_DBWIZARD_TEXT_ET_LOCATIONTEXTFILE { HelpId = HID_PAGE_DBWIZARD_TEXT_ET_LOCATIONTEXTFILE ; }; +hidspecial HID_PAGE_DBWIZARD_TEXT_PB_LOCATIONTEXTFILE { HelpId = HID_PAGE_DBWIZARD_TEXT_PB_LOCATIONTEXTFILE ; }; + +hidspecial HID_PAGE_DBWIZARD_TEXT_RB_ACCESSTXTFILES { HelpId = HID_PAGE_DBWIZARD_TEXT_RB_ACCESSTXTFILES ; }; +hidspecial HID_PAGE_DBWIZARD_TEXT_RB_ACCESSCSVFILES { HelpId = HID_PAGE_DBWIZARD_TEXT_RB_ACCESSCSVFILES ; }; +hidspecial HID_PAGE_DBWIZARD_TEXT_RB_ACCESSOTHERFILES { HelpId = HID_PAGE_DBWIZARD_TEXT_RB_ACCESSOTHERFILES ; }; +hidspecial HID_PAGE_DBWIZARD_TEXT_ET_OWNEXTENSION { HelpId = HID_PAGE_DBWIZARD_TEXT_ET_OWNEXTENSION ; }; + +hidspecial HID_PAGE_DBWIZARD_TEXT_CB_FIELDSEPARATOR { HelpId = HID_PAGE_DBWIZARD_TEXT_CB_FIELDSEPARATOR ; }; +hidspecial HID_PAGE_DBWIZARD_TEXT_CB_TEXTSEPARATOR { HelpId = HID_PAGE_DBWIZARD_TEXT_CB_TEXTSEPARATOR ; }; +hidspecial HID_PAGE_DBWIZARD_TEXT_CB_DECIMALSEPARATOR { HelpId = HID_PAGE_DBWIZARD_TEXT_CB_DECIMALSEPARATOR ; }; +hidspecial HID_PAGE_DBWIZARD_TEXT_CB_THOUSANDSSEPARATOR { HelpId = HID_PAGE_DBWIZARD_TEXT_CB_THOUSANDSSEPARATOR ; }; + +hidspecial HID_PAGE_DBWIZARD_MSACCESS_ET_MSACCESSLOCATION { HelpId = HID_PAGE_DBWIZARD_MSACCESS_ET_MSACCESSLOCATION ; }; +hidspecial HID_PAGE_DBWIZARD_MSACCESS_PB_MSACCESSLOCATION { HelpId = HID_PAGE_DBWIZARD_MSACCESS_PB_MSACCESSLOCATION ; }; + +hidspecial HID_PAGE_DBWIZARD_LDAP_ET_HOSTSERVER { HelpId = HID_PAGE_DBWIZARD_LDAP_ET_HOSTSERVER ; }; +hidspecial HID_PAGE_DBWIZARD_LDAP_ET_BASEDN { HelpId = HID_PAGE_DBWIZARD_LDAP_ET_BASEDN ; }; +hidspecial HID_PAGE_DBWIZARD_LDAP_ET_PORTNUMBER { HelpId = HID_PAGE_DBWIZARD_LDAP_ET_PORTNUMBER ; }; +hidspecial HID_PAGE_DBWIZARD_LDAP_CB_USESSL { HelpId = HID_PAGE_DBWIZARD_LDAP_CB_USESSL ; }; +hidspecial HID_PAGE_DBWIZARD_LDAP_PB_TESTLDAPCONNECTION { HelpId = HID_PAGE_DBWIZARD_LDAP_PB_TESTLDAPCONNECTION ; }; + +hidspecial HID_PAGE_DBWIZARD_ADABAS_ET_ADABASNAME { HelpId = HID_PAGE_DBWIZARD_ADABAS_ET_ADABASNAME ; }; +hidspecial HID_PAGE_DBWIZARD_ADABAS_PB_ADABASNAME { HelpId = HID_PAGE_DBWIZARD_ADABAS_PB_ADABASNAME ; }; + +hidspecial HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAODBC { HelpId = HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAODBC ; }; +hidspecial HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAJDBC { HelpId = HID_PAGE_DBWIZARD_MYSQL_RB_CONNECTVIAJDBC ; }; + +hidspecial HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEDBNAME { HelpId = HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEDBNAME ; }; +hidspecial HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEHOSTSERVER { HelpId = HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEHOSTSERVER ; }; +hidspecial HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEPORT { HelpId = HID_PAGE_DBWIZARD_ORACLE_ET_ORACLEPORT ; }; +hidspecial HID_PAGE_DBWIZARD_ORACLE_ET_ORACLECLASS { HelpId = HID_PAGE_DBWIZARD_ORACLE_ET_ORACLECLASS ; }; +hidspecial HID_PAGE_DBWIZARD_ORACLE_PB_TESTORACLECLASS { HelpId = HID_PAGE_DBWIZARD_ORACLE_PB_TESTORACLECLASS ; }; + +hidspecial HID_PAGE_DBWIZARD_JDBC_ET_JDBCURL { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_JDBCURL ; }; +hidspecial HID_PAGE_DBWIZARD_JDBC_PB_JDBCURL { HelpId = HID_PAGE_DBWIZARD_JDBC_PB_JDBCURL ; }; + +hidspecial HID_PAGE_DBWIZARD_JDBC_ET_MYSQLDBNAME { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_MYSQLDBNAME ; }; +hidspecial HID_PAGE_DBWIZARD_JDBC_ET_MYSQLHOSTSERVER { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_MYSQLHOSTSERVER ; }; +hidspecial HID_PAGE_DBWIZARD_JDBC_ET_MYSQLPORT { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_MYSQLPORT ; }; +hidspecial HID_PAGE_DBWIZARD_JDBC_ET_MYSQLCLASS { HelpId = HID_PAGE_DBWIZARD_JDBC_ET_MYSQLCLASS ; }; +hidspecial HID_PAGE_DBWIZARD_JDBC_PB_TESTMYSQLCLASS { HelpId = HID_PAGE_DBWIZARD_JDBC_PB_TESTMYSQLCLASS ; }; + +hidspecial HID_PAGE_DBWIZARD_ADO_ET_ADOURL { HelpId = HID_PAGE_DBWIZARD_ADO_ET_ADOURL ; }; +hidspecial HID_PAGE_DBWIZARD_ADO_PB_ADOURL { HelpId = HID_PAGE_DBWIZARD_ADO_PB_ADOURL ; }; +hidspecial HID_PAGE_DBWIZARD_ADO_PB_TESTADOCONNECTION { HelpId = HID_PAGE_DBWIZARD_ADO_PB_TESTADOCONNECTION ; }; + +hidspecial HID_PAGE_DBWIZARD_ODBC_ET_NAMEOFODBCDATASOURCE { HelpId = HID_PAGE_DBWIZARD_ODBC_ET_NAMEOFODBCDATASOURCE ; }; +hidspecial HID_PAGE_DBWIZARD_ODBC_PB_NAMEOFODBCDATASOURCE { HelpId = HID_PAGE_DBWIZARD_ODBC_PB_NAMEOFODBCDATASOURCE ; }; + +hidspecial HID_PAGE_DBWIZARD_SPREADSHEET_ET_SPREADSHEETPATH { HelpId = HID_PAGE_DBWIZARD_SPREADSHEET_ET_SPREADSHEETPATH ; }; +hidspecial HID_PAGE_DBWIZARD_SPREADSHEET_PB_SPREADSHEETPATH { HelpId = HID_PAGE_DBWIZARD_SPREADSHEET_PB_SPREADSHEETPATH ; }; +hidspecial HID_PAGE_DBWIZARD_SPREADSHEET_CB_SPREADSHEETPASSWORDREQUIRED { HelpId = HID_PAGE_DBWIZARD_SPREADSHEET_CB_SPREADSHEETPASSWORDREQUIRED ; }; + +hidspecial HID_PAGE_DBWIZARD_AUTHENTIFICATION_CB_GENERALPASSWORDREQUIRED { HelpId = HID_PAGE_DBWIZARD_AUTHENTIFICATION_CB_GENERALPASSWORDREQUIRED ; }; +hidspecial HID_PAGE_DBWIZARD_AUTHENTIFICATION_ET_GENERALUSERNAME { HelpId = HID_PAGE_DBWIZARD_AUTHENTIFICATION_ET_GENERALUSERNAME ; }; +hidspecial HID_PAGE_DBWIZARD_FINAL_RB_REGISTERDATASOURCE { HelpId = HID_PAGE_DBWIZARD_FINAL_RB_REGISTERDATASOURCE ; }; +hidspecial HID_PAGE_DBWIZARD_FINAL_RB_DONTREGISTERDATASOURCE { HelpId = HID_PAGE_DBWIZARD_FINAL_RB_DONTREGISTERDATASOURCE ; }; +hidspecial HID_PAGE_DBWIZARD_FINAL_CB_STARTTABLEWIZARD { HelpId = HID_PAGE_DBWIZARD_FINAL_CB_STARTTABLEWIZARD ; }; +hidspecial HID_PAGE_DBWIZARD_FINAL_CB_OPENAFTERWARDS { HelpId = HID_PAGE_DBWIZARD_FINAL_CB_OPENAFTERWARDS ; }; +hidspecial HID_DSADMIN_USESSL_LDAP { HelpId = HID_DSADMIN_USESSL_LDAP ; }; +hidspecial HID_DSADMIN_DOSLINEENDS { HelpId = HID_DSADMIN_DOSLINEENDS ; }; +hidspecial SID_DB_QUERY_PREVIEW { HelpId = SID_DB_QUERY_PREVIEW ; }; +hidspecial HID_PAGE_DBWIZARD_USERDEFINED_ET_BROWSE { HelpId = HID_PAGE_DBWIZARD_USERDEFINED_ET_BROWSE ; }; +hidspecial HID_PAGE_DBWIZARD_USERDEFINED_BROWSE { HelpId = HID_PAGE_DBWIZARD_USERDEFINED_BROWSE ; }; +hidspecial HID_DLG_DATABASE_WIZARD { HelpId = HID_DLG_DATABASE_WIZARD ; }; +hidspecial HID_BROWSER_ADMINISTRATE { HelpId = HID_BROWSER_ADMINISTRATE ; }; +hidspecial HID_DSADMIN_IGNORECURRENCY { HelpId = HID_DSADMIN_IGNORECURRENCY ; }; +hidspecial HID_DLG_QRY_JOIN_CONTROL { HelpId = HID_DLG_QRY_JOIN_CONTROL ; }; +hidspecial HID_EXTENSION_NOT_PRESENT_DLG { HelpId = HID_EXTENSION_NOT_PRESENT_DLG ; }; +hidspecial HID_DLG_ADABAS_NEWDB { HelpId = HID_DLG_ADABAS_NEWDB; }; +hidspecial HID_DLG_ADABAS_DBNAME { HelpId = HID_DLG_ADABAS_DBNAME ; }; +hidspecial HID_DLG_ADABAS_SYSUSR { HelpId = HID_DLG_ADABAS_SYSUSR ; }; +hidspecial HID_DLG_ADABAS_SYSPWD { HelpId = HID_DLG_ADABAS_SYSPWD ; }; +hidspecial HID_DLG_ADABAS_CONUSR { HelpId = HID_DLG_ADABAS_CONUSR ; }; +hidspecial HID_DLG_ADABAS_CONPWD { HelpId = HID_DLG_ADABAS_CONPWD ; }; +hidspecial HID_DLG_ADABAS_DATADEVSPACE_SIZE { HelpId = HID_DLG_ADABAS_DATADEVSPACE_SIZE ; }; +hidspecial HID_DLG_ADABAS_CACHE_SIZE { HelpId = HID_DLG_ADABAS_CACHE_SIZE ; }; +hidspecial HID_DLG_ADABAS_USR { HelpId = HID_DLG_ADABAS_USR ; }; +hidspecial HID_DLG_ADABAS_DOMAINPWD { HelpId = HID_DLG_ADABAS_DOMAINPWD ; }; +hidspecial HID_DLG_ADABAS_RESTORE { HelpId = HID_DLG_ADABAS_RESTORE ; }; +hidspecial HID_DLG_ADABAS_PBRESTORE { HelpId = HID_DLG_ADABAS_PBRESTORE ; }; +hidspecial HID_DLG_ADABAS_SYSDEVSPACE { HelpId = HID_DLG_ADABAS_SYSDEVSPACE ; }; +hidspecial HID_DLG_ADABAS_PBSYSDEVSPACE { HelpId = HID_DLG_ADABAS_PBSYSDEVSPACE ; }; +hidspecial HID_DLG_ADABAS_TRANSACTIONLOG { HelpId = HID_DLG_ADABAS_TRANSACTIONLOG ; }; +hidspecial HID_DLG_ADABAS_PBTRANSACTIONLOG { HelpId = HID_DLG_ADABAS_PBTRANSACTIONLOG ; }; +hidspecial HID_DLG_ADABAS_DATADEVSPACE { HelpId = HID_DLG_ADABAS_DATADEVSPACE ; }; +hidspecial HID_DLG_ADABAS_PBDATADEVSPACE { HelpId = HID_DLG_ADABAS_PBDATADEVSPACE ; }; +hidspecial HID_DLG_ADABAS_TRANSACTIONLOG_SIZE { HelpId = HID_DLG_ADABAS_TRANSACTIONLOG_SIZE; }; + +hidspecial HID_MACRO_MIGRATION_BACKUP_LOCATION { HelpId = HID_MACRO_MIGRATION_BACKUP_LOCATION; }; |