blob: 625c9fe1fda7993d29e7c3ae60914c1843af90db [file] [log] [blame]
Alexander Kouznetsov0ab1a9c2016-03-30 19:05:58 -07001/*
2 * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23package com.sun.swingset3.demos.togglebutton;
24
25import java.awt.*;
26import java.awt.event.ItemEvent;
27import java.awt.event.ItemListener;
28import java.util.*;
29import java.util.List;
30import javax.swing.*;
31import javax.swing.border.*;
32import javax.swing.event.ChangeEvent;
33import javax.swing.event.ChangeListener;
34
35import com.sun.swingset3.DemoProperties;
36import com.sun.swingset3.demos.ResourceManager;
37
38/**
39 * JButton, JRadioButton, JToggleButton, JCheckBox Demos
40 *
41 * @version 1.15 11/17/05
42 * @author Jeff Dinkins
43 */
44@DemoProperties(
45 value = "ToggleButtons Demo",
46 category = "Controls",
47 description = "Demonstrates JCheckBox & JRadioButton",
48 sourceFiles = {
49 "com/sun/swingset3/demos/togglebutton/ToggleButtonDemo.java",
50 "com/sun/swingset3/demos/togglebutton/DirectionPanel.java",
51 "com/sun/swingset3/demos/togglebutton/LayoutControlPanel.java",
52 "com/sun/swingset3/demos/ResourceManager.java",
53 "com/sun/swingset3/demos/togglebutton/resources/ToggleButtonDemo.properties",
54 "com/sun/swingset3/demos/togglebutton/resources/images/b1.gif",
55 "com/sun/swingset3/demos/togglebutton/resources/images/b1d.gif",
56 "com/sun/swingset3/demos/togglebutton/resources/images/b1p.gif",
57 "com/sun/swingset3/demos/togglebutton/resources/images/b1r.gif",
58 "com/sun/swingset3/demos/togglebutton/resources/images/b2.gif",
59 "com/sun/swingset3/demos/togglebutton/resources/images/b2d.gif",
60 "com/sun/swingset3/demos/togglebutton/resources/images/b2p.gif",
61 "com/sun/swingset3/demos/togglebutton/resources/images/b2r.gif",
62 "com/sun/swingset3/demos/togglebutton/resources/images/b3.gif",
63 "com/sun/swingset3/demos/togglebutton/resources/images/b3d.gif",
64 "com/sun/swingset3/demos/togglebutton/resources/images/b3p.gif",
65 "com/sun/swingset3/demos/togglebutton/resources/images/b3r.gif",
66 "com/sun/swingset3/demos/togglebutton/resources/images/bl.gif",
67 "com/sun/swingset3/demos/togglebutton/resources/images/bldn.gif",
68 "com/sun/swingset3/demos/togglebutton/resources/images/bm.gif",
69 "com/sun/swingset3/demos/togglebutton/resources/images/bmdn.gif",
70 "com/sun/swingset3/demos/togglebutton/resources/images/br.gif",
71 "com/sun/swingset3/demos/togglebutton/resources/images/brdn.gif",
72 "com/sun/swingset3/demos/togglebutton/resources/images/c.gif",
73 "com/sun/swingset3/demos/togglebutton/resources/images/cb.gif",
74 "com/sun/swingset3/demos/togglebutton/resources/images/cbr.gif",
75 "com/sun/swingset3/demos/togglebutton/resources/images/cbrs.gif",
76 "com/sun/swingset3/demos/togglebutton/resources/images/cbs.gif",
77 "com/sun/swingset3/demos/togglebutton/resources/images/cdn.gif",
78 "com/sun/swingset3/demos/togglebutton/resources/images/ml.gif",
79 "com/sun/swingset3/demos/togglebutton/resources/images/mldn.gif",
80 "com/sun/swingset3/demos/togglebutton/resources/images/mr.gif",
81 "com/sun/swingset3/demos/togglebutton/resources/images/mrdn.gif",
82 "com/sun/swingset3/demos/togglebutton/resources/images/rb.gif",
83 "com/sun/swingset3/demos/togglebutton/resources/images/rbp.gif",
84 "com/sun/swingset3/demos/togglebutton/resources/images/rbr.gif",
85 "com/sun/swingset3/demos/togglebutton/resources/images/rbrs.gif",
86 "com/sun/swingset3/demos/togglebutton/resources/images/rbs.gif",
87 "com/sun/swingset3/demos/togglebutton/resources/images/tl.gif",
88 "com/sun/swingset3/demos/togglebutton/resources/images/tldn.gif",
89 "com/sun/swingset3/demos/togglebutton/resources/images/tm.gif",
90 "com/sun/swingset3/demos/togglebutton/resources/images/tmdn.gif",
91 "com/sun/swingset3/demos/togglebutton/resources/images/ToggleButtonDemo.gif",
92 "com/sun/swingset3/demos/togglebutton/resources/images/tr.gif",
93 "com/sun/swingset3/demos/togglebutton/resources/images/trdn.gif"
94 }
95)
96public class ToggleButtonDemo extends JPanel implements ChangeListener {
97
98 private static final Dimension HGAP10 = new Dimension(10, 1);
99 private static final Dimension HGAP20 = new Dimension(20, 1);
100 private static final Dimension VGAP20 = new Dimension(1, 20);
101 private static final Dimension VGAP30 = new Dimension(1, 30);
102
103 static final ResourceManager resourceManager = new ResourceManager(ToggleButtonDemo.class);
104 public static final String RADIO3 = resourceManager.getString("ToggleButtonDemo.radio3");
105 public static final String RADIO2 = resourceManager.getString("ToggleButtonDemo.radio2");
106 public static final String RADIO1 = resourceManager.getString("ToggleButtonDemo.radio1");
107 public static final String IMAGE_RADIO_BUTTONS = resourceManager.getString("ToggleButtonDemo.imageradiobuttons");
108 public static final String TEXT_RADIO_BUTTONS = resourceManager.getString("ToggleButtonDemo.textradiobuttons");
109 public static final String CHECK3 = resourceManager.getString("ToggleButtonDemo.check3");
110 public static final String CHECK2 = resourceManager.getString("ToggleButtonDemo.check2");
111 public static final String CHECK1 = resourceManager.getString("ToggleButtonDemo.check1");
112 public static final String CHECK_BOXES = resourceManager.getString("ToggleButtonDemo.checkboxes");
113 public static final String IMAGE_CHECKBOXES = resourceManager.getString("ToggleButtonDemo.imagecheckboxes");
114 public static final String TEXT_CHECKBOXES = resourceManager.getString("ToggleButtonDemo.textcheckboxes");
115 public static final String CONTENT_FILLED = resourceManager.getString("ToggleButtonDemo.contentfilled");
116 public static final String ENABLED = resourceManager.getString("ToggleButtonDemo.enabled");
117 public static final String PAINT_FOCUS = resourceManager.getString("ToggleButtonDemo.paintfocus");
118 public static final String PAINT_BORDER = resourceManager.getString("ToggleButtonDemo.paintborder");
119 public static final String DISPLAY_OPTIONS = resourceManager.getString("ToggleButtonDemo.controlpanel_label");
120 public static final String DEFAULT = resourceManager.getString("ToggleButtonDemo.default");
121 public static final String PAD_AMOUNT = resourceManager.getString("ToggleButtonDemo.padamount_label");
122
123 private final JTabbedPane tab;
124
125 private final JPanel checkboxPanel = new JPanel();
126 private final JPanel radioButtonPanel = new JPanel();
127
128 private final List<JButton> buttons = new ArrayList<>();
129 private final List<JCheckBox> checkboxes = new ArrayList<>();
130 private final List<JRadioButton> radiobuttons = new ArrayList<>();
131 private final List<JToggleButton> togglebuttons = new ArrayList<>();
132
133 private List<? extends JComponent> currentControls = buttons;
134
135 private final EmptyBorder border5 = new EmptyBorder(5, 5, 5, 5);
136
137 private ItemListener buttonDisplayListener = null;
138 private ItemListener buttonPadListener = null;
139
140 private final Insets insets0 = new Insets(0, 0, 0, 0);
141 private final Insets insets10 = new Insets(10, 10, 10, 10);
142
143 private final Border loweredBorder = new CompoundBorder(
144 new SoftBevelBorder(SoftBevelBorder.LOWERED), new EmptyBorder(5, 5, 5, 5));
145
146 /**
147 * main method allows us to run as a standalone demo.
148 *
149 * @param args
150 */
151 public static void main(String[] args) {
152 JFrame frame = new JFrame(ToggleButtonDemo.class.getAnnotation(DemoProperties.class).value());
153
Alexander Kouznetsov0ab1a9c2016-03-30 19:05:58 -0700154 frame.getContentPane().add(new ToggleButtonDemo());
155 frame.setPreferredSize(new Dimension(800, 600));
156 frame.pack();
157 frame.setLocationRelativeTo(null);
158 frame.setVisible(true);
159 }
160
161 /**
162 * ButtonDemo Constructor
163 */
164 public ToggleButtonDemo() {
165 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
166
167 tab = new JTabbedPane();
168 tab.getModel().addChangeListener(this);
169
170 add(tab);
171
172 //addButtons();
173 addRadioButtons();
174 addCheckBoxes();
175 //addToggleButtons();
176 currentControls = checkboxes;
177 }
178
179 private void addRadioButtons() {
180 ButtonGroup group = new ButtonGroup();
181
182 tab.addTab(resourceManager.getString("ToggleButtonDemo.radiobuttons"), radioButtonPanel);
183 radioButtonPanel.setLayout(new BoxLayout(radioButtonPanel, BoxLayout.X_AXIS));
184 radioButtonPanel.setBorder(border5);
185
186 JPanel p1 = createVerticalPanel(true);
187 p1.setAlignmentY(TOP_ALIGNMENT);
188 radioButtonPanel.add(p1);
189
190 // Text Radio Buttons
191 JPanel p2 = createHorizontalPanel(false);
192 p1.add(p2);
193 p2.setBorder(new CompoundBorder(
194 new TitledBorder(
195 null, TEXT_RADIO_BUTTONS,
196 TitledBorder.LEFT, TitledBorder.TOP), border5)
197 );
198
199 JRadioButton radio = (JRadioButton) p2.add(new JRadioButton(RADIO1));
200 group.add(radio);
201 radiobuttons.add(radio);
202 p2.add(Box.createRigidArea(HGAP10));
203
204 radio = (JRadioButton) p2.add(new JRadioButton(RADIO2));
205 group.add(radio);
206 radiobuttons.add(radio);
207 p2.add(Box.createRigidArea(HGAP10));
208
209 radio = (JRadioButton) p2.add(new JRadioButton(RADIO3));
210 group.add(radio);
211 radiobuttons.add(radio);
212
213 // Image Radio Buttons
214 group = new ButtonGroup();
215 p1.add(Box.createRigidArea(VGAP30));
216 JPanel p3 = createHorizontalPanel(false);
217 p1.add(p3);
218 p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS));
219 p3.setBorder(new TitledBorder(null, IMAGE_RADIO_BUTTONS,
220 TitledBorder.LEFT, TitledBorder.TOP));
221
222 // image radio button 1
223 String description = resourceManager.getString("ToggleButtonDemo.customradio");
224 String text = RADIO1;
225 radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description));
226 radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description));
227 radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description));
228 radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description));
229 radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description));
230 radio.setMargin(new Insets(0, 0, 0, 0));
231 group.add(radio);
232 p3.add(radio);
233 radiobuttons.add(radio);
234 p3.add(Box.createRigidArea(HGAP20));
235
236 // image radio button 2
237 text = RADIO2;
238 radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description));
239 radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description));
240 radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description));
241 radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description));
242 radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description));
243 radio.setMargin(new Insets(0, 0, 0, 0));
244 group.add(radio);
245 p3.add(radio);
246 radiobuttons.add(radio);
247 p3.add(Box.createRigidArea(HGAP20));
248
249 // image radio button 3
250 text = RADIO3;
251 radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description));
252 radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description));
253 radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description));
254 radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description));
255 radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description));
256 radio.setMargin(new Insets(0, 0, 0, 0));
257 group.add(radio);
258 radiobuttons.add(radio);
259 p3.add(radio);
260
261 // verticaly glue fills out the rest of the box
262 p1.add(Box.createVerticalGlue());
263
264 radioButtonPanel.add(Box.createHorizontalGlue());
265 currentControls = radiobuttons;
266 radioButtonPanel.add(createControls());
267 }
268
269 private void addCheckBoxes() {
270 tab.addTab(CHECK_BOXES, checkboxPanel);
271 checkboxPanel.setLayout(new BoxLayout(checkboxPanel, BoxLayout.X_AXIS));
272 checkboxPanel.setBorder(border5);
273
274 JPanel p1 = createVerticalPanel(true);
275 p1.setAlignmentY(TOP_ALIGNMENT);
276 checkboxPanel.add(p1);
277
278 // Text Radio Buttons
279 JPanel p2 = createHorizontalPanel(false);
280 p1.add(p2);
281 p2.setBorder(new CompoundBorder(
282 new TitledBorder(
283 null, TEXT_CHECKBOXES,
284 TitledBorder.LEFT, TitledBorder.TOP), border5)
285 );
286
287 JCheckBox checkBox1 = new JCheckBox(CHECK1);
288 checkboxes.add(checkBox1);
289 p2.add(checkBox1);
290 p2.add(Box.createRigidArea(HGAP10));
291
292 JCheckBox checkBox2 = new JCheckBox(CHECK2);
293 checkboxes.add(checkBox2);
294 p2.add(checkBox2);
295 p2.add(Box.createRigidArea(HGAP10));
296
297 JCheckBox checkBox3 = new JCheckBox(CHECK3);
298 checkboxes.add(checkBox3);
299 p2.add(checkBox3);
300
301 // Image Radio Buttons
302 p1.add(Box.createRigidArea(VGAP30));
303 JPanel p3 = createHorizontalPanel(false);
304 p1.add(p3);
305 p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS));
306 p3.setBorder(new TitledBorder(null, IMAGE_CHECKBOXES,
307 TitledBorder.LEFT, TitledBorder.TOP));
308
309 // image checkbox 1
310 String description = resourceManager.getString("ToggleButtonDemo.customcheck");
311 String text = CHECK1;
312 JCheckBox check = new JCheckBox(text,
313 resourceManager.createImageIcon("cb.gif", description));
314 check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description));
315 check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description));
316 check.setSelectedIcon(resourceManager.createImageIcon("cbs.gif", description));
317 check.setMargin(new Insets(0, 0, 0, 0));
318 p3.add(check);
319 checkboxes.add(check);
320 p3.add(Box.createRigidArea(HGAP20));
321
322 // image checkbox 2
323 text = CHECK2;
324 check = new JCheckBox(text, resourceManager.createImageIcon("cb.gif", description));
325 check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description));
326 check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description));
327 check.setSelectedIcon(resourceManager.createImageIcon("cbs.gif", description));
328 check.setMargin(new Insets(0, 0, 0, 0));
329 p3.add(check);
330 checkboxes.add(check);
331 p3.add(Box.createRigidArea(HGAP20));
332
333 // image checkbox 3
334 text = CHECK3;
335 check = new JCheckBox(text, resourceManager.createImageIcon("cb.gif", description));
336 check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description));
337 check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description));
338 check.setSelectedIcon(resourceManager.createImageIcon("cbs.gif", description));
339 check.setMargin(new Insets(0, 0, 0, 0));
340 p3.add(check);
341 checkboxes.add(check);
342
343 // verticaly glue fills out the rest of the box
344 p1.add(Box.createVerticalGlue());
345
346 checkboxPanel.add(Box.createHorizontalGlue());
347 currentControls = checkboxes;
348 checkboxPanel.add(createControls());
349 }
350
351 private JPanel createControls() {
352 JPanel controls = new JPanel() {
353 @Override
354 public Dimension getMaximumSize() {
355 return new Dimension(300, super.getMaximumSize().height);
356 }
357 };
358 controls.setLayout(new BoxLayout(controls, BoxLayout.Y_AXIS));
359 controls.setAlignmentY(TOP_ALIGNMENT);
360 controls.setAlignmentX(LEFT_ALIGNMENT);
361
362 JPanel buttonControls = createHorizontalPanel(true);
363 buttonControls.setAlignmentY(TOP_ALIGNMENT);
364 buttonControls.setAlignmentX(LEFT_ALIGNMENT);
365
366 JPanel leftColumn = createVerticalPanel(false);
367 leftColumn.setAlignmentX(LEFT_ALIGNMENT);
368 leftColumn.setAlignmentY(TOP_ALIGNMENT);
369
370 JPanel rightColumn = new LayoutControlPanel(this);
371
372 buttonControls.add(leftColumn);
373 buttonControls.add(Box.createRigidArea(HGAP20));
374 buttonControls.add(rightColumn);
375 buttonControls.add(Box.createRigidArea(HGAP20));
376
377 controls.add(buttonControls);
378
379 createListeners();
380
381 // Display Options
382 JLabel l = new JLabel(DISPLAY_OPTIONS);
383 leftColumn.add(l);
384
385 JCheckBox bordered = new JCheckBox(PAINT_BORDER);
386 bordered.setActionCommand("PaintBorder");
387 bordered.setToolTipText(resourceManager.getString("ToggleButtonDemo.paintborder_tooltip"));
388 bordered.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.paintborder_mnemonic"));
389 if (currentControls == buttons) {
390 bordered.setSelected(true);
391 }
392 bordered.addItemListener(buttonDisplayListener);
393 leftColumn.add(bordered);
394
395 JCheckBox focused = new JCheckBox(PAINT_FOCUS);
396 focused.setActionCommand("PaintFocus");
397 focused.setToolTipText(resourceManager.getString("ToggleButtonDemo.paintfocus_tooltip"));
398 focused.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.paintfocus_mnemonic"));
399 focused.setSelected(true);
400 focused.addItemListener(buttonDisplayListener);
401 leftColumn.add(focused);
402
403 JCheckBox enabled = new JCheckBox(ENABLED);
404 enabled.setActionCommand("Enabled");
405 enabled.setToolTipText(resourceManager.getString("ToggleButtonDemo.enabled_tooltip"));
406 enabled.setSelected(true);
407 enabled.addItemListener(buttonDisplayListener);
408 enabled.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.enabled_mnemonic"));
409 leftColumn.add(enabled);
410
411 JCheckBox filled = new JCheckBox(CONTENT_FILLED);
412 filled.setActionCommand("ContentFilled");
413 filled.setToolTipText(resourceManager.getString("ToggleButtonDemo.contentfilled_tooltip"));
414 filled.setSelected(true);
415 filled.addItemListener(buttonDisplayListener);
416 filled.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.contentfilled_mnemonic"));
417 leftColumn.add(filled);
418
419 leftColumn.add(Box.createRigidArea(VGAP20));
420
421 l = new JLabel(PAD_AMOUNT);
422 leftColumn.add(l);
423 ButtonGroup group = new ButtonGroup();
424 JRadioButton defaultPad = new JRadioButton(DEFAULT);
425 defaultPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.default_tooltip"));
426 defaultPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.default_mnemonic"));
427 defaultPad.addItemListener(buttonPadListener);
428 group.add(defaultPad);
429 defaultPad.setSelected(true);
430 leftColumn.add(defaultPad);
431
432 JRadioButton zeroPad = new JRadioButton(resourceManager.getString("ToggleButtonDemo.zero"));
433 zeroPad.setActionCommand("ZeroPad");
434 zeroPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.zero_tooltip"));
435 zeroPad.addItemListener(buttonPadListener);
436 zeroPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.zero_mnemonic"));
437 group.add(zeroPad);
438 leftColumn.add(zeroPad);
439
440 JRadioButton tenPad = new JRadioButton(resourceManager.getString("ToggleButtonDemo.ten"));
441 tenPad.setActionCommand("TenPad");
442 tenPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.ten_mnemonic"));
443 tenPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.ten_tooltip"));
444 tenPad.addItemListener(buttonPadListener);
445 group.add(tenPad);
446 leftColumn.add(tenPad);
447
448 leftColumn.add(Box.createRigidArea(VGAP20));
449 return controls;
450 }
451
452 private void createListeners() {
453 buttonDisplayListener = (ItemEvent e) -> {
454 JCheckBox cb = (JCheckBox) e.getSource();
455 String command = cb.getActionCommand();
456 switch (command) {
457 case "Enabled":
458 for (JComponent control : currentControls) {
459 control.setEnabled(cb.isSelected());
460 control.invalidate();
461 }
462 break;
463 case "PaintBorder":
464 if (currentControls.get(0) instanceof AbstractButton) {
465 for (JComponent control : currentControls) {
466 AbstractButton b = (AbstractButton) control;
467 b.setBorderPainted(cb.isSelected());
468 b.invalidate();
469 }
470 }
471 break;
472 case "PaintFocus":
473 if (currentControls.get(0) instanceof AbstractButton) {
474 for (JComponent control : currentControls) {
475 AbstractButton b = (AbstractButton) control;
476 b.setFocusPainted(cb.isSelected());
477 b.invalidate();
478 }
479 }
480 break;
481 case "ContentFilled":
482 if (currentControls.get(0) instanceof AbstractButton) {
483 for (JComponent control : currentControls) {
484 AbstractButton b = (AbstractButton) control;
485 b.setContentAreaFilled(cb.isSelected());
486 b.invalidate();
487 }
488 }
489 break;
490 }
491 invalidate();
492 validate();
493 repaint();
494 };
495
496 buttonPadListener = (ItemEvent e) -> {
497 // *** pad = 0
498 int pad = -1;
499 JRadioButton rb = (JRadioButton) e.getSource();
500 String command = rb.getActionCommand();
501 if ("ZeroPad".equals(command) && rb.isSelected()) {
502 pad = 0;
503 } else if ("TenPad".equals(command) && rb.isSelected()) {
504 pad = 10;
505 }
506
507 for (JComponent control : currentControls) {
508 AbstractButton b = (AbstractButton) control;
509 if (pad == -1) {
510 b.setMargin(null);
511 } else if (pad == 0) {
512 b.setMargin(insets0);
513 } else {
514 b.setMargin(insets10);
515 }
516 }
517 invalidate();
518 validate();
519 repaint();
520 };
521 }
522
523 @Override
524 public void stateChanged(ChangeEvent e) {
525 SingleSelectionModel model = (SingleSelectionModel) e.getSource();
526 if (model.getSelectedIndex() == 0) {
527 currentControls = buttons;
528 } else if (model.getSelectedIndex() == 1) {
529 currentControls = radiobuttons;
530 } else if (model.getSelectedIndex() == 2) {
531 currentControls = checkboxes;
532 } else {
533 currentControls = togglebuttons;
534 }
535 }
536
537 public List<? extends JComponent> getCurrentControls() {
538 return currentControls;
539 }
540
541 private JPanel createHorizontalPanel(boolean threeD) {
542 JPanel p = new JPanel();
543 p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
544 p.setAlignmentY(TOP_ALIGNMENT);
545 p.setAlignmentX(LEFT_ALIGNMENT);
546 if (threeD) {
547 p.setBorder(loweredBorder);
548 }
549 return p;
550 }
551
552 private JPanel createVerticalPanel(boolean threeD) {
553 JPanel p = new JPanel();
554 p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
555 p.setAlignmentY(TOP_ALIGNMENT);
556 p.setAlignmentX(LEFT_ALIGNMENT);
557 if (threeD) {
558 p.setBorder(loweredBorder);
559 }
560 return p;
561 }
562}