01: package org.zilonis.tool.ext.aerith.ui;
02:
03: import java.awt.Color;
04: import java.awt.Dimension;
05: import java.awt.GradientPaint;
06: import java.awt.Graphics;
07: import java.awt.Graphics2D;
08: import java.awt.Paint;
09: import java.awt.Rectangle;
10: import java.awt.RenderingHints;
11: import javax.swing.JComponent;
12: import javax.swing.SwingUtilities;
13:
14: import org.jdesktop.fuse.InjectedResource;
15: import org.jdesktop.fuse.ResourceInjector;
16:
17: public class Footer extends JComponent {
18: ////////////////////////////////////////////////////////////////////////////
19: // THEME SPECIFIC FIELDS
20: ////////////////////////////////////////////////////////////////////////////
21: @InjectedResource
22: private GradientPaint backgroundGradient;
23: @InjectedResource
24: private GradientPaint inactiveBackgroundGradient;
25: @InjectedResource
26: private int preferredHeight;
27: @InjectedResource
28: private Color lightColor;
29: @InjectedResource
30: private Color shadowColor;
31: @InjectedResource
32: private Color inactiveLightColor;
33: @InjectedResource
34: private Color inactiveShadowColor;
35:
36: public Footer() {
37: ResourceInjector.get().inject(this );
38: }
39:
40: @Override
41: public Dimension getPreferredSize() {
42: Dimension size = super .getPreferredSize();
43: size.height = preferredHeight;
44: return size;
45: }
46:
47: @Override
48: public Dimension getMaximumSize() {
49: Dimension size = super .getMaximumSize();
50: size.height = preferredHeight;
51: return size;
52: }
53:
54: @Override
55: protected void paintComponent(Graphics g) {
56: if (!isVisible()) {
57: return;
58: }
59:
60: boolean active = SwingUtilities.getWindowAncestor(this )
61: .isActive();
62:
63: Graphics2D g2 = (Graphics2D) g;
64: g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
65: RenderingHints.VALUE_ANTIALIAS_OFF);
66:
67: Paint paint = g2.getPaint();
68: g2.setPaint(active ? backgroundGradient
69: : inactiveBackgroundGradient);
70: Rectangle clip = g2.getClipBounds();
71: clip = clip.intersection(new Rectangle(0, 2, getWidth(),
72: getHeight()));
73: g2.fillRect(clip.x, clip.y, clip.width, clip.height);
74: g2.setPaint(paint);
75:
76: g2.setColor(active ? lightColor : inactiveLightColor);
77: g2.drawLine(0, 0, getWidth(), 0);
78:
79: g2.setColor(active ? shadowColor : inactiveShadowColor);
80: g2.drawLine(0, 1, getWidth(), 1);
81: }
82: }
|