/*******************************************************************************
 * Copyright (c) 2000, 2010 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
 *******************************************************************************/
package org.eclipse.draw2d;

import org.eclipse.swt.graphics.Color;

/**
 * Provides a raised border.
 */
public class SimpleRaisedBorder extends SchemeBorder {

	private static final Scheme DOUBLE = new Scheme(new Color[] {
			ColorConstants.buttonLightest(), ColorConstants.button() },
			new Color[] { ColorConstants.buttonDarkest(),
					ColorConstants.buttonDarker() });

	/**
	 * Constructs a SimpleRaisedBorder with the predefined
	 * {@link SchemeBorder.SCHEMES#BUTTON_RAISED} Scheme set as default.
	 * 
	 * @since 2.0
	 */
	public SimpleRaisedBorder() {
		super(SCHEMES.BUTTON_RAISED());
	}

	/**
	 * Constructs a SimpleRaisedBorder with the width of all sides provided as
	 * input. If width == 2, this SimpleRaisedBorder will use the local DOUBLE
	 * Scheme, otherwise it will use the
	 * {@link SchemeBorder.SCHEMES#BUTTON_RAISED} Scheme.
	 * 
	 * @param width
	 *            the width of all the sides of the border
	 * @since 2.0
	 */
	public SimpleRaisedBorder(int width) {
		super(width == 2 ? DOUBLE : SCHEMES.BUTTON_RAISED());
	}

}
