2
* @(#)RGBChooser.java 1.3 2006-04-23
4
* Copyright (c) 2005-2006 Werner Randelshofer
5
* Staldenmattweg 2, Immensee, CH-6405, Switzerland.
8
* This software is the confidential and proprietary information of
9
* Werner Randelshofer. ("Confidential Information"). You shall not
10
* disclose such Confidential Information and shall use it only in
11
* accordance with the terms of the license agreement you entered into
12
* with Werner Randelshofer.
15
package org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser;
19
import javax.swing.text.*;
20
import javax.swing.event.*;
21
import javax.swing.border.*;
22
import javax.swing.colorchooser.*;
23
import javax.swing.plaf.*;
25
import org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.*;
26
import org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.util.*;
31
* @author Werner Randelshofer
32
* @version 1.3 2006-04-23 Retrieve labels directly from UIManager.
33
* <br>1.2 2005-11-22 Moved handler for text fields into separate class.
34
* <br>1.1.1 2005-11-07 Get "Labels" resource bundle from UIManager.
35
* <br>1.1 2005-09-05 Get font, spacing and icon from UIManager.
36
* <br>1.0 29 March 2005 Created.
38
public class RGBChooser extends AbstractColorChooserPanel implements UIResource {
39
private ColorSliderModel ccModel = new RGBColorSliderModel();
41
/** Creates new form. */
46
Font font = UIManager.getFont("ColorChooser.font");
47
redLabel.setFont(font);
48
redSlider.setFont(font);
49
redField.setFont(font);
50
greenLabel.setFont(font);
51
greenSlider.setFont(font);
52
greenField.setFont(font);
53
blueLabel.setFont(font);
54
blueSlider.setFont(font);
55
blueField.setFont(font);
57
int textSliderGap = UIManager.getInt("ColorChooser.textSliderGap");
58
if (textSliderGap != 0) {
59
Insets fieldInsets = new Insets(0,textSliderGap,0,0);
60
GridBagLayout layout = (GridBagLayout) getLayout();
61
GridBagConstraints gbc;
62
gbc = layout.getConstraints(redField);
63
gbc.insets = fieldInsets;
64
layout.setConstraints(redField, gbc);
65
gbc = layout.getConstraints(greenField);
66
gbc.insets = fieldInsets;
67
layout.setConstraints(greenField, gbc);
68
gbc = layout.getConstraints(blueField);
69
gbc.insets = fieldInsets;
70
layout.setConstraints(blueField, gbc);
73
ccModel.configureColorSlider(0, redSlider);
74
ccModel.configureColorSlider(1, greenSlider);
75
ccModel.configureColorSlider(2, blueSlider);
77
redField.setText(Integer.toString(redSlider.getValue()));
78
greenField.setText(Integer.toString(greenSlider.getValue()));
79
blueField.setText(Integer.toString(blueSlider.getValue()));
81
new ColorSliderTextFieldHandler(redField, ccModel, 0);
82
new ColorSliderTextFieldHandler(greenField, ccModel, 1);
83
new ColorSliderTextFieldHandler(blueField, ccModel, 2);
85
ccModel.addChangeListener(new ChangeListener() {
87
public void stateChanged(ChangeEvent evt) {
88
setColorToModel(ccModel.getColor());
91
redField.setMinimumSize(redField.getPreferredSize());
92
greenField.setMinimumSize(greenField.getPreferredSize());
93
blueField.setMinimumSize(blueField.getPreferredSize());
94
VisualMargin bm = new VisualMargin(false,false,true,false);
95
redLabel.setBorder(bm);
96
greenLabel.setBorder(bm);
97
blueLabel.setBorder(bm);
100
protected void buildChooser() {
104
public String getDisplayName() {
105
return UIManager.getString("ColorChooser.rgbSliders");
109
public Icon getLargeDisplayIcon() {
110
return UIManager.getIcon("ColorChooser.colorSlidersIcon");
114
public Icon getSmallDisplayIcon() {
115
return getLargeDisplayIcon();
119
public void updateChooser() {
120
ccModel.setColor(getColorFromModel());
122
public void setColorToModel(Color color) {
123
getColorSelectionModel().setSelectedColor(color);
127
/** This method is called from within the constructor to
128
* initialize the form.
129
* WARNING: Do NOT modify this code. The content of this method is
130
* always regenerated by the Form Editor.
132
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
133
private void initComponents() {
134
java.awt.GridBagConstraints gridBagConstraints;
136
redLabel = new javax.swing.JLabel();
137
redSlider = new javax.swing.JSlider();
138
redField = new javax.swing.JTextField();
139
greenLabel = new javax.swing.JLabel();
140
greenSlider = new javax.swing.JSlider();
141
greenField = new javax.swing.JTextField();
142
blueLabel = new javax.swing.JLabel();
143
blueSlider = new javax.swing.JSlider();
144
blueField = new javax.swing.JTextField();
145
springPanel = new javax.swing.JPanel();
147
setLayout(new java.awt.GridBagLayout());
149
redLabel.setText(UIManager.getString("ColorChooser.rgbRedText"));
150
gridBagConstraints = new java.awt.GridBagConstraints();
151
gridBagConstraints.gridx = 0;
152
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
153
gridBagConstraints.insets = new java.awt.Insets(1, 0, 0, 0);
154
add(redLabel, gridBagConstraints);
156
redSlider.setMajorTickSpacing(255);
157
redSlider.setMaximum(255);
158
redSlider.setMinorTickSpacing(128);
159
redSlider.setPaintTicks(true);
160
gridBagConstraints = new java.awt.GridBagConstraints();
161
gridBagConstraints.gridx = 0;
162
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
163
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
164
gridBagConstraints.weightx = 1.0;
165
add(redSlider, gridBagConstraints);
167
redField.setColumns(3);
168
redField.setHorizontalAlignment(javax.swing.JTextField.TRAILING);
169
redField.setText("0");
170
redField.addFocusListener(new java.awt.event.FocusAdapter() {
172
public void focusLost(java.awt.event.FocusEvent evt) {
173
redFieldFocusLost(evt);
177
gridBagConstraints = new java.awt.GridBagConstraints();
178
gridBagConstraints.gridx = 1;
179
gridBagConstraints.gridheight = 2;
180
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
181
add(redField, gridBagConstraints);
183
greenLabel.setText(UIManager.getString("ColorChooser.rgbGreenText"));
184
gridBagConstraints = new java.awt.GridBagConstraints();
185
gridBagConstraints.gridx = 0;
186
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
187
gridBagConstraints.insets = new java.awt.Insets(1, 0, 0, 0);
188
add(greenLabel, gridBagConstraints);
190
greenSlider.setMajorTickSpacing(255);
191
greenSlider.setMaximum(255);
192
greenSlider.setMinorTickSpacing(128);
193
greenSlider.setPaintTicks(true);
194
gridBagConstraints = new java.awt.GridBagConstraints();
195
gridBagConstraints.gridx = 0;
196
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
197
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
198
gridBagConstraints.weightx = 1.0;
199
add(greenSlider, gridBagConstraints);
201
greenField.setColumns(3);
202
greenField.setHorizontalAlignment(javax.swing.JTextField.TRAILING);
203
greenField.setText("0");
204
greenField.addFocusListener(new java.awt.event.FocusAdapter() {
206
public void focusLost(java.awt.event.FocusEvent evt) {
207
greenFieldFocusLost(evt);
211
gridBagConstraints = new java.awt.GridBagConstraints();
212
gridBagConstraints.gridx = 1;
213
gridBagConstraints.gridheight = 2;
214
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
215
add(greenField, gridBagConstraints);
217
blueLabel.setText(UIManager.getString("ColorChooser.rgbBlueText"));
218
gridBagConstraints = new java.awt.GridBagConstraints();
219
gridBagConstraints.gridx = 0;
220
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
221
gridBagConstraints.insets = new java.awt.Insets(1, 0, 0, 0);
222
add(blueLabel, gridBagConstraints);
224
blueSlider.setMajorTickSpacing(255);
225
blueSlider.setMaximum(255);
226
blueSlider.setMinorTickSpacing(128);
227
blueSlider.setPaintTicks(true);
228
gridBagConstraints = new java.awt.GridBagConstraints();
229
gridBagConstraints.gridx = 0;
230
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
231
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
232
gridBagConstraints.weightx = 1.0;
233
add(blueSlider, gridBagConstraints);
235
blueField.setColumns(3);
236
blueField.setHorizontalAlignment(javax.swing.JTextField.TRAILING);
237
blueField.setText("0");
238
blueField.addFocusListener(new java.awt.event.FocusAdapter() {
240
public void focusLost(java.awt.event.FocusEvent evt) {
241
blueFieldFocusLost(evt);
245
gridBagConstraints = new java.awt.GridBagConstraints();
246
gridBagConstraints.gridx = 1;
247
gridBagConstraints.gridheight = 2;
248
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
249
add(blueField, gridBagConstraints);
251
springPanel.setLayout(new java.awt.BorderLayout());
253
gridBagConstraints = new java.awt.GridBagConstraints();
254
gridBagConstraints.gridx = 0;
255
gridBagConstraints.gridy = 100;
256
gridBagConstraints.weighty = 1.0;
257
add(springPanel, gridBagConstraints);
259
}// </editor-fold>//GEN-END:initComponents
261
private void blueFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_blueFieldFocusLost
262
blueField.setText(Integer.toString(ccModel.getValue(2)));
263
}//GEN-LAST:event_blueFieldFocusLost
265
private void greenFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_greenFieldFocusLost
266
greenField.setText(Integer.toString(ccModel.getValue(1)));
267
}//GEN-LAST:event_greenFieldFocusLost
269
private void redFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_redFieldFocusLost
270
redField.setText(Integer.toString(ccModel.getValue(0)));
271
}//GEN-LAST:event_redFieldFocusLost
274
// Variables declaration - do not modify//GEN-BEGIN:variables
275
private javax.swing.JTextField blueField;
276
private javax.swing.JLabel blueLabel;
277
private javax.swing.JSlider blueSlider;
278
private javax.swing.JTextField greenField;
279
private javax.swing.JLabel greenLabel;
280
private javax.swing.JSlider greenSlider;
281
private javax.swing.JTextField redField;
282
private javax.swing.JLabel redLabel;
283
private javax.swing.JSlider redSlider;
284
private javax.swing.JPanel springPanel;
285
// End of variables declaration//GEN-END:variables