/*******************************************************************************
 * Copyright (c) 2000, 2009 IBM Corporation and others.
 * 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:
 *     IBM Corporation - initial API and implementation
 *     John-Mason P. Shackelford (john-mason.shackelford@pearson.com) - bug 49380, 49445, bug 53547
 *******************************************************************************/
package org.eclipse.ant.internal.ui;

/**
 * Defines the constants available for client use.
 * <p>
 * This interface is not intended to be extended or implemented by clients.
 * </p>
 */
public interface IAntUIConstants {
	/**
	 * Plugin identifier for Ant ui(value <code>org.eclipse.ant.ui</code>).
	 */
	public static final String PLUGIN_ID = "org.eclipse.ant.ui"; //$NON-NLS-1$;

	// ------- Views -------

	/**
	 * Ant View identifier (value <code>org.eclipse.ant.ui.AntView</code>).
	 */
	public static final String ANT_VIEW_ID = PLUGIN_ID + ".AntView"; //$NON-NLS-1$

	// ------- Images -------
	/**
	 * Main tab image.
	 */
	public static final String IMG_TAB_MAIN = PLUGIN_ID + ".IMG_TAB_MAIN"; //$NON-NLS-1$

	public static final String IMG_PROPERTY = PLUGIN_ID + ".IMG_PROPERTY"; //$NON-NLS-1$

	public static final String IMG_TAB_ANT_TARGETS = PLUGIN_ID + ".IMG_TAB_ANT_TARGETS"; //$NON-NLS-1$
	public static final String IMG_TAB_CLASSPATH = PLUGIN_ID + ".IMG_TAB_CLASSPATH"; //$NON-NLS-1$;

	// Label images
	public static final String IMG_ANT = PLUGIN_ID + ".ant"; //$NON-NLS-1$
	public static final String IMG_ANT_PROJECT = PLUGIN_ID + ".antProject"; //$NON-NLS-1$
	public static final String IMG_ANT_TARGET = PLUGIN_ID + ".antTarget"; //$NON-NLS-1$
	public static final String IMG_ANT_TARGET_INTERNAL = PLUGIN_ID + ".antPrivateTarget"; //$NON-NLS-1$
	public static final String IMG_ANT_DEFAULT_TARGET = PLUGIN_ID + ".antDefaultTarget"; //$NON-NLS-1$
	public static final String IMG_ANT_TARGET_ERROR = PLUGIN_ID + ".antTargetError"; //$NON-NLS-1$
	public static final String IMG_ANT_MACRODEF = PLUGIN_ID + ".antMacrodef"; //$NON-NLS-1$
	public static final String IMG_ANT_IMPORT = PLUGIN_ID + ".antImport"; //$NON-NLS-1$
	public static final String IMG_ANT_TASKDEF = PLUGIN_ID + ".antTaskdef"; //$NON-NLS-1$
	public static final String IMG_ANT_ECLIPSE_RUNTIME_OBJECT = PLUGIN_ID + ".antEclipse"; //$NON-NLS-1$

	// editor toolbar
	public static final String IMG_SEGMENT_EDIT = PLUGIN_ID + ".segmentEdit"; //$NON-NLS-1$
	public static final String IMG_MARK_OCCURRENCES = PLUGIN_ID + ".markOccurrences"; //$NON-NLS-1$

	/**
	 * Icon for task proposal.
	 */
	public static final String IMG_TASK_PROPOSAL = PLUGIN_ID + ".html_tab_obj"; //$NON-NLS-1$
	public static final String IMG_TEMPLATE_PROPOSAL = PLUGIN_ID + ".template_obj"; //$NON-NLS-1$

	// Action images
	public static final String IMG_REMOVE = PLUGIN_ID + ".remove"; //$NON-NLS-1$
	public static final String IMG_REMOVE_ALL = PLUGIN_ID + ".removeAll"; //$NON-NLS-1$
	public static final String IMG_ADD = PLUGIN_ID + ".add"; //$NON-NLS-1$
	public static final String IMG_RUN = PLUGIN_ID + ".run"; //$NON-NLS-1$
	public static final String IMG_SEARCH = PLUGIN_ID + ".search"; //$NON-NLS-1$
	public static final String IMG_FILTER_INTERNAL_TARGETS = PLUGIN_ID + ".filterInternalTargets"; //$NON-NLS-1$
	public static final String IMG_FILTER_IMPORTED_ELEMENTS = PLUGIN_ID + ".filterImportedElements"; //$NON-NLS-1$
	public static final String IMG_FILTER_PROPERTIES = PLUGIN_ID + ".filterProperties"; //$NON-NLS-1$
	public static final String IMG_FILTER_TOP_LEVEL = PLUGIN_ID + ".filterTopLevel"; //$NON-NLS-1$
	public static final String IMG_SORT_OUTLINE = PLUGIN_ID + ".sortOutline"; //$NON-NLS-1$
	public static final String IMG_LINK_WITH_EDITOR = PLUGIN_ID + ".linkWithEditor"; //$NON-NLS-1$
	public static final String IMG_REFRESH = PLUGIN_ID + ".IMG_REFRESH"; //$NON-NLS-1$

	public static final String IMG_WIZARD_BANNER = PLUGIN_ID + ".IMG_WIZARD_BANNER"; //$NON-NLS-1$
	public static final String IMG_EXPORT_WIZARD_BANNER = PLUGIN_ID + ".IMG_EXPORT_WIZARD_BANNER"; //$NON-NLS-1$

	// Overlays
	public static final String IMG_OVR_ERROR = PLUGIN_ID + ".ovrError"; //$NON-NLS-1$
	public static final String IMG_OVR_WARNING = PLUGIN_ID + ".ovrWarning"; //$NON-NLS-1$
	public static final String IMG_OVR_IMPORT = PLUGIN_ID + ".ovrImport"; //$NON-NLS-1$

	public static final String IMG_ANT_TYPE = PLUGIN_ID + ".type"; //$NON-NLS-1$

	// -------- Status Codes -------------

	/**
	 * Status code used by the 'Run Ant' status handler which is invoked when the launch dialog is opened by the 'Run Ant' action.
	 */
	public static final int STATUS_INIT_RUN_ANT = 1000;

	public static final String DIALOGSTORE_LASTEXTJAR = PLUGIN_ID + ".lastextjar"; //$NON-NLS-1$
	public static final String DIALOGSTORE_LASTEXTFILE = PLUGIN_ID + ".lastextfile"; //$NON-NLS-1$
	public static final String DIALOGSTORE_LASTFOLDER = PLUGIN_ID + ".lastfolder"; //$NON-NLS-1$
	public static final String DIALOGSTORE_LASTANTHOME = PLUGIN_ID + ".lastanthome"; //$NON-NLS-1$

	/**
	 * Size of left-hand column for right-justified task name. Used for Ant Build logging.
	 * 
	 * @see org.eclipse.ant.internal.launching.runtime.logger.AntProcessBuildLogger
	 * @see org.eclipse.ant.internal.launching.launchConfigurations.RemoteAntBuildListener
	 */
	public static final int LEFT_COLUMN_SIZE = 15;

	/**
	 * Id of the IProcessFactory to use when creating processes for remote Ant builds.
	 */
	public static final String REMOTE_ANT_PROCESS_FACTORY_ID = "org.eclipse.ant.ui.remoteAntProcessFactory"; //$NON-NLS-1$

	/**
	 * Boolean attribute indicating if an input handler should be supplied for the build Default value is <code>true</code>.
	 */
	public static final String SET_INPUTHANDLER = PLUGIN_ID + "SET_INPUTHANDLER"; //$NON-NLS-1$	
}
