/******************************************************************************* * Copyright (c) 2003, 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.draw2d.examples.uml; import org.eclipse.draw2d.*; import org.eclipse.draw2d.AbstractBorder; import org.eclipse.draw2d.geometry.*; import org.eclipse.draw2d.geometry.Insets; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.draw2d.text.FlowPage; import org.eclipse.draw2d.text.TextFlow; /** * since 3.0 */ public class StickyNote extends FlowPage { static class DogEar extends AbstractBorder { private static final Insets INSETS = new Insets(3, 3, 3, 3); /** * @see org.eclipse.draw2d.Border#getInsets(org.eclipse.draw2d.IFigure) */ public Insets getInsets(IFigure figure) { return INSETS; } /** * @see org.eclipse.draw2d.Border#paint(org.eclipse.draw2d.IFigure, org.eclipse.draw2d.Graphics, org.eclipse.draw2d.geometry.Insets) */ public void paint(IFigure figure, Graphics g, Insets insets) { Rectangle r = getPaintRectangle(figure, insets); r.resize(-1, -1); PointList pl = new PointList(new int[] { -5, 5, 0, 5, -5, 0}); pl.translate(r.getTopRight()); g.drawPolygon(pl); g.drawLine(r.getTopLeft(), r.getTopRight().translate( -5, 0)); g.drawLine(r.getTopLeft(), r.getTopLeft()); g.drawLine(r.getBottomLeft(), r.getBottomRight()); g.drawLine(r.getTopRight().translate(0, 5), r.getBottomRight()); g.drawLine(r.getTopLeft(), r.getBottomLeft()); } } private TextFlow text = new TextFlow(); public StickyNote() { setBorder(new DogEar()); add(text); text.setText("This is a sticky note. It wraps text based on its " + "width."); setBackgroundColor(ColorConstants.tooltipBackground()); setOpaque(true); } /** * @see org.eclipse.draw2d.text.FlowFigure#paintFigure(org.eclipse.draw2d.Graphics) */ protected void paintFigure(Graphics g) { Rectangle r = getBounds(); PointList pl = new PointList(5); pl.addPoint(r.getTopLeft()); pl.addPoint(r.getTopRight().translate( - 6, 0)); pl.addPoint(r. getTopRight().translate(0, 6)); pl.addPoint(r.getBottomRight()); pl.addPoint(r.getBottomLeft()); g.fillPolygon(pl); } }