jdk/test/javax/swing/JSpinner/WrongEditorTextFieldFont/WrongEditorTextFieldFont.java
author goetz
Thu, 07 Jul 2016 16:21:45 +0200
changeset 40128 e635645d2a8a
parent 30921 cb07b8856f61
permissions -rw-r--r--
8160974: [TESTBUG] Mark more headful tests with @key headful. Reviewed-by: serb, simonis
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30921
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     1
/*
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     2
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     4
 *
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     7
 * published by the Free Software Foundation.
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     8
 *
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    13
 * accompanied this code).
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    14
 *
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    18
 *
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    21
 * questions.
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    22
 */
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    23
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    24
import java.awt.FlowLayout;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    25
import java.awt.Font;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    26
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    27
import javax.swing.JFrame;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    28
import javax.swing.JSpinner;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    29
import javax.swing.SwingUtilities;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    30
import javax.swing.UIManager;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    31
import javax.swing.UnsupportedLookAndFeelException;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    32
import javax.swing.plaf.UIResource;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    33
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    34
import static javax.swing.JSpinner.*;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    35
import static javax.swing.UIManager.getInstalledLookAndFeels;
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    36
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    37
/**
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    38
 * @test
40128
e635645d2a8a 8160974: [TESTBUG] Mark more headful tests with @key headful.
goetz
parents: 30921
diff changeset
    39
 * @key headful
30921
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    40
 * @bug 5036022
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    41
 * @author Sergey Bylokhov
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    42
 */
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    43
public class WrongEditorTextFieldFont implements Runnable {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    44
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    45
    private static final Font USERS_FONT = new Font("dialog", Font.BOLD, 41);
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    46
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    47
    public static void main(final String[] args) throws Exception {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    48
        for (final UIManager.LookAndFeelInfo laf : getInstalledLookAndFeels()) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    49
            SwingUtilities.invokeAndWait(() -> setLookAndFeel(laf));
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    50
            SwingUtilities.invokeAndWait(new WrongEditorTextFieldFont());
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    51
        }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    52
    }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    53
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    54
    @Override
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    55
    public void run() {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    56
        final JFrame frame1 = new JFrame();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    57
        try {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    58
            testDefaultFont(frame1);
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    59
        } finally {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    60
            frame1.dispose();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    61
        }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    62
    }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    63
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    64
    private static void testDefaultFont(final JFrame frame) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    65
        final JSpinner spinner = new JSpinner();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    66
        final JSpinner spinner_u = new JSpinner();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    67
        frame.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 50));
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    68
        frame.getContentPane().add(spinner);
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    69
        frame.getContentPane().add(spinner_u);
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    70
        frame.pack();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    71
        frame.setLocationRelativeTo(null);
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    72
        frame.setVisible(true);
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    73
        final DefaultEditor ed = (DefaultEditor) spinner.getEditor();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    74
        final DefaultEditor ed_u = (DefaultEditor) spinner_u.getEditor();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    75
        ed_u.getTextField().setFont(USERS_FONT);
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    76
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    77
        for (int i = 5; i < 40; i += 5) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    78
            /*
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    79
             * Validate that the font of the text field is changed to the
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    80
             * font of JSpinner if the font of text field was not set by the
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    81
             * user.
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    82
             */
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    83
            final Font tff = ed.getTextField().getFont();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    84
            if (!(tff instanceof UIResource)) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    85
                throw new RuntimeException("Font must be UIResource");
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    86
            }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    87
            if (spinner.getFont().getSize() != tff.getSize()) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    88
                throw new RuntimeException("Rrong size");
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    89
            }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    90
            spinner.setFont(new Font("dialog", Font.BOLD, i));
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    91
            /*
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    92
             * Validate that the font of the text field is NOT changed to the
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    93
             * font of JSpinner if the font of text field was set by the user.
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    94
             */
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    95
            final Font tff_u = ed_u.getTextField().getFont();
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    96
            if (tff_u instanceof UIResource || !tff_u.equals(USERS_FONT)) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    97
                throw new RuntimeException("Font must NOT be UIResource");
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    98
            }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
    99
            if (spinner_u.getFont().getSize() == tff_u.getSize()) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   100
                throw new RuntimeException("Wrong size");
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   101
            }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   102
            spinner_u.setFont(new Font("dialog", Font.BOLD, i));
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   103
        }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   104
    }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   105
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   106
    private static void setLookAndFeel(final UIManager.LookAndFeelInfo laf) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   107
        try {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   108
            UIManager.setLookAndFeel(laf.getClassName());
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   109
            System.out.println("LookAndFeel: " + laf.getClassName());
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   110
        } catch (ClassNotFoundException | InstantiationException |
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   111
                UnsupportedLookAndFeelException | IllegalAccessException e) {
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   112
            throw new RuntimeException(e);
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   113
        }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   114
    }
cb07b8856f61 5036022: JSpinner does not reflect new font on subsequent calls to setFont
serb
parents:
diff changeset
   115
}