1 /* -------------------------------------------------------------------
2 * Java source file for the class CustomBorderFactory
3 *
4 * Copyright (c), 2002, Masahiro Takatsuka.
5 * All Rights Researved.
6 *
7 * Original Author: Masahiro Takatsuka (masa@jbeans.net)
8 * $Author: takatsukam $
9 *
10 * $Date: 2003/07/25 04:51:46 $
11 *
12 * $Id: CustomBorderFactory.java,v 1.1.1.1 2003/07/25 04:51:46 takatsukam Exp $
13 *
14 * Reference: Document no:
15 * ___ ___
16 *
17 * To Do:
18 * ___
19 *
20 ------------------------------------------------------------------- */
21
22 /* --------------------------- Package ---------------------------- */
23 package net.jbeans.ui.border;
24
25 /* ------------------ Import classes (packages) ------------------- *//package-summary/html">color="#329900"> ------------------ Import classes (packages) ------------------- *//package-summary.html">color="#329900">/* ------------------ Import classes (packages) ------------------- *//package-summary.html">color="#329900"> ------------------ Import classes (packages) ------------------- */
26 import java.awt.*;
27
28 import javax.swing.*;
29 import javax.swing.border.*;
30 import javax.swing.plaf.basic.*;
31
32 /*====================================================================
33 Implementation of class CustomBorderFactory
34 ====================================================================*/
35 /***
36 * CustomBorderFactory can be used to create a border object.
37 *
38 * @version $Revision: 1.1.1.1 $
39 * @author Masahiro Takatsuka (masa@jbeans.net)
40 */
41
42 public final class CustomBorderFactory {
43 private CustomBorderFactory() {
44 }
45
46 /***
47 * Creates an etched border with the displayed text
48 */
49 public static Border createBorder(String text, int justification, int orientation) {
50 Border border = BorderFactory.createEtchedBorder();
51
52 return BorderFactory.createTitledBorder(border, text,
53 justification,
54 orientation);
55 }
56
57 /***
58 * Creates an etched border with the displayed text
59 */
60 public static Border createBorder(String text) {
61 return createBorder(text, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.TOP);
62 }
63
64 /***
65 * Creates an blank border.
66 */
67 public static Border createBorder() {
68 return BorderFactory.createEmptyBorder(4, 4, 4, 4);
69 }
70
71 private static Border flatButtonBorder;
72
73 public static Border createFlatButtonBorder() {
74 if(flatButtonBorder == null) {
75 flatButtonBorder
76 = new CompoundBorder(new FlatButtonBorder(UIManager.getColor("controlShadow"), UIManager.getColor("controlLtHighlight")), new BasicBorders.MarginBorder());
77 }
78 return flatButtonBorder;
79 }
80
81 public static abstract class AbstractFlatBorder extends AbstractBorder {
82 protected Color darkShadow;
83 protected Color highlight;
84 public final int FLAT = 0;
85 public final int RAISED = 1;
86 public final int LOWERED = 2;
87
88
89 protected AbstractFlatBorder(Color darkShadow, Color highlight) {
90 this.darkShadow = darkShadow;
91 this.highlight = highlight;
92 }
93
94 public void paintBorder(Component c, Graphics g, int x, int y,
95 int width, int height) {
96 switch(getBorderType(c)) {
97 case FLAT:
98 break;
99 case RAISED:
100 paintFlatBorder(g, false, x, y, width, height,
101 darkShadow, highlight);
102 break;
103 case LOWERED:
104 paintFlatBorder(g, true, x, y, width, height,
105 darkShadow, highlight);
106 break;
107 }
108 }
109
110 protected abstract int getBorderType(Component c);
111
112 protected void paintFlatBorder(Graphics g, boolean isLowered,
113 int x, int y, int w, int h,
114 Color darkShadow, Color highlight) {
115 Color oldColor = g.getColor();
116 g.translate(x, y);
117
118 if(isLowered) {
119 g.setColor(darkShadow);
120 } else {
121 g.setColor(highlight);
122 }
123 g.drawLine(0, 0, 0, h-1);
124 g.drawLine(1, 0, w-2, 0);
125
126 if(isLowered) {
127 g.setColor(highlight);
128 } else {
129 g.setColor(darkShadow);
130 }
131 g.drawLine(0, h-1, w-1, h-1);
132 g.drawLine(w-1, h-1, w-1, 0);
133
134 g.translate(-x, -y);
135 g.setColor(oldColor);
136 }
137 }
138
139 public static class FlatButtonBorder
140 extends AbstractFlatBorder {
141 public FlatButtonBorder(Color darkShadow, Color highlight) {
142 super(darkShadow, highlight);
143 }
144
145 protected int getBorderType(Component c) {
146 boolean isRollover = false;
147 boolean isPressed = false;
148 boolean isSelected = false;
149
150 if (c instanceof AbstractButton) {
151 AbstractButton b = (AbstractButton)c;
152 ButtonModel model = b.getModel();
153 isRollover = model.isRollover();
154 isPressed = model.isPressed() && model.isArmed();
155 isSelected = model.isSelected();
156 }
157
158 if(isSelected) {
159 return LOWERED;
160 } else {
161 if(isRollover) {
162 if(isPressed) {
163 return LOWERED;
164 } else {
165 return RAISED;
166 }
167 } else {
168 return FLAT;
169 }
170 }
171 }
172 }
173 }
This page was automatically generated by Maven