jdk/test/sanity/client/lib/SwingSet3/src/com/sun/swingset3/demos/togglebutton/ToggleButtonDemo.java
changeset 36744 a00905527ec2
child 37574 906cb708a629
equal deleted inserted replaced
36743:bdc3f1b79fb7 36744:a00905527ec2
       
     1 /*
       
     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  */
       
    23 package com.sun.swingset3.demos.togglebutton;
       
    24 
       
    25 import java.awt.*;
       
    26 import java.awt.event.ItemEvent;
       
    27 import java.awt.event.ItemListener;
       
    28 import java.util.*;
       
    29 import java.util.List;
       
    30 import javax.swing.*;
       
    31 import javax.swing.border.*;
       
    32 import javax.swing.event.ChangeEvent;
       
    33 import javax.swing.event.ChangeListener;
       
    34 
       
    35 import com.sun.swingset3.DemoProperties;
       
    36 import 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 )
       
    96 public 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 
       
   154         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
   155         frame.getContentPane().add(new ToggleButtonDemo());
       
   156         frame.setPreferredSize(new Dimension(800, 600));
       
   157         frame.pack();
       
   158         frame.setLocationRelativeTo(null);
       
   159         frame.setVisible(true);
       
   160     }
       
   161 
       
   162     /**
       
   163      * ButtonDemo Constructor
       
   164      */
       
   165     public ToggleButtonDemo() {
       
   166         setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
       
   167 
       
   168         tab = new JTabbedPane();
       
   169         tab.getModel().addChangeListener(this);
       
   170 
       
   171         add(tab);
       
   172 
       
   173         //addButtons();
       
   174         addRadioButtons();
       
   175         addCheckBoxes();
       
   176         //addToggleButtons();
       
   177         currentControls = checkboxes;
       
   178     }
       
   179 
       
   180     private void addRadioButtons() {
       
   181         ButtonGroup group = new ButtonGroup();
       
   182 
       
   183         tab.addTab(resourceManager.getString("ToggleButtonDemo.radiobuttons"), radioButtonPanel);
       
   184         radioButtonPanel.setLayout(new BoxLayout(radioButtonPanel, BoxLayout.X_AXIS));
       
   185         radioButtonPanel.setBorder(border5);
       
   186 
       
   187         JPanel p1 = createVerticalPanel(true);
       
   188         p1.setAlignmentY(TOP_ALIGNMENT);
       
   189         radioButtonPanel.add(p1);
       
   190 
       
   191         // Text Radio Buttons
       
   192         JPanel p2 = createHorizontalPanel(false);
       
   193         p1.add(p2);
       
   194         p2.setBorder(new CompoundBorder(
       
   195                 new TitledBorder(
       
   196                         null, TEXT_RADIO_BUTTONS,
       
   197                         TitledBorder.LEFT, TitledBorder.TOP), border5)
       
   198         );
       
   199 
       
   200         JRadioButton radio = (JRadioButton) p2.add(new JRadioButton(RADIO1));
       
   201         group.add(radio);
       
   202         radiobuttons.add(radio);
       
   203         p2.add(Box.createRigidArea(HGAP10));
       
   204 
       
   205         radio = (JRadioButton) p2.add(new JRadioButton(RADIO2));
       
   206         group.add(radio);
       
   207         radiobuttons.add(radio);
       
   208         p2.add(Box.createRigidArea(HGAP10));
       
   209 
       
   210         radio = (JRadioButton) p2.add(new JRadioButton(RADIO3));
       
   211         group.add(radio);
       
   212         radiobuttons.add(radio);
       
   213 
       
   214         // Image Radio Buttons
       
   215         group = new ButtonGroup();
       
   216         p1.add(Box.createRigidArea(VGAP30));
       
   217         JPanel p3 = createHorizontalPanel(false);
       
   218         p1.add(p3);
       
   219         p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS));
       
   220         p3.setBorder(new TitledBorder(null, IMAGE_RADIO_BUTTONS,
       
   221                 TitledBorder.LEFT, TitledBorder.TOP));
       
   222 
       
   223         // image radio button 1
       
   224         String description = resourceManager.getString("ToggleButtonDemo.customradio");
       
   225         String text = RADIO1;
       
   226         radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description));
       
   227         radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description));
       
   228         radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description));
       
   229         radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description));
       
   230         radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description));
       
   231         radio.setMargin(new Insets(0, 0, 0, 0));
       
   232         group.add(radio);
       
   233         p3.add(radio);
       
   234         radiobuttons.add(radio);
       
   235         p3.add(Box.createRigidArea(HGAP20));
       
   236 
       
   237         // image radio button 2
       
   238         text = RADIO2;
       
   239         radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description));
       
   240         radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description));
       
   241         radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description));
       
   242         radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description));
       
   243         radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description));
       
   244         radio.setMargin(new Insets(0, 0, 0, 0));
       
   245         group.add(radio);
       
   246         p3.add(radio);
       
   247         radiobuttons.add(radio);
       
   248         p3.add(Box.createRigidArea(HGAP20));
       
   249 
       
   250         // image radio button 3
       
   251         text = RADIO3;
       
   252         radio = new JRadioButton(text, resourceManager.createImageIcon("rb.gif", description));
       
   253         radio.setPressedIcon(resourceManager.createImageIcon("rbp.gif", description));
       
   254         radio.setRolloverIcon(resourceManager.createImageIcon("rbr.gif", description));
       
   255         radio.setRolloverSelectedIcon(resourceManager.createImageIcon("rbrs.gif", description));
       
   256         radio.setSelectedIcon(resourceManager.createImageIcon("rbs.gif", description));
       
   257         radio.setMargin(new Insets(0, 0, 0, 0));
       
   258         group.add(radio);
       
   259         radiobuttons.add(radio);
       
   260         p3.add(radio);
       
   261 
       
   262         // verticaly glue fills out the rest of the box
       
   263         p1.add(Box.createVerticalGlue());
       
   264 
       
   265         radioButtonPanel.add(Box.createHorizontalGlue());
       
   266         currentControls = radiobuttons;
       
   267         radioButtonPanel.add(createControls());
       
   268     }
       
   269 
       
   270     private void addCheckBoxes() {
       
   271         tab.addTab(CHECK_BOXES, checkboxPanel);
       
   272         checkboxPanel.setLayout(new BoxLayout(checkboxPanel, BoxLayout.X_AXIS));
       
   273         checkboxPanel.setBorder(border5);
       
   274 
       
   275         JPanel p1 = createVerticalPanel(true);
       
   276         p1.setAlignmentY(TOP_ALIGNMENT);
       
   277         checkboxPanel.add(p1);
       
   278 
       
   279         // Text Radio Buttons
       
   280         JPanel p2 = createHorizontalPanel(false);
       
   281         p1.add(p2);
       
   282         p2.setBorder(new CompoundBorder(
       
   283                 new TitledBorder(
       
   284                         null, TEXT_CHECKBOXES,
       
   285                         TitledBorder.LEFT, TitledBorder.TOP), border5)
       
   286         );
       
   287 
       
   288         JCheckBox checkBox1 = new JCheckBox(CHECK1);
       
   289         checkboxes.add(checkBox1);
       
   290         p2.add(checkBox1);
       
   291         p2.add(Box.createRigidArea(HGAP10));
       
   292 
       
   293         JCheckBox checkBox2 = new JCheckBox(CHECK2);
       
   294         checkboxes.add(checkBox2);
       
   295         p2.add(checkBox2);
       
   296         p2.add(Box.createRigidArea(HGAP10));
       
   297 
       
   298         JCheckBox checkBox3 = new JCheckBox(CHECK3);
       
   299         checkboxes.add(checkBox3);
       
   300         p2.add(checkBox3);
       
   301 
       
   302         // Image Radio Buttons
       
   303         p1.add(Box.createRigidArea(VGAP30));
       
   304         JPanel p3 = createHorizontalPanel(false);
       
   305         p1.add(p3);
       
   306         p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS));
       
   307         p3.setBorder(new TitledBorder(null, IMAGE_CHECKBOXES,
       
   308                 TitledBorder.LEFT, TitledBorder.TOP));
       
   309 
       
   310         // image checkbox 1
       
   311         String description = resourceManager.getString("ToggleButtonDemo.customcheck");
       
   312         String text = CHECK1;
       
   313         JCheckBox check = new JCheckBox(text,
       
   314                 resourceManager.createImageIcon("cb.gif", description));
       
   315         check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description));
       
   316         check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description));
       
   317         check.setSelectedIcon(resourceManager.createImageIcon("cbs.gif", description));
       
   318         check.setMargin(new Insets(0, 0, 0, 0));
       
   319         p3.add(check);
       
   320         checkboxes.add(check);
       
   321         p3.add(Box.createRigidArea(HGAP20));
       
   322 
       
   323         // image checkbox 2
       
   324         text = CHECK2;
       
   325         check = new JCheckBox(text, resourceManager.createImageIcon("cb.gif", description));
       
   326         check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description));
       
   327         check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description));
       
   328         check.setSelectedIcon(resourceManager.createImageIcon("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         // image checkbox 3
       
   335         text = CHECK3;
       
   336         check = new JCheckBox(text, resourceManager.createImageIcon("cb.gif", description));
       
   337         check.setRolloverIcon(resourceManager.createImageIcon("cbr.gif", description));
       
   338         check.setRolloverSelectedIcon(resourceManager.createImageIcon("cbrs.gif", description));
       
   339         check.setSelectedIcon(resourceManager.createImageIcon("cbs.gif", description));
       
   340         check.setMargin(new Insets(0, 0, 0, 0));
       
   341         p3.add(check);
       
   342         checkboxes.add(check);
       
   343 
       
   344         // verticaly glue fills out the rest of the box
       
   345         p1.add(Box.createVerticalGlue());
       
   346 
       
   347         checkboxPanel.add(Box.createHorizontalGlue());
       
   348         currentControls = checkboxes;
       
   349         checkboxPanel.add(createControls());
       
   350     }
       
   351 
       
   352     private JPanel createControls() {
       
   353         JPanel controls = new JPanel() {
       
   354             @Override
       
   355             public Dimension getMaximumSize() {
       
   356                 return new Dimension(300, super.getMaximumSize().height);
       
   357             }
       
   358         };
       
   359         controls.setLayout(new BoxLayout(controls, BoxLayout.Y_AXIS));
       
   360         controls.setAlignmentY(TOP_ALIGNMENT);
       
   361         controls.setAlignmentX(LEFT_ALIGNMENT);
       
   362 
       
   363         JPanel buttonControls = createHorizontalPanel(true);
       
   364         buttonControls.setAlignmentY(TOP_ALIGNMENT);
       
   365         buttonControls.setAlignmentX(LEFT_ALIGNMENT);
       
   366 
       
   367         JPanel leftColumn = createVerticalPanel(false);
       
   368         leftColumn.setAlignmentX(LEFT_ALIGNMENT);
       
   369         leftColumn.setAlignmentY(TOP_ALIGNMENT);
       
   370 
       
   371         JPanel rightColumn = new LayoutControlPanel(this);
       
   372 
       
   373         buttonControls.add(leftColumn);
       
   374         buttonControls.add(Box.createRigidArea(HGAP20));
       
   375         buttonControls.add(rightColumn);
       
   376         buttonControls.add(Box.createRigidArea(HGAP20));
       
   377 
       
   378         controls.add(buttonControls);
       
   379 
       
   380         createListeners();
       
   381 
       
   382         // Display Options
       
   383         JLabel l = new JLabel(DISPLAY_OPTIONS);
       
   384         leftColumn.add(l);
       
   385 
       
   386         JCheckBox bordered = new JCheckBox(PAINT_BORDER);
       
   387         bordered.setActionCommand("PaintBorder");
       
   388         bordered.setToolTipText(resourceManager.getString("ToggleButtonDemo.paintborder_tooltip"));
       
   389         bordered.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.paintborder_mnemonic"));
       
   390         if (currentControls == buttons) {
       
   391             bordered.setSelected(true);
       
   392         }
       
   393         bordered.addItemListener(buttonDisplayListener);
       
   394         leftColumn.add(bordered);
       
   395 
       
   396         JCheckBox focused = new JCheckBox(PAINT_FOCUS);
       
   397         focused.setActionCommand("PaintFocus");
       
   398         focused.setToolTipText(resourceManager.getString("ToggleButtonDemo.paintfocus_tooltip"));
       
   399         focused.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.paintfocus_mnemonic"));
       
   400         focused.setSelected(true);
       
   401         focused.addItemListener(buttonDisplayListener);
       
   402         leftColumn.add(focused);
       
   403 
       
   404         JCheckBox enabled = new JCheckBox(ENABLED);
       
   405         enabled.setActionCommand("Enabled");
       
   406         enabled.setToolTipText(resourceManager.getString("ToggleButtonDemo.enabled_tooltip"));
       
   407         enabled.setSelected(true);
       
   408         enabled.addItemListener(buttonDisplayListener);
       
   409         enabled.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.enabled_mnemonic"));
       
   410         leftColumn.add(enabled);
       
   411 
       
   412         JCheckBox filled = new JCheckBox(CONTENT_FILLED);
       
   413         filled.setActionCommand("ContentFilled");
       
   414         filled.setToolTipText(resourceManager.getString("ToggleButtonDemo.contentfilled_tooltip"));
       
   415         filled.setSelected(true);
       
   416         filled.addItemListener(buttonDisplayListener);
       
   417         filled.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.contentfilled_mnemonic"));
       
   418         leftColumn.add(filled);
       
   419 
       
   420         leftColumn.add(Box.createRigidArea(VGAP20));
       
   421 
       
   422         l = new JLabel(PAD_AMOUNT);
       
   423         leftColumn.add(l);
       
   424         ButtonGroup group = new ButtonGroup();
       
   425         JRadioButton defaultPad = new JRadioButton(DEFAULT);
       
   426         defaultPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.default_tooltip"));
       
   427         defaultPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.default_mnemonic"));
       
   428         defaultPad.addItemListener(buttonPadListener);
       
   429         group.add(defaultPad);
       
   430         defaultPad.setSelected(true);
       
   431         leftColumn.add(defaultPad);
       
   432 
       
   433         JRadioButton zeroPad = new JRadioButton(resourceManager.getString("ToggleButtonDemo.zero"));
       
   434         zeroPad.setActionCommand("ZeroPad");
       
   435         zeroPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.zero_tooltip"));
       
   436         zeroPad.addItemListener(buttonPadListener);
       
   437         zeroPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.zero_mnemonic"));
       
   438         group.add(zeroPad);
       
   439         leftColumn.add(zeroPad);
       
   440 
       
   441         JRadioButton tenPad = new JRadioButton(resourceManager.getString("ToggleButtonDemo.ten"));
       
   442         tenPad.setActionCommand("TenPad");
       
   443         tenPad.setMnemonic(resourceManager.getMnemonic("ToggleButtonDemo.ten_mnemonic"));
       
   444         tenPad.setToolTipText(resourceManager.getString("ToggleButtonDemo.ten_tooltip"));
       
   445         tenPad.addItemListener(buttonPadListener);
       
   446         group.add(tenPad);
       
   447         leftColumn.add(tenPad);
       
   448 
       
   449         leftColumn.add(Box.createRigidArea(VGAP20));
       
   450         return controls;
       
   451     }
       
   452 
       
   453     private void createListeners() {
       
   454         buttonDisplayListener = (ItemEvent e) -> {
       
   455             JCheckBox cb = (JCheckBox) e.getSource();
       
   456             String command = cb.getActionCommand();
       
   457             switch (command) {
       
   458                 case "Enabled":
       
   459                     for (JComponent control : currentControls) {
       
   460                         control.setEnabled(cb.isSelected());
       
   461                         control.invalidate();
       
   462                     }
       
   463                     break;
       
   464                 case "PaintBorder":
       
   465                     if (currentControls.get(0) instanceof AbstractButton) {
       
   466                         for (JComponent control : currentControls) {
       
   467                             AbstractButton b = (AbstractButton) control;
       
   468                             b.setBorderPainted(cb.isSelected());
       
   469                             b.invalidate();
       
   470                         }
       
   471                     }
       
   472                     break;
       
   473                 case "PaintFocus":
       
   474                     if (currentControls.get(0) instanceof AbstractButton) {
       
   475                         for (JComponent control : currentControls) {
       
   476                             AbstractButton b = (AbstractButton) control;
       
   477                             b.setFocusPainted(cb.isSelected());
       
   478                             b.invalidate();
       
   479                         }
       
   480                     }
       
   481                     break;
       
   482                 case "ContentFilled":
       
   483                     if (currentControls.get(0) instanceof AbstractButton) {
       
   484                         for (JComponent control : currentControls) {
       
   485                             AbstractButton b = (AbstractButton) control;
       
   486                             b.setContentAreaFilled(cb.isSelected());
       
   487                             b.invalidate();
       
   488                         }
       
   489                     }
       
   490                     break;
       
   491             }
       
   492             invalidate();
       
   493             validate();
       
   494             repaint();
       
   495         };
       
   496 
       
   497         buttonPadListener = (ItemEvent e) -> {
       
   498             // *** pad = 0
       
   499             int pad = -1;
       
   500             JRadioButton rb = (JRadioButton) e.getSource();
       
   501             String command = rb.getActionCommand();
       
   502             if ("ZeroPad".equals(command) && rb.isSelected()) {
       
   503                 pad = 0;
       
   504             } else if ("TenPad".equals(command) && rb.isSelected()) {
       
   505                 pad = 10;
       
   506             }
       
   507 
       
   508             for (JComponent control : currentControls) {
       
   509                 AbstractButton b = (AbstractButton) control;
       
   510                 if (pad == -1) {
       
   511                     b.setMargin(null);
       
   512                 } else if (pad == 0) {
       
   513                     b.setMargin(insets0);
       
   514                 } else {
       
   515                     b.setMargin(insets10);
       
   516                 }
       
   517             }
       
   518             invalidate();
       
   519             validate();
       
   520             repaint();
       
   521         };
       
   522     }
       
   523 
       
   524     @Override
       
   525     public void stateChanged(ChangeEvent e) {
       
   526         SingleSelectionModel model = (SingleSelectionModel) e.getSource();
       
   527         if (model.getSelectedIndex() == 0) {
       
   528             currentControls = buttons;
       
   529         } else if (model.getSelectedIndex() == 1) {
       
   530             currentControls = radiobuttons;
       
   531         } else if (model.getSelectedIndex() == 2) {
       
   532             currentControls = checkboxes;
       
   533         } else {
       
   534             currentControls = togglebuttons;
       
   535         }
       
   536     }
       
   537 
       
   538     public List<? extends JComponent> getCurrentControls() {
       
   539         return currentControls;
       
   540     }
       
   541 
       
   542     private JPanel createHorizontalPanel(boolean threeD) {
       
   543         JPanel p = new JPanel();
       
   544         p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
       
   545         p.setAlignmentY(TOP_ALIGNMENT);
       
   546         p.setAlignmentX(LEFT_ALIGNMENT);
       
   547         if (threeD) {
       
   548             p.setBorder(loweredBorder);
       
   549         }
       
   550         return p;
       
   551     }
       
   552 
       
   553     private JPanel createVerticalPanel(boolean threeD) {
       
   554         JPanel p = new JPanel();
       
   555         p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
       
   556         p.setAlignmentY(TOP_ALIGNMENT);
       
   557         p.setAlignmentX(LEFT_ALIGNMENT);
       
   558         if (threeD) {
       
   559             p.setBorder(loweredBorder);
       
   560         }
       
   561         return p;
       
   562     }
       
   563 }