--- /dev/null
+/*********************************************************************
+ *
+ * File : $Source$
+ *
+ * Purpose : Painting details for rendering the beveled arrow icon.
+ *
+ * Copyright : Written by and Copyright (C) 2003 the SourceForge
+ * Privoxy team. http://www.privoxy.org/
+ *
+ * Based on the Internet Junkbuster originally written
+ * by and Copyright (C) 1997 Anonymous Coders and
+ * Junkbusters Corporation. http://www.junkbusters.com
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log$
+ *********************************************************************/
+
+package org.privoxy.activityconsole;
+
+import java.awt.*;
+import javax.swing.*;
+
+/**
+ * Painting details for rendering the beveled arrow icon.
+ * @author Last Modified By: $Author$
+ * @version $Rev$-$Date$$State$
+ */
+public class BevelArrowIcon implements Icon
+{
+
+ private static final String
+ COPYRIGHT = org.privoxy.activityconsole.Copyright.COPYRIGHT;
+
+ public static final int UP = 0; // direction
+ public static final int DOWN = 1;
+
+ private static final int DEFAULT_SIZE = 11;
+
+ private Color edge1;
+ private Color edge2;
+ private Color fill;
+ private int size;
+ private int direction;
+
+ public BevelArrowIcon(int direction, boolean isRaisedView, boolean isPressedView)
+ {
+ if (isRaisedView)
+ {
+ if (isPressedView)
+ {
+ init( UIManager.getColor("controlLtHighlight"),
+ UIManager.getColor("controlDkShadow"),
+ UIManager.getColor("controlShadow"),
+ DEFAULT_SIZE, direction);
+ }
+ else
+ {
+ init( UIManager.getColor("controlHighlight"),
+ UIManager.getColor("controlShadow"),
+ UIManager.getColor("control"),
+ DEFAULT_SIZE, direction);
+ }
+ }
+ else
+ {
+ if (isPressedView)
+ {
+ init( UIManager.getColor("controlDkShadow"),
+ UIManager.getColor("controlLtHighlight"),
+ UIManager.getColor("controlShadow"),
+ DEFAULT_SIZE, direction);
+ }
+ else
+ {
+ init( UIManager.getColor("controlShadow"),
+ UIManager.getColor("controlHighlight"),
+ UIManager.getColor("control"),
+ DEFAULT_SIZE, direction);
+ }
+ }
+ }
+
+ public BevelArrowIcon(Color edge1, Color edge2, Color fill,
+ int size, int direction)
+ {
+ init(edge1, edge2, fill, size, direction);
+ }
+
+
+ public void paintIcon(Component c, Graphics g, int x, int y)
+ {
+ switch (direction)
+ {
+ case DOWN: drawDownArrow(g, x, y); break;
+ case UP: drawUpArrow(g, x, y); break;
+ }
+ }
+
+ public int getIconWidth()
+ {
+ return size;
+ }
+
+ public int getIconHeight()
+ {
+ return size;
+ }
+
+
+ private void init(Color edge1, Color edge2, Color fill,
+ int size, int direction)
+ {
+ this.edge1 = edge1;
+ this.edge2 = edge2;
+ this.fill = fill;
+ this.size = size;
+ this.direction = direction;
+ }
+
+ private void drawDownArrow(Graphics g, int xo, int yo)
+ {
+ g.setColor(edge1);
+ g.drawLine(xo, yo, xo+size-1, yo);
+ g.drawLine(xo, yo+1, xo+size-3, yo+1);
+ g.setColor(edge2);
+ g.drawLine(xo+size-2, yo+1, xo+size-1, yo+1);
+ int x = xo+1;
+ int y = yo+2;
+ int dx = size-6;
+ while (y+1 < yo+size)
+ {
+ g.setColor(edge1);
+ g.drawLine(x, y, x+1, y);
+ g.drawLine(x, y+1, x+1, y+1);
+ if (0 < dx)
+ {
+ g.setColor(fill);
+ g.drawLine(x+2, y, x+1+dx, y);
+ g.drawLine(x+2, y+1, x+1+dx, y+1);
+ }
+ g.setColor(edge2);
+ g.drawLine(x+dx+2, y, x+dx+3, y);
+ g.drawLine(x+dx+2, y+1, x+dx+3, y+1);
+ x += 1;
+ y += 2;
+ dx -= 2;
+ }
+ g.setColor(edge1);
+ g.drawLine(xo+(size/2), yo+size-1, xo+(size/2), yo+size-1);
+ }
+
+ private void drawUpArrow(Graphics g, int xo, int yo)
+ {
+ g.setColor(edge1);
+ int x = xo+(size/2);
+ g.drawLine(x, yo, x, yo);
+ x--;
+ int y = yo+1;
+ int dx = 0;
+ while (y+3 < yo+size)
+ {
+ g.setColor(edge1);
+ g.drawLine(x, y, x+1, y);
+ g.drawLine(x, y+1, x+1, y+1);
+ if (0 < dx)
+ {
+ g.setColor(fill);
+ g.drawLine(x+2, y, x+1+dx, y);
+ g.drawLine(x+2, y+1, x+1+dx, y+1);
+ }
+ g.setColor(edge2);
+ g.drawLine(x+dx+2, y, x+dx+3, y);
+ g.drawLine(x+dx+2, y+1, x+dx+3, y+1);
+ x -= 1;
+ y += 2;
+ dx += 2;
+ }
+ g.setColor(edge1);
+ g.drawLine(xo, yo+size-3, xo+1, yo+size-3);
+ g.setColor(edge2);
+ g.drawLine(xo+2, yo+size-2, xo+size-1, yo+size-2);
+ g.drawLine(xo, yo+size-1, xo+size, yo+size-1);
+ }
+}