jdk/test/javax/swing/JSlider/6587742/bug6587742.java
changeset 1317 0ba1e3d36c19
child 5506 202f599c92aa
equal deleted inserted replaced
1316:20fc6d4d57ae 1317:0ba1e3d36c19
       
     1 /*
       
     2  * Copyright 2008 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    20  * CA 95054 USA or visit www.sun.com if you need additional information or
       
    21  * have any questions.
       
    22  */
       
    23 
       
    24 /* @test
       
    25  * @bug 6587742
       
    26  * @summary filling half of a JSlider's track is no longer optional
       
    27  * @author Pavel Porvatov
       
    28  * @run applet/manual=done bug6587742.html
       
    29  */
       
    30 
       
    31 import javax.swing.*;
       
    32 import javax.swing.plaf.metal.DefaultMetalTheme;
       
    33 import javax.swing.plaf.metal.MetalLookAndFeel;
       
    34 import javax.swing.plaf.metal.MetalTheme;
       
    35 import javax.swing.plaf.metal.OceanTheme;
       
    36 import java.awt.event.ItemEvent;
       
    37 import java.awt.event.ItemListener;
       
    38 
       
    39 public class bug6587742 extends JApplet {
       
    40     public void init() {
       
    41         TestPanel panel = new TestPanel();
       
    42 
       
    43         setContentPane(panel);
       
    44     }
       
    45 
       
    46     private class TestPanel extends JPanel {
       
    47         private final JComboBox cbThemes = new JComboBox();
       
    48 
       
    49         private TestPanel() {
       
    50             // Fill cbThemes
       
    51             cbThemes.addItem(new OceanTheme());
       
    52             cbThemes.addItem(new DefaultMetalTheme());
       
    53 
       
    54             cbThemes.addItemListener(new ItemListener() {
       
    55                 public void itemStateChanged(ItemEvent e) {
       
    56                     MetalTheme theme = (MetalTheme) cbThemes.getSelectedItem();
       
    57 
       
    58                     if (theme != null) {
       
    59                         MetalLookAndFeel.setCurrentTheme(theme);
       
    60 
       
    61                         // re-install the Metal Look and Feel
       
    62                         try {
       
    63                             UIManager.setLookAndFeel(new MetalLookAndFeel());
       
    64                         } catch (UnsupportedLookAndFeelException e1) {
       
    65                             JOptionPane.showMessageDialog(TestPanel.this, "Can't change theme: " + e1.getMessage(),
       
    66                                     "Error", JOptionPane.ERROR_MESSAGE);
       
    67 
       
    68                             return;
       
    69                         }
       
    70 
       
    71                         SwingUtilities.updateComponentTreeUI(bug6587742.this);
       
    72                     }
       
    73                 }
       
    74             });
       
    75 
       
    76             JPanel pnVertical = new JPanel();
       
    77 
       
    78             pnVertical.setLayout(new BoxLayout(pnVertical, BoxLayout.Y_AXIS));
       
    79 
       
    80             for (int i = 0; i < 12; i++) {
       
    81                 int filled = i >> 2;
       
    82 
       
    83                 pnVertical.add(createSlider(false, filled > 1 ? null : Boolean.valueOf(filled == 1), (i & 2) == 0,
       
    84                         (i & 1) != 0));
       
    85             }
       
    86 
       
    87             JPanel pnHorizontal = new JPanel();
       
    88 
       
    89             pnHorizontal.setLayout(new BoxLayout(pnHorizontal, BoxLayout.X_AXIS));
       
    90 
       
    91             for (int i = 0; i < 12; i++) {
       
    92                 int filled = i >> 2;
       
    93 
       
    94                 pnHorizontal.add(createSlider(true, filled > 1 ? null : Boolean.valueOf(filled == 1), (i & 2) == 0,
       
    95                         (i & 1) != 0));
       
    96             }
       
    97 
       
    98             JTabbedPane tpSliders = new JTabbedPane();
       
    99 
       
   100             tpSliders.add("Vertical sliders", pnVertical);
       
   101             tpSliders.add("Horizontal sliders", pnHorizontal);
       
   102 
       
   103             setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
       
   104 
       
   105             add(new JLabel("Select theme:"));
       
   106             add(cbThemes);
       
   107             add(tpSliders);
       
   108         }
       
   109     }
       
   110 
       
   111     private static JSlider createSlider(boolean vertical, Boolean filled, boolean enabled, boolean inverted) {
       
   112         JSlider result = new JSlider(vertical ? SwingConstants.VERTICAL : SwingConstants.HORIZONTAL, 0, 100, 50);
       
   113 
       
   114         result.setMajorTickSpacing(20);
       
   115         result.setMinorTickSpacing(5);
       
   116         result.setPaintTicks(true);
       
   117         result.setPaintLabels(true);
       
   118         result.setEnabled(enabled);
       
   119 
       
   120         if (filled != null) {
       
   121             result.putClientProperty("JSlider.isFilled", filled);
       
   122         }
       
   123 
       
   124         result.setInverted(inverted);
       
   125         result.setToolTipText("<html>vertical = " + vertical + "<br>enabled = " + enabled + "<br>filled = " + filled +
       
   126                 "<br>inverted = " + inverted + "</html>");
       
   127 
       
   128         return result;
       
   129     }
       
   130 }