| /******************************************************************************* |
| * 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.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; |
| } |
| |
| } |