1
35
36
39
40
41 import javax.swing.*;
42 import javax.swing.event.*;
43 import javax.swing.text.*;
44 import javax.swing.border.*;
45 import javax.swing.colorchooser.*;
46 import javax.swing.filechooser.*;
47 import javax.accessibility.*;
48
49 import java.awt.*;
50 import java.awt.event.*;
51 import java.beans.*;
52 import java.util.*;
53 import java.io.*;
54 import java.applet.*;
55 import java.net.*;
56
57
63 public class ButtonDemo extends DemoModule implements ChangeListener {
64
65 JTabbedPane tab;
66
67 JPanel buttonPanel = new JPanel();
68 JPanel checkboxPanel = new JPanel();
69 JPanel radioButtonPanel = new JPanel();
70 JPanel toggleButtonPanel = new JPanel();
71
72 Vector buttons = new Vector();
73 Vector checkboxes = new Vector();
74 Vector radiobuttons = new Vector();
75 Vector togglebuttons = new Vector();
76
77 Vector currentControls = buttons;
78
79 JButton button;
80 JCheckBox check;
81 JRadioButton radio;
82 JToggleButton toggle;
83
84 EmptyBorder border5 = new EmptyBorder(5,5,5,5);
85 EmptyBorder border10 = new EmptyBorder(10,10,10,10);
86
87 ItemListener buttonDisplayListener = null;
88 ItemListener buttonPadListener = null;
89
90 Insets insets0 = new Insets(0,0,0,0);
91 Insets insets10 = new Insets(10,10,10,10);
92
93
96 public static void main(String[] args) {
97 ButtonDemo demo = new ButtonDemo(null);
98 demo.mainImpl();
99 }
100
101
104 public ButtonDemo(SwingSet2 swingset) {
105 super(swingset, "ButtonDemo", "toolbar/JButton.gif");
108
109 tab = new JTabbedPane();
110 tab.getModel().addChangeListener(this);
111
112 JPanel demo = getDemoPanel();
113 demo.setLayout(new BoxLayout(demo, BoxLayout.Y_AXIS));
114 demo.add(tab);
115
116 addButtons();
117 addRadioButtons();
118 addCheckBoxes();
119 currentControls = buttons;
121 }
122
123 public void addButtons() {
124 tab.addTab(getString("ButtonDemo.buttons"), buttonPanel);
125 buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
126 buttonPanel.setBorder(border5);
127
128 JPanel p1 = createVerticalPanel(true);
129 p1.setAlignmentY(TOP_ALIGNMENT);
130 buttonPanel.add(p1);
131
132 JPanel p2 = createHorizontalPanel(false);
134 p1.add(p2);
135 p2.setBorder(new CompoundBorder(new TitledBorder(null, getString("ButtonDemo.textbuttons"),
136 TitledBorder.LEFT, TitledBorder.TOP), border5));
137
138 buttons.add(p2.add(new JButton(getString("ButtonDemo.button1"))));
139 p2.add(Box.createRigidArea(HGAP10));
140
141 buttons.add(p2.add(new JButton(getString("ButtonDemo.button2"))));
142 p2.add(Box.createRigidArea(HGAP10));
143
144 buttons.add(p2.add(new JButton(getString("ButtonDemo.button3"))));
145
146
147 p1.add(Box.createRigidArea(VGAP30));
149 JPanel p3 = createHorizontalPanel(false);
150 p1.add(p3);
151 p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS));
152 p3.setBorder(new TitledBorder(null, getString("ButtonDemo.imagebuttons"),
153 TitledBorder.LEFT, TitledBorder.TOP));
154
155 String description = getString("ButtonDemo.phone");
157 button = new JButton(createImageIcon("buttons/b1.gif", description));
158 button.setPressedIcon(createImageIcon("buttons/b1p.gif", description));
159 button.setRolloverIcon(createImageIcon("buttons/b1r.gif", description));
160 button.setDisabledIcon(createImageIcon("buttons/b1d.gif", description));
161 button.setMargin(new Insets(0,0,0,0));
162 p3.add(button);
163 buttons.add(button);
164 p3.add(Box.createRigidArea(HGAP10));
165
166 description = getString("ButtonDemo.write");
168 button = new JButton(createImageIcon("buttons/b2.gif", description));
169 button.setPressedIcon(createImageIcon("buttons/b2p.gif", description));
170 button.setRolloverIcon(createImageIcon("buttons/b2r.gif", description));
171 button.setDisabledIcon(createImageIcon("buttons/b2d.gif", description));
172 button.setMargin(new Insets(0,0,0,0));
173 p3.add(button);
174 buttons.add(button);
175 p3.add(Box.createRigidArea(HGAP10));
176
177 description = getString("ButtonDemo.peace");
179 button = new JButton(createImageIcon("buttons/b3.gif", description));
180 button.setPressedIcon(createImageIcon("buttons/b3p.gif", description));
181 button.setRolloverIcon(createImageIcon("buttons/b3r.gif", description));
182 button.setDisabledIcon(createImageIcon("buttons/b3d.gif", description));
183 button.setMargin(new Insets(0,0,0,0));
184 p3.add(button);
185 buttons.add(button);
186
187 p1.add(Box.createVerticalGlue());
188
189 buttonPanel.add(Box.createRigidArea(HGAP10));
190 currentControls = buttons;
191 buttonPanel.add(createControls());
192 }
193
194 public void addRadioButtons() {
195 ButtonGroup group = new ButtonGroup();
196
197 tab.addTab(getString("ButtonDemo.radiobuttons"), radioButtonPanel);
198 radioButtonPanel.setLayout(new BoxLayout(radioButtonPanel, BoxLayout.X_AXIS));
199 radioButtonPanel.setBorder(border5);
200
201 JPanel p1 = createVerticalPanel(true);
202 p1.setAlignmentY(TOP_ALIGNMENT);
203 radioButtonPanel.add(p1);
204
205 JPanel p2 = createHorizontalPanel(false);
207 p1.add(p2);
208 p2.setBorder(new CompoundBorder(
209 new TitledBorder(
210 null, getString("ButtonDemo.textradiobuttons"),
211 TitledBorder.LEFT, TitledBorder.TOP), border5)
212 );
213
214 radio = (JRadioButton)p2.add(
215 new JRadioButton(getString("ButtonDemo.radio1")));
216 group.add(radio);
217 radiobuttons.add(radio);
218 p2.add(Box.createRigidArea(HGAP10));
219
220 radio = (JRadioButton)p2.add(
221 new JRadioButton(getString("ButtonDemo.radio2")));
222 group.add(radio);
223 radiobuttons.add(radio);
224 p2.add(Box.createRigidArea(HGAP10));
225
226 radio = (JRadioButton)p2.add(
227 new JRadioButton(getString("ButtonDemo.radio3")));
228 group.add(radio);
229 radiobuttons.add(radio);
230
231 group = new ButtonGroup();
233 p1.add(Box.createRigidArea(VGAP30));
234 JPanel p3 = createHorizontalPanel(false);
235 p1.add(p3);
236 p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS));
237 p3.setBorder(new TitledBorder(null, getString("ButtonDemo.imageradiobuttons"),
238 TitledBorder.LEFT, TitledBorder.TOP));
239
240 String description = getString("ButtonDemo.customradio");
242 String text = getString("ButtonDemo.radio1");
243 radio = new JRadioButton(text, createImageIcon("buttons/rb.gif", description));
244 radio.setPressedIcon(createImageIcon("buttons/rbp.gif", description));
245 radio.setRolloverIcon(createImageIcon("buttons/rbr.gif", description));
246 radio.setRolloverSelectedIcon(createImageIcon("buttons/rbrs.gif", description));
247 radio.setSelectedIcon(createImageIcon("buttons/rbs.gif", description));
248 radio.setMargin(new Insets(0,0,0,0));
249 group.add(radio);
250 p3.add(radio);
251 radiobuttons.add(radio);
252 p3.add(Box.createRigidArea(HGAP20));
253
254 text = getString("ButtonDemo.radio2");
256 radio = new JRadioButton(text, createImageIcon("buttons/rb.gif", description));
257 radio.setPressedIcon(createImageIcon("buttons/rbp.gif", description));
258 radio.setRolloverIcon(createImageIcon("buttons/rbr.gif", description));
259 radio.setRolloverSelectedIcon(createImageIcon("buttons/rbrs.gif", description));
260 radio.setSelectedIcon(createImageIcon("buttons/rbs.gif", description));
261 radio.setMargin(new Insets(0,0,0,0));
262 group.add(radio);
263 p3.add(radio);
264 radiobuttons.add(radio);
265 p3.add(Box.createRigidArea(HGAP20));
266
267 text = getString("ButtonDemo.radio3");
269 radio = new JRadioButton(text, createImageIcon("buttons/rb.gif", description));
270 radio.setPressedIcon(createImageIcon("buttons/rbp.gif", description));
271 radio.setRolloverIcon(createImageIcon("buttons/rbr.gif", description));
272 radio.setRolloverSelectedIcon(createImageIcon("buttons/rbrs.gif", description));
273 radio.setSelectedIcon(createImageIcon("buttons/rbs.gif", description));
274 radio.setMargin(new Insets(0,0,0,0));
275 group.add(radio);
276 radiobuttons.add(radio);
277 p3.add(radio);
278
279 p1.add(Box.createVerticalGlue());
281
282 radioButtonPanel.add(Box.createRigidArea(HGAP10));
283 currentControls = radiobuttons;
284 radioButtonPanel.add(createControls());
285 }
286
287
288 public void addCheckBoxes() {
289 tab.addTab(getString("ButtonDemo.checkboxes"), checkboxPanel);
290 checkboxPanel.setLayout(new BoxLayout(checkboxPanel, BoxLayout.X_AXIS));
291 checkboxPanel.setBorder(border5);
292
293 JPanel p1 = createVerticalPanel(true);
294 p1.setAlignmentY(TOP_ALIGNMENT);
295 checkboxPanel.add(p1);
296
297 JPanel p2 = createHorizontalPanel(false);
299 p1.add(p2);
300 p2.setBorder(new CompoundBorder(
301 new TitledBorder(
302 null, getString("ButtonDemo.textcheckboxes"),
303 TitledBorder.LEFT, TitledBorder.TOP), border5)
304 );
305
306 checkboxes.add(p2.add(new JCheckBox(getString("ButtonDemo.check1"))));
307 p2.add(Box.createRigidArea(HGAP10));
308
309 checkboxes.add(p2.add(new JCheckBox(getString("ButtonDemo.check2"))));
310 p2.add(Box.createRigidArea(HGAP10));
311
312 checkboxes.add(p2.add(new JCheckBox(getString("ButtonDemo.check3"))));
313
314 p1.add(Box.createRigidArea(VGAP30));
316 JPanel p3 = createHorizontalPanel(false);
317 p1.add(p3);
318 p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS));
319 p3.setBorder(new TitledBorder(null, getString("ButtonDemo.imagecheckboxes"),
320 TitledBorder.LEFT, TitledBorder.TOP));
321
322 String description = getString("ButtonDemo.customcheck");
324 String text = getString("ButtonDemo.check1");
325 check = new JCheckBox(text, createImageIcon("buttons/cb.gif", description));
326 check.setRolloverIcon(createImageIcon("buttons/cbr.gif", description));
327 check.setRolloverSelectedIcon(createImageIcon("buttons/cbrs.gif", description));
328 check.setSelectedIcon(createImageIcon("buttons/cbs.gif", description));
329 check.setMargin(new Insets(0,0,0,0));
330 p3.add(check);
331 checkboxes.add(check);
332 p3.add(Box.createRigidArea(HGAP20));
333
334 text = getString("ButtonDemo.check2");
336 check = new JCheckBox(text, createImageIcon("buttons/cb.gif", description));
337 check.setRolloverIcon(createImageIcon("buttons/cbr.gif", description));
338 check.setRolloverSelectedIcon(createImageIcon("buttons/cbrs.gif", description));
339 check.setSelectedIcon(createImageIcon("buttons/cbs.gif", description));
340 check.setMargin(new Insets(0,0,0,0));
341 p3.add(check);
342 checkboxes.add(check);
343 p3.add(Box.createRigidArea(HGAP20));
344
345 text = getString("ButtonDemo.check3");
347 check = new JCheckBox(text, createImageIcon("buttons/cb.gif", description));
348 check.setRolloverIcon(createImageIcon("buttons/cbr.gif", description));
349 check.setRolloverSelectedIcon(createImageIcon("buttons/cbrs.gif", description));
350 check.setSelectedIcon(createImageIcon("buttons/cbs.gif", description));
351 check.setMargin(new Insets(0,0,0,0));
352 p3.add(check);
353 checkboxes.add(check);
354
355 p1.add(Box.createVerticalGlue());
357
358 checkboxPanel.add(Box.createRigidArea(HGAP10));
359 currentControls = checkboxes;
360 checkboxPanel.add(createControls());
361 }
362
363 public void addToggleButtons() {
364 tab.addTab(getString("ButtonDemo.togglebuttons"), toggleButtonPanel);
365 }
366
367 public JPanel createControls() {
368 JPanel controls = new JPanel() {
369 public Dimension getMaximumSize() {
370 return new Dimension(300, super.getMaximumSize().height);
371 }
372 };
373 controls.setLayout(new BoxLayout(controls, BoxLayout.Y_AXIS));
374 controls.setAlignmentY(TOP_ALIGNMENT);
375 controls.setAlignmentX(LEFT_ALIGNMENT);
376
377 JPanel buttonControls = createHorizontalPanel(true);
378 buttonControls.setAlignmentY(TOP_ALIGNMENT);
379 buttonControls.setAlignmentX(LEFT_ALIGNMENT);
380
381 JPanel leftColumn = createVerticalPanel(false);
382 leftColumn.setAlignmentX(LEFT_ALIGNMENT);
383 leftColumn.setAlignmentY(TOP_ALIGNMENT);
384
385 JPanel rightColumn = new LayoutControlPanel(this);
386
387 buttonControls.add(leftColumn);
388 buttonControls.add(Box.createRigidArea(HGAP20));
389 buttonControls.add(rightColumn);
390 buttonControls.add(Box.createRigidArea(HGAP20));
391
392 controls.add(buttonControls);
393
394 createListeners();
395
396 JLabel l = new JLabel("Display Options:");
398 leftColumn.add(l);
399
400 JCheckBox bordered = new JCheckBox("Paint Border");
401 bordered.setToolTipText("Click here to turn border painting on or off.");
402 bordered.setMnemonic('b');
403 if (currentControls == buttons) {
404 bordered.setSelected(true);
405 }
406 bordered.addItemListener(buttonDisplayListener);
407 leftColumn.add(bordered);
408
409 JCheckBox focused = new JCheckBox("Paint Focus");
410 focused.setToolTipText("Click here to turn focus painting on or off.");
411 focused.setMnemonic('f');
412 focused.setSelected(true);
413 focused.addItemListener(buttonDisplayListener);
414 leftColumn.add(focused);
415
416 JCheckBox enabled = new JCheckBox("Enabled");
417 enabled.setToolTipText("Click here to enable or disable the buttons.");
418 enabled.setSelected(true);
419 enabled.addItemListener(buttonDisplayListener);
420 enabled.setMnemonic('e');
421 leftColumn.add(enabled);
422
423 JCheckBox filled = new JCheckBox("Content Filled");
424 filled.setToolTipText("Click here to control the filling of the content area.");
425 filled.setSelected(true);
426 filled.addItemListener(buttonDisplayListener);
427 filled.setMnemonic('i');
428 leftColumn.add(filled);
429
430 leftColumn.add(Box.createRigidArea(VGAP20));
431
432 l = new JLabel("Pad Amount:");
433 leftColumn.add(l);
434 ButtonGroup group = new ButtonGroup();
435 JRadioButton defaultPad = new JRadioButton("Default");
436 defaultPad.setToolTipText("Uses the default padding between the border and label.");
437 defaultPad.setMnemonic('d');
438 defaultPad.addItemListener(buttonPadListener);
439 group.add(defaultPad);
440 defaultPad.setSelected(true);
441 leftColumn.add(defaultPad);
442
443 JRadioButton zeroPad = new JRadioButton("0");
444 zeroPad.setToolTipText("Uses no padding between the border and label.");
445 zeroPad.addItemListener(buttonPadListener);
446 zeroPad.setMnemonic('0');
447 group.add(zeroPad);
448 leftColumn.add(zeroPad);
449
450 JRadioButton tenPad = new JRadioButton("10");
451 tenPad.setMnemonic('1');
452 tenPad.setToolTipText("Uses a 10 pixel pad between the border and label.");
453 tenPad.addItemListener(buttonPadListener);
454 group.add(tenPad);
455 leftColumn.add(tenPad);
456
457 leftColumn.add(Box.createRigidArea(VGAP20));
458 return controls;
459 }
460
461 public void createListeners() {
462 buttonDisplayListener = new ItemListener() {
463 Component c;
464 AbstractButton b;
465
466 public void itemStateChanged(ItemEvent e) {
467 JCheckBox cb = (JCheckBox) e.getSource();
468 if(cb.getText().equals("Enabled")) {
469 for(int i = 0; i < currentControls.size(); i++) {
470 c = (Component) currentControls.elementAt(i);
471 c.setEnabled(cb.isSelected());
472 c.invalidate();
473 }
474 } else if(cb.getText().equals("Paint Border")) {
475 c = (Component) currentControls.elementAt(0);
476 if(c instanceof AbstractButton) {
477 for(int i = 0; i < currentControls.size(); i++) {
478 b = (AbstractButton) currentControls.elementAt(i);
479 b.setBorderPainted(cb.isSelected());
480 b.invalidate();
481 }
482 }
483 } else if(cb.getText().equals("Paint Focus")) {
484 c = (Component) currentControls.elementAt(0);
485 if(c instanceof AbstractButton) {
486 for(int i = 0; i < currentControls.size(); i++) {
487 b = (AbstractButton) currentControls.elementAt(i);
488 b.setFocusPainted(cb.isSelected());
489 b.invalidate();
490 }
491 }
492 } else if(cb.getText().equals("Content Filled")) {
493 c = (Component) currentControls.elementAt(0);
494 if(c instanceof AbstractButton) {
495 for(int i = 0; i < currentControls.size(); i++) {
496 b = (AbstractButton) currentControls.elementAt(i);
497 b.setContentAreaFilled(cb.isSelected());
498 b.invalidate();
499 }
500 }
501 }
502 invalidate();
503 validate();
504 repaint();
505 }
506 };
507
508 buttonPadListener = new ItemListener() {
509 Component c;
510 AbstractButton b;
511
512 public void itemStateChanged(ItemEvent e) {
513 int pad = -1;
515 JRadioButton rb = (JRadioButton) e.getSource();
516 if(rb.getText().equals("0") && rb.isSelected()) {
517 pad = 0;
518 } else if(rb.getText().equals("10") && rb.isSelected()) {
519 pad = 10;
520 }
521
522 for(int i = 0; i < currentControls.size(); i++) {
523 b = (AbstractButton) currentControls.elementAt(i);
524 if(pad == -1) {
525 b.setMargin(null);
526 } else if(pad == 0) {
527 b.setMargin(insets0);
528 } else {
529 b.setMargin(insets10);
530 }
531 }
532 invalidate();
533 validate();
534 repaint();
535 }
536 };
537 }
538
539 public void stateChanged(ChangeEvent e) {
540 SingleSelectionModel model = (SingleSelectionModel) e.getSource();
541 if(model.getSelectedIndex() == 0) {
542 currentControls = buttons;
543 } else if(model.getSelectedIndex() == 1) {
544 currentControls = radiobuttons;
545 } else if(model.getSelectedIndex() == 2) {
546 currentControls = checkboxes;
547 } else {
548 currentControls = togglebuttons;
549 }
550 }
551
552 public Vector getCurrentControls() {
553 return currentControls;
554 }
555 }
556