/******************************************************************************* * Copyright (c) 2000, 2005 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.gef.handles; import org.eclipse.swt.graphics.Color; import org.eclipse.draw2d.AbstractBorder; import org.eclipse.draw2d.Border; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.Graphics; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Insets; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.PointList; import org.eclipse.draw2d.geometry.Rectangle; /** * A {@link Border} with a triangle in each corner. * @deprecated this class is no longer used */ public final class CornerTriangleBorder extends AbstractBorder { private boolean isPrimary = true; /** * Creates a new <code>CornerTriangleBorder</code>. * * @param isPrimary Determines this border's color. */ public CornerTriangleBorder(boolean isPrimary) { super(); this.isPrimary = isPrimary; } /** * Returns <code>true</code>. * @see org.eclipse.draw2d.Border#isOpaque() */ public boolean isOpaque() { return true; } /** * @see org.eclipse.draw2d.Border#getInsets(org.eclipse.draw2d.IFigure) */ public Insets getInsets(IFigure figure) { return new Insets(1); } /** * Paints the border. If this is a border for the primary selection, it's painted black. * Otherwise, it's painted white. * * @param figure The <code>IFigure</code> this border will be painted on * @param graphics The <code>Graphics</code>. * @param insets The <code>Insets</code>. */ public void paint(IFigure figure, Graphics graphics, Insets insets) { // Don't paint the center of the figure. int width = 1, edgeSize; Rectangle rect = tempRect; tempRect.setBounds(getPaintRectangle(figure, insets)); rect.width--; rect.height--; rect.shrink(width / 2, width / 2); graphics.setLineWidth(width); //Draw the primary handles one pixel larger than the secondary //handles. Primary which paints as black with white border looks //smaller than secondary which paints as white with black border. edgeSize = isPrimary() ? 7 : 6; //Top left corner PointList pList = new PointList(); pList.addPoint(rect.getTopLeft()); pList.addPoint(new Point(rect.x, rect.y + edgeSize)); pList.addPoint(new Point(rect.x + edgeSize, rect.y)); graphics.setBackgroundColor(getFillColor()); graphics.fillPolygon(pList); graphics.setForegroundColor(getBorderColor()); graphics.drawPolygon(pList); //Bottom left corner pList = new PointList(); pList.addPoint(rect.getBottomLeft()); pList.addPoint(new Point((rect.x + edgeSize), (rect.y + rect.height))); pList.addPoint(new Point(rect.x, (rect.y + rect.height - edgeSize))); graphics.setBackgroundColor(getFillColor()); graphics.fillPolygon(pList); graphics.setForegroundColor(getBorderColor()); graphics.drawPolygon(pList); //Top right corner pList = new PointList(); pList.addPoint(rect.getTopRight()); pList.addPoint(new Point(((rect.x + rect.width) - edgeSize), rect.y)); pList.addPoint(new Point((rect.x + rect.width), (rect.y + edgeSize))); graphics.setBackgroundColor(getFillColor()); graphics.fillPolygon(pList); graphics.setForegroundColor(getBorderColor()); graphics.drawPolygon(pList); //Bottom right corner pList = new PointList(); pList.addPoint(rect.getBottomRight()); pList.addPoint(new Point(((rect.x + rect.width) - edgeSize), (rect.y + rect.height))); pList.addPoint(new Point((rect.x + rect.width), (rect.y + rect.height - edgeSize))); graphics.setBackgroundColor(getFillColor()); graphics.fillPolygon(pList); graphics.setForegroundColor(getBorderColor()); graphics.drawPolygon(pList); } /** * Returns the outline color based on what is returned * by {@link #isPrimary()}. * * @return The outline color. */ protected Color getBorderColor() { return (isPrimary()) ? ColorConstants.white : ColorConstants.black; } /** * Returns the fill color based on what is returned * by {@link #isPrimary()}. * * @return The fill color. */ protected Color getFillColor() { return (isPrimary()) ? ColorConstants.black : ColorConstants.white; } /** * Returns <code>true</code> if this border is for the * primary object in the selection. Otherwise, returns * <code>false</code>. * * @return Whether or not this is a primary border. */ public boolean isPrimary() { return isPrimary; } /** * Sets this border as primary if <code>isPrimary</code> * is <code>true</code>. * * @param isPrimary True if this border is for the primary object in the selection. */ public void setPrimary(boolean isPrimary) { this.isPrimary = isPrimary; } }