| 1 | /* |
| 2 | * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. |
| 3 | * |
| 4 | * Redistribution and use in source and binary forms, with or without |
| 5 | * modification, are permitted provided that the following conditions |
| 6 | * are met: |
| 7 | * |
| 8 | * -Redistributions of source code must retain the above copyright |
| 9 | * notice, this list of conditions and the following disclaimer. |
| 10 | * |
| 11 | * -Redistribution in binary form must reproduct the above copyright |
| 12 | * notice, this list of conditions and the following disclaimer in |
| 13 | * the documentation and/or other materials provided with the distribution. |
| 14 | * |
| 15 | * Neither the name of Sun Microsystems, Inc. or the names of contributors |
| 16 | * may be used to endorse or promote products derived from this software |
| 17 | * without specific prior written permission. |
| 18 | * |
| 19 | * This software is provided "AS IS," without a warranty of any kind. ALL |
| 20 | * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING |
| 21 | * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE |
| 22 | * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT |
| 23 | * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT |
| 24 | * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS |
| 25 | * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST |
| 26 | * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, |
| 27 | * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY |
| 28 | * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN |
| 29 | * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. |
| 30 | * |
| 31 | * You acknowledge that Software is not designed, licensed or intended for |
| 32 | * use in the design, construction, operation or maintenance of any nuclear |
| 33 | * facility. |
| 34 | */ |
| 35 | |
| 36 | /* |
| 37 | * @(#)ButtonDemo.java 1.10 03/01/23 |
| 38 | */ |
| 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 | /** |
| 58 | * JButton, JRadioButton, JToggleButton, JCheckBox Demos |
| 59 | * |
| 60 | * @version 1.10 01/23/03 |
| 61 | * @author Jeff Dinkins |
| 62 | */ |
| 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 | /** |
| 94 | * main method allows us to run as a standalone demo. |
| 95 | */ |
| 96 | public static void main(String[] args) { |
| 97 | ButtonDemo demo = new ButtonDemo(null); |
| 98 | demo.mainImpl(); |
| 99 | } |
| 100 | |
| 101 | /** |
| 102 | * ButtonDemo Constructor |
| 103 | */ |
| 104 | public ButtonDemo(SwingSet2 swingset) { |
| 105 | // Set the title for this demo, and an icon used to represent this |
| 106 | // demo inside the SwingSet2 app. |
| 107 | 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 | // addToggleButtons(); |
| 120 | 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 | // Text Buttons |
| 133 | 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 | // Image Buttons |
| 148 | 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 | // home image button |
| 156 | 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 | // write image button |
| 167 | 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 | // write image button |
| 178 | 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 | // Text Radio Buttons |
| 206 | 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 | // Image Radio Buttons |
| 232 | 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 | // image radio button 1 |
| 241 | 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 | // image radio button 2 |
| 255 | 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 | // image radio button 3 |
| 268 | 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 | // verticaly glue fills out the rest of the box |
| 280 | 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 | // Text Radio Buttons |
| 298 | 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 | // Image Radio Buttons |
| 315 | 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 | // image checkbox 1 |
| 323 | 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 | // image checkbox 2 |
| 335 | 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 | // image checkbox 3 |
| 346 | 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 | // verticaly glue fills out the rest of the box |
| 356 | 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 | // Display Options |
| 397 | 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 | // *** pad = 0 |
| 514 | 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 | } |