# Generated search expressions template
# From file: org.eclipse.datatools.connectivity.db.generic.ui_IHelpContextsGenericDBProfile.java

# * Copyright (c) 2007 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: brianf - initial API and implementation

# For plug-in: org.eclipse.datatools.connectivity.db.generic.ui

#	 * TPS_helpKey_constants_for_plug-in: org.eclipse.datatools.connectivity.db.generic.ui


#	 * 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 = JDBC_CONNECTION_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 = JDBC_CONNECTION_PROFILE_PROPERTY_PAGE

#	 * GENERIC_DB_PROFILE_WIZARD = the actual New SQL Model - JDBC Connection Profile wizard

GENERIC_DB_PROFILE_WIZARD = JDBC_CONNECTION_PROFILE_WIZARD
