# Generated search expressions template
# From file: org.eclipse.datatools.connectivity.ui_IHelpConstants.java


# * Copyright (c) 2005 Sybase, Inc.
# * 
# * All rights reserved. This program and the accompanying materials are made
# * available under the terms of the Eclipse Public License 2.0 which
# * accompanies this distribution, and is available at
# * https://www.eclipse.org/legal/epl-2.0/
# * 
# * Contributors: brandow - initial API and implementation

# For plug-in: org.eclipse.datatools.connectivity.internal.ui

# * @author brandow, brianf

#	 * TPS_helpKey_constants_for_plug-in: org.eclipse.datatools.connectivity.ui


#	 * CONTEXT_ID_CP_PROPERTY_PAGE =
#	 * Basic profile name/description/auto-connect property page

CONTEXT_ID_CP_PROPERTY_PAGE = CONNECTION_PROFILE_COMMON_PROPERTY_PAGE

#	 * CONTEXT_ID_CP_WIZARD_PAGE =
#	 * wizard selection page in New Connection Profile wizard

CONTEXT_ID_CP_WIZARD_PAGE = NEW_CONNECTION_PROFILE_WIZARD

#	 * CONTEXT_ID_INTRO_WIZARD_PAGE =
#	 * Basic intro page for new connection profile wizard

CONTEXT_ID_INTRO_WIZARD_PAGE = NEW_CONNECTION_PROFILE_WIZARD

#	 * CONTEXT_ID_CONNECTION_PROFILE_SUMMARY_PAGE =
#	 * Basic summary page for new connection profile wizard

CONTEXT_ID_CONNECTION_PROFILE_SUMMARY_PAGE = NEW_CONNECTION_PROFILE_WIZARD

#	 * CONTEXT_ID_NEW_CONNECTION_PROFILE_PAGE =
#	 * Basic profile name/description/auto-connect wizard page

CONTEXT_ID_NEW_CONNECTION_PROFILE_PAGE = NEW_CONNECTION_PROFILE_WIZARD

#	 * CONTEXT_ID_PROFILE_DETAILS_PROPERTY_PAGE =
#	 * Basic profile name/description/auto-connect property page

CONTEXT_ID_PROFILE_DETAILS_PROPERTY_PAGE = CONNECTION_PROFILE_COMMON_PROPERTY_PAGE

#	 * CONTEXT_ID_DRIVER_DEFINITION_DIALOG =
#	 * Driver Definition Dialog, which is the dialog equivalent to the
#	 * functionality on the Driver Preferences page. This dialog is 
#	 * available from the driver drop-down on most profile wizard/property
#	 * pages.

CONTEXT_ID_DRIVER_DEFINITION_DIALOG = DRIVER_DEFINITION_DIALOG

#	 * CONTEXT_ID_EDIT_DRIVER_DIALOG =
#	 * Edit Driver Dialog, allows users to edit a driver definition's name,
#	 * description, and properties

CONTEXT_ID_EDIT_DRIVER_DIALOG = EDIT_DRIVER_DEFINITION_DIALOG

#	 * CONTEXT_ID_NEW_DRIVER_DIALOG =
#	 * New Driver Dialog, allows users to select a driver category and create
#	 * a new driver (Edit Driver Dialog typically follows it once a category
#	 * is selected)

CONTEXT_ID_NEW_DRIVER_DIALOG = NEW_DRIVER_DEFINITION_DIALOG

#	 * CONTEXT_ID_EXPORT_PROFILES_DIALOG =
#	 * Export Profiles Dialog

CONTEXT_ID_EXPORT_PROFILES_DIALOG = EXPORT_CONNECTION_PROFILES_DIALOG

#	 * CONTEXT_ID_IMPORT_PROFILES_DIALOG =
#	 * Import Profiles Dialog

CONTEXT_ID_IMPORT_PROFILES_DIALOG = IMPORT_CONNECTION_PROFILES_DIALOG

#	 * CONTEXT_ID_DRIVER_PREFERENCES =
#	 * Driver Preferences page (see New Driver Dialog)

CONTEXT_ID_DRIVER_PREFERENCES = DRIVER_PREFERENCES

#	 * CONTEXT_ID_PROFILE_VERSION_PROPERTIES =
#	 * Version Property Page for connection profiles, shows the version info
#	 * that comes back from the connection

CONTEXT_ID_PROFILE_VERSION_PROPERTIES = CONNECTION_PROFILE_VERSION_PROPERTIES

#	 * CONTEXT_ID_NEW_CP_WIZARD =
#	 * New Connection Profile Wizard

CONTEXT_ID_NEW_CP_WIZARD = NEW_CONNECTION_PROFILE_WIZARD

#	 * CONTEXT_ID_NEW_REPOSITORY_WIZARD =
#	 * New Repository Wizard

CONTEXT_ID_NEW_REPOSITORY_WIZARD = CONTEXT_ID_NEW_REPOSITORY_WIZARD

#	 * CONTEXT_ID_NEW_CONNECTION_PROFILE_WIZARD =
#	 * New Connection Profile Wizard (overridden by each individual type of profile)

CONTEXT_ID_NEW_CONNECTION_PROFILE_WIZARD = NEW_CONNECTION_PROFILE_WIZARD

#	 * CONTEXT_ID_CONNECTIVITY_PREFERENCE_PAGE =
#	 * Data Management->Connectivity preference page

CONTEXT_ID_CONNECTIVITY_PREFERENCE_PAGE = CONNECTIVITY_PREFERENCE_PAGE

#	 * GENERIC_DB_PROFILE_WIZARD_PAGE = the wizard page that collects SQL Model - JDBC Connection profile
#	 * details such as the JDBC url, user id, password, etc.

GENERIC_DB_PROFILE_WIZARD_PAGE = GENERIC_DB_PROFILE_WIZARD

#	 * GENERIC_DB_PROFILE_PROPERTY_PAGE = the property page that collects SQL Model - JDBC Connection profile
#	 * details such as the JDBC url, user id, password, etc.

GENERIC_DB_PROFILE_PROPERTY_PAGE = GENERIC_DB_PROFILE_PROPERTY_PAGE

#	 * GENERIC_DB_PROFILE_WIZARD = the actual New SQL Model - JDBC Connection Profile wizard

GENERIC_DB_PROFILE_WIZARD = GENERIC_DB_PROFILE_WIZARD