Frames | No Frames |
1: /* ======================================================================== 2: * JCommon : a free general purpose class library for the Java(tm) platform 3: * ======================================================================== 4: * 5: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. 6: * 7: * Project Info: http://www.jfree.org/jcommon/index.html 8: * 9: * This library is free software; you can redistribute it and/or modify it 10: * under the terms of the GNU Lesser General Public License as published by 11: * the Free Software Foundation; either version 2.1 of the License, or 12: * (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but 15: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 17: * License for more details. 18: * 19: * You should have received a copy of the GNU Lesser General Public 20: * License along with this library; if not, write to the Free Software 21: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 22: * USA. 23: * 24: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 25: * in the United States and other countries.] 26: * 27: * --------------- 28: * ArrowPanel.java 29: * --------------- 30: * (C) Copyright 2002-2004, by Object Refinery Limited. 31: * 32: * Original Author: David Gilbert (for Object Refinery Limited); 33: * Contributor(s): -; 34: * 35: * $Id: ArrowPanel.java,v 1.5 2005/11/16 15:58:41 taqua Exp $ 36: * 37: * Changes 38: * ------- 39: * 25-Sep-2002 : Version 1 (DG); 40: * 13-Oct-2002 : Added Javadocs (DG); 41: * 42: */ 43: 44: package org.jfree.ui; 45: 46: import java.awt.Dimension; 47: import java.awt.Graphics; 48: import java.awt.Graphics2D; 49: import java.awt.Insets; 50: import java.awt.Polygon; 51: import java.awt.Shape; 52: import java.awt.geom.Rectangle2D; 53: 54: import javax.swing.JPanel; 55: 56: /** 57: * A basic panel that displays a small up or down arrow. 58: * 59: * @author David Gilbert 60: */ 61: public class ArrowPanel extends JPanel { 62: 63: /** A constant for the up arrow. */ 64: public static final int UP = 0; 65: 66: /** A constant for the down arrow. */ 67: public static final int DOWN = 1; 68: 69: /** The arrow type. */ 70: private int type = UP; 71: 72: /** The available area. */ 73: private Rectangle2D available = new Rectangle2D.Float(); 74: 75: /** 76: * Creates a new arrow panel. 77: * 78: * @param type the arrow type. 79: */ 80: public ArrowPanel(final int type) { 81: this.type = type; 82: setPreferredSize(new Dimension(14, 9)); 83: } 84: 85: /** 86: * Paints the arrow panel. 87: * 88: * @param g the graphics device for drawing on. 89: */ 90: public void paintComponent(final Graphics g) { 91: 92: super.paintComponent(g); 93: final Graphics2D g2 = (Graphics2D) g; 94: 95: // first determine the size of the drawing area... 96: final Dimension size = getSize(); 97: final Insets insets = getInsets(); 98: this.available.setRect(insets.left, insets.top, 99: size.getWidth() - insets.left - insets.right, 100: size.getHeight() - insets.top - insets.bottom); 101: g2.translate(insets.left, insets.top); 102: g2.fill(getArrow(this.type)); 103: 104: } 105: 106: /** 107: * Returns a shape for the arrow. 108: * 109: * @param t the arrow type. 110: * 111: * @return the arrow shape. 112: */ 113: private Shape getArrow(final int t) { 114: switch (t) { 115: case UP : return getUpArrow(); 116: case DOWN : return getDownArrow(); 117: default : return getUpArrow(); 118: } 119: } 120: 121: /** 122: * Returns an up arrow. 123: * 124: * @return an up arrow. 125: */ 126: private Shape getUpArrow() { 127: final Polygon result = new Polygon(); 128: result.addPoint(7, 2); 129: result.addPoint(2, 7); 130: result.addPoint(12, 7); 131: return result; 132: } 133: 134: /** 135: * Returns a down arrow. 136: * 137: * @return a down arrow. 138: */ 139: private Shape getDownArrow() { 140: final Polygon result = new Polygon(); 141: result.addPoint(7, 7); 142: result.addPoint(2, 2); 143: result.addPoint(12, 2); 144: return result; 145: } 146: 147: }