# 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 v1.0 which
# * accompanies this distribution, and is available at
# * http://www.eclipse.org/legal/epl-v10.html
# * 
# * 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