1 //
2 // $Id: SortArrowIcon.java 95 2007-05-02 03:27:05Z
3 // /C=DE/ST=Baden-Wuerttemberg/O=ISDN4Linux/OU=Fritz
4 // Elfert/CN=svn-felfert@isdn4linux.de/emailAddress=fritz@fritz-elfert.de $
5 //
6 // jupload - A file upload applet.
7 // Copyright 2007 The JUpload Team
8 //
9 // Created: ?
10 // Creator: William JinHua Kwong
11 // Last modified: $Date: 2015-03-10 20:59:42 +0100 (mar., 10 mars 2015) $
12 //
13 // This program is free software; you can redistribute it and/or modify it under
14 // the terms of the GNU General Public License as published by the Free Software
15 // Foundation; either version 2 of the License, or (at your option) any later
16 // version. This program is distributed in the hope that it will be useful, but
17 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
19 // details. You should have received a copy of the GNU General Public License
20 // along with this program; if not, write to the Free Software Foundation, Inc.,
21 // 675 Mass Ave, Cambridge, MA 02139, USA.
22
23 package wjhk.jupload2.gui.filepanel;
24
25 import java.awt.Color;
26 import java.awt.Component;
27 import java.awt.Graphics;
28
29 import javax.swing.Icon;
30
31 /**
32 * Icon implementation, to control and indicate the current sort order, into the
33 * {@link wjhk.jupload2.gui.filepanel.FilePanelJFlatTable}.
34 */
35 public class SortArrowIcon implements Icon {
36 /**
37 * Don't draw an arrow.
38 */
39 public static final int NONE = 0;
40
41 /**
42 * Draw arrow, representing descending sort order.
43 */
44 public static final int DESCENDING = 1;
45
46 /**
47 * Draw arrow, representing ascending sort order.
48 */
49 public static final int ASCENDING = 2;
50
51 protected int direction;
52
53 protected int width = 8;
54
55 protected int height = 8;
56
57 /**
58 * Creates a new instance.
59 *
60 * @param direction The desired direction, either {@link #ASCENDING},
61 * {@link #DESCENDING} or {@link #NONE}
62 */
63 public SortArrowIcon(int direction) {
64 this.direction = direction;
65 }
66
67 /**
68 * @see javax.swing.Icon#getIconWidth()
69 */
70 public int getIconWidth() {
71 return this.width;
72 }
73
74 /**
75 * @see javax.swing.Icon#getIconHeight()
76 */
77 public int getIconHeight() {
78 return this.height;
79 }
80
81 /**
82 * @see javax.swing.Icon#paintIcon(java.awt.Component, java.awt.Graphics,
83 * int, int)
84 */
85 public void paintIcon(Component c, Graphics g, int x, int y) {
86 final Color bg = c.getBackground();
87 final Color light = bg.brighter().brighter();
88 final Color shade = bg.darker().darker();
89
90 final int w = this.width;
91 final int h = this.height;
92 final int m = w / 2;
93 switch (this.direction) {
94 case ASCENDING:
95 g.setColor(shade);
96 g.drawLine(x, y, x + w, y);
97 g.drawLine(x, y, x + m, y + h);
98 g.setColor(light);
99 g.drawLine(x + w, y, x + m, y + h);
100 break;
101 case DESCENDING:
102 g.setColor(shade);
103 g.drawLine(x + m, y, x, y + h);
104 g.setColor(light);
105 g.drawLine(x, y + h, x + w, y + h);
106 g.drawLine(x + m, y, x + w, y + h);
107 break;
108 }
109 }
110 }