/*******************************************************************************
 * Copyright (c) 2004, 2015 IBM Corporation and others.
 *
 * 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/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.ui.branding;

/**
 * These constants define the set of properties that the UI expects to be
 * available via <code>IProduct.getProperty(String)</code>.
 *
 * @since 3.0
 * @see org.eclipse.core.runtime.IProduct#getProperty(String)
 */
public interface IProductConstants {
	/**
	 * The SWT application name, used to initialize the SWT Display.
	 * <p>
	 * This value is used to refer to the application in .XDefaults files on X
	 * server based window systems such as Motif.
	 * </p>
	 * <p>
	 * To obtain a human-readable name for the product, use
	 * <code>IProduct.getName()</code>.
	 * </p>
	 *
	 * @see org.eclipse.swt.widgets.Display#setAppName
	 */
	String APP_NAME = "appName"; //$NON-NLS-1$

	/**
	 * The text to show in an "about" dialog for this product. Products designed to
	 * run "headless" typically would not have such text.
	 */
	String ABOUT_TEXT = "aboutText"; //$NON-NLS-1$

	/**
	 * An image which can be shown in an "about" dialog for this product. Products
	 * designed to run "headless" typically would not have such an image.
	 * <p>
	 * The value is either a fully qualified valid URL or a path relative to the
	 * product's defining bundle.
	 * </p>
	 * <p>
	 * A full-sized product image (no larger than 500x330 pixels) is shown without
	 * the "aboutText" blurb. A half-sized product image (no larger than 250x330
	 * pixels) is shown with the "aboutText" blurb beside it.
	 * </p>
	 */
	String ABOUT_IMAGE = "aboutImage"; //$NON-NLS-1$

	/**
	 * A file for customizing default preference values for a product. The value is
	 * interpreted as either a URL or a bundle-relative path by the runtime. This is
	 * not referenced from the workbench.
	 * <p>
	 * The contents must be the same format as a {@link java.util.Properties} file
	 * with the key/value pairs being:
	 * </p>
	 *
	 * <pre>
	 * qualifier/key=value
	 * </pre>
	 *
	 * Where <code>qualifier</code> is typically the bundle id.
	 */
	String PREFERENCE_CUSTOMIZATION = "preferenceCustomization"; //$NON-NLS-1$

	/**
	 * An image to be used as the window icon for this product (16x16). Products
	 * designed to run "headless" typically would not have such an image.
	 * <p>
	 * The value is either a fully qualified valid URL or a path relative to the
	 * product's defining bundle.
	 * </p>
	 * <p>
	 * If the <code>WINDOW_IMAGES</code> property is given, then it supercedes this
	 * one.
	 * </p>
	 *
	 * @deprecated use WINDOW_IMAGES instead (see recommendations there)
	 */
	@Deprecated
	String WINDOW_IMAGE = "windowImage"; //$NON-NLS-1$

	/**
	 * An array of one or more images to be used for this product. The expectation
	 * is that the array will contain the same image rendered at different sizes
	 * (16x16 and 32x32). Products designed to run "headless" typically would not
	 * have such images.
	 * <p>
	 * The value is a comma-separated list of paths, where each path is either a
	 * fully qualified valid URL or a path relative to the product's defining
	 * bundle.
	 * </p>
	 * <p>
	 * If this property is given, then it supercedes <code>WINDOW_IMAGE</code>.
	 * </p>
	 * <p>
	 * It is recommended that products use <code>WINDOW_IMAGES</code> rather than
	 * <code>WINDOW_IMAGE</code>, and specify both a 16x16 image and a 32x32 image,
	 * to ensure that different sizes of the image are available for different uses
	 * in the OS. For example, on Windows, the 16x16 image is used in the corner of
	 * the window and in the task tray, but the 32x32 image is used in the Alt+Tab
	 * application switcher.
	 * </p>
	 */
	String WINDOW_IMAGES = "windowImages"; //$NON-NLS-1$

	/**
	 * The product's welcome page (special XML-based format).
	 * <p>
	 * The value is either a fully qualified valid URL or a path relative to the
	 * product's defining bundle.
	 * </p>
	 * <p>
	 * Products designed to run "headless" typically would not have such a page. Use
	 * of this property is discouraged in 3.0, the new
	 * <code>org.eclipse.ui.intro</code> extension point should be used instead.
	 * </p>
	 */
	String WELCOME_PAGE = "welcomePage"; //$NON-NLS-1$

	/**
	 * The rectangle relative to the splash image's top left corner where the
	 * progress bar for reporting progress at startup should be shown. Products
	 * designed to run "headless" typically would not define this property.
	 * <p>
	 * The value is a comma-separated list of four integer values, specifying x, y,
	 * width, and height of the rectangle in pixel coordinates.
	 * </p>
	 *
	 * @since 3.2
	 * @see org.eclipse.ui.IWorkbenchPreferenceConstants#SHOW_PROGRESS_ON_STARTUP
	 */
	String STARTUP_PROGRESS_RECT = "startupProgressRect"; //$NON-NLS-1$

	/**
	 * The rectangle relative to the splash image's top left corner where messages
	 * for reporting progress at startup should be shown. Products designed to run
	 * "headless" typically would not define this property.
	 * <p>
	 * The value is a comma-separated list of four integer values, specifying x, y,
	 * width, and height of the rectangle in pixel coordinates.
	 * </p>
	 *
	 * @since 3.2
	 * @see org.eclipse.ui.IWorkbenchPreferenceConstants#SHOW_PROGRESS_ON_STARTUP
	 */
	String STARTUP_MESSAGE_RECT = "startupMessageRect"; //$NON-NLS-1$

	/**
	 * The foreground color to be used when reporting progress at startup. Products
	 * designed to run "headless" typically would not define this property.
	 * <p>
	 * The value is a six-digit hexadecimal number. The first two digits specify the
	 * red component of the color, the next two digits the green component, and the
	 * last two digits the blue component.
	 * </p>
	 *
	 * @since 3.2
	 * @see org.eclipse.ui.IWorkbenchPreferenceConstants#SHOW_PROGRESS_ON_STARTUP
	 */
	String STARTUP_FOREGROUND_COLOR = "startupForegroundColor"; //$NON-NLS-1$

}
