1 package com.explosion.datastream.exql.gui.table;
2
3 import java.awt.Color;
4 import java.awt.Component;
5 import java.awt.Graphics;
6
7 import javax.swing.Icon;
8
9 import org.apache.log4j.LogManager;
10 import org.apache.log4j.Logger;
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 /***
33 * Copied from Sun class Table Sorter written by Philip Milne, Brendon McLean,
34 * Dan van Enckevort, Parwinder Sekhon
35 *
36 * @author Stephen Cowx Created on Apr 20, 2004
37 */
38 public class Arrow implements Icon
39 {
40 private static Logger log = LogManager.getLogger(Arrow.class);
41 private boolean descending;
42 private int size;
43 private int priority;
44
45 public Arrow(String name, boolean descending, int size, int priority)
46 {
47
48 this.descending = descending;
49 this.size = size;
50 this.priority = priority;
51 }
52
53 public void paintIcon(Component c, Graphics g, int x, int y)
54 {
55 log.debug("paintIcon :" + c.hashCode() );
56 Color color = c == null ? Color.GRAY : c.getBackground();
57
58
59 int dx = (int) (size / 2 * Math.pow(0.8, priority));
60 int dy = descending ? dx : -dx;
61
62 y = y + 5 * size / 6 + (descending ? -dy : 0);
63 int shift = descending ? 1 : -1;
64 g.translate(x, y);
65
66
67 g.setColor(color.darker());
68 g.drawLine(dx / 2, dy, 0, 0);
69 g.drawLine(dx / 2, dy + shift, 0, shift);
70
71
72 g.setColor(color.brighter());
73 g.drawLine(dx / 2, dy, dx, 0);
74 g.drawLine(dx / 2, dy + shift, dx, shift);
75
76
77 if (descending)
78 {
79 g.setColor(color.darker().darker());
80 } else
81 {
82 g.setColor(color.brighter().brighter());
83 }
84 g.drawLine(dx, 0, 0, 0);
85
86 g.setColor(color);
87 g.translate(-x, -y);
88 }
89
90 public int getIconWidth()
91 {
92 return size;
93 }
94
95 public int getIconHeight()
96 {
97 return size;
98 }
99 }