# Generated context IDs template


# * 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.sqltools.ddlgen.internal.ui

#	 * TPS_helpKey_constants_for_plug-in: org.eclipse.datatools.sqltools.ddlgen.ui


#	 * GENERATE_DDL_FILE_WIZARD_PAGE -
#	 * Actual DDL file wizard page for Generate DDL wizard

GENERATE_DDL_FILE_WIZARD_PAGE = GENERATE_DDL_WIZARD

#	 * GENERATE_DDL_SELECT_OBJECTS_WIZARD_PAGE -
#	 * Object selection page for Generate DDL wizard

GENERATE_DDL_SELECT_OBJECTS_WIZARD_PAGE = GENERATE_DDL_WIZARD

#	 * GENERATE_DDL_SELECT_OPTIONS_WIZARD_PAGE -
#	 * Options page in Generate DDL wizard

GENERATE_DDL_SELECT_OPTIONS_WIZARD_PAGE = GENERATE_DDL_WIZARD

#	 * GENERATE_DDL_SUMMARY_WIZARD_PAGE -
#	 * Summary page for Generate DDL Wizard

GENERATE_DDL_SUMMARY_WIZARD_PAGE = GENERATE_DDL_WIZARD

#	 * GENERATE_DDL_WIZARD - Actual Generate DDL wizard

GENERATE_DDL_WIZARD = GENERATE_DDL_WIZARD
