/******************************************************************************* * Copyright (c) 2004, 2006 Sybase, Inc. 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: *     Sybase, Inc. - initial API and implementation *******************************************************************************/package org.eclipse.jst.jsf.facesconfig.ui.preference;import org.eclipse.draw2d.ColorConstants;import org.eclipse.swt.graphics.Color;/** *  *  *  * Constants for figure dimensions, etc. used in the sample app *  */public class FigureConstants{	/**	 * 	 * 	 * 	 */	private FigureConstants()	{	    // no external instantiation	}	public static final int PORT_SIDE = 10; // (int)Math.round( ARROW_SIDE *											// Math.cos( 30 ) );	public static final Color PORT_INPUT_TRIANGLE_COLOR = ColorConstants.black;	public static final Color PORT_OUTPUT_TRIANGLE_COLOR = ColorConstants.black;	public static final Color PORT_EXCEPTION_TRIANGLE_COLOR = ColorConstants.red;	public static final Color PORT_START_COLOR = ColorConstants.green;	public static final Color PORT_FINISH_COLOR = ColorConstants.red;	// CR389070: Figures are abbreviating rule figures names and making them	// unreadable	public static final int PORT_SPACING = 2; // ARROW_SIDE / 2;	public static final Color PORT_INPUT_RECTANGLE_COLOR = ColorConstants.white;	public static final Color PORT_OUTPUT_RECTANGLE_COLOR = ColorConstants.white;	// this is the type of port; input or output	public static int INPUT_PORT = 0;	public static int OUTPUT_PORT = 1;}