3789983e89
Reviewed-by: darcy, ihse
256 lines
9.7 KiB
Java
256 lines
9.7 KiB
Java
/*
|
|
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 only, as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
* version 2 for more details (a copy is included in the LICENSE file that
|
|
* accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU General Public License version
|
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*
|
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
* or visit www.oracle.com if you need additional information or have any
|
|
* questions.
|
|
*/
|
|
|
|
/*
|
|
* @test
|
|
* @key headful
|
|
* @bug 8016665
|
|
* @summary verifies different behaviour of JFileChooser changing orientation
|
|
* @run main JFileChooserOrientation
|
|
*/
|
|
import java.awt.Color;
|
|
import java.awt.ComponentOrientation;
|
|
import java.awt.GridBagConstraints;
|
|
import java.awt.GridBagLayout;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import javax.swing.BorderFactory;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JComboBox;
|
|
import javax.swing.JFileChooser;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JTextArea;
|
|
import javax.swing.SwingUtilities;
|
|
import javax.swing.UIManager;
|
|
import javax.swing.UnsupportedLookAndFeelException;
|
|
|
|
public class JFileChooserOrientation {
|
|
|
|
private static JFrame frame;
|
|
private static GridBagLayout layout;
|
|
private static JPanel panel;
|
|
private static JPanel lookAndFeelPanel;
|
|
private static JPanel orientationPanel;
|
|
private static JPanel passFailPanel;
|
|
private static JTextArea instructionsTextArea;
|
|
private static JLabel lookAndFeelLabel;
|
|
private static JLabel orientationLabel;
|
|
private static JComboBox lookAndFeelComboBox;
|
|
private static JComboBox orientationComboBox;
|
|
|
|
private static JButton fileChooserButton;
|
|
private static JButton passButton;
|
|
private static JButton failButton;
|
|
private static JFileChooser openChooser;
|
|
private static UIManager.LookAndFeelInfo[] lookAndFeelArray;
|
|
|
|
private static final String orientationLTR = " Left to Right";
|
|
private static final String orientationRTL = " Right to Left";
|
|
private static final String fileChooserString = "Show File Chooser";
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
createManualTestUI();
|
|
}
|
|
|
|
private static void createManualTestUI() throws Exception {
|
|
SwingUtilities.invokeAndWait(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
layout = new GridBagLayout();
|
|
GridBagConstraints gbc = new GridBagConstraints();
|
|
panel = new JPanel(layout);
|
|
gbc.fill = GridBagConstraints.HORIZONTAL;
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 0;
|
|
instructionsTextArea = new JTextArea();
|
|
String instructions
|
|
= "1) Select Look and feel from combobox"
|
|
+ "\n2) Select component orientation"
|
|
+ "\n3) Click on \"Show File Chooser\""
|
|
+ "\n4) Check if orientation is as selected"
|
|
+ "\n5) Press \"Cancel\" on the File Chooser Dialog"
|
|
+ "\n\n Perform steps 1- 4 for all LAFs & orientations"
|
|
+ "\n If all are correct press Pass or else press Fail";
|
|
instructionsTextArea.setText(instructions);
|
|
instructionsTextArea.setBorder(
|
|
BorderFactory.createLineBorder(Color.black));
|
|
panel.add(instructionsTextArea, gbc);
|
|
|
|
lookAndFeelPanel = new JPanel();
|
|
lookAndFeelPanel.setBorder(
|
|
BorderFactory.createLineBorder(Color.black));
|
|
lookAndFeelLabel = new JLabel("Look And Feel: ");
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 0;
|
|
lookAndFeelPanel.add(lookAndFeelLabel, gbc);
|
|
|
|
lookAndFeelComboBox = new JComboBox();
|
|
lookAndFeelArray = UIManager.getInstalledLookAndFeels();
|
|
for (UIManager.LookAndFeelInfo lookAndFeelItem
|
|
: lookAndFeelArray) {
|
|
lookAndFeelComboBox.addItem(lookAndFeelItem.getClassName());
|
|
}
|
|
gbc.gridx = 1;
|
|
gbc.gridy = 0;
|
|
lookAndFeelPanel.add(lookAndFeelComboBox, gbc);
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 1;
|
|
panel.add(lookAndFeelPanel, gbc);
|
|
|
|
orientationPanel = new JPanel();
|
|
orientationPanel.setBorder(
|
|
BorderFactory.createLineBorder(Color.black));
|
|
orientationLabel = new JLabel("Orientation: ");
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 0;
|
|
orientationPanel.add(orientationLabel, gbc);
|
|
|
|
orientationComboBox = new JComboBox();
|
|
orientationComboBox.addItem(orientationLTR);
|
|
orientationComboBox.addItem(orientationRTL);
|
|
gbc.gridx = 1;
|
|
gbc.gridy = 0;
|
|
orientationPanel.add(orientationComboBox, gbc);
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 2;
|
|
panel.add(orientationPanel, gbc);
|
|
|
|
fileChooserButton = new JButton(fileChooserString);
|
|
fileChooserButton.setActionCommand(fileChooserString);
|
|
|
|
fileChooserButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
try {
|
|
showFileChooser();
|
|
} catch (Exception ex) {
|
|
Logger.getLogger(JFileChooserOrientation.class
|
|
.getName()).log(Level.SEVERE, null, ex);
|
|
}
|
|
|
|
}
|
|
});
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 3;
|
|
panel.add(fileChooserButton, gbc);
|
|
|
|
passFailPanel = new JPanel();
|
|
passFailPanel.setBorder(BorderFactory.createLineBorder(Color.black));
|
|
passButton = new JButton(" Pass ");
|
|
passButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
try {
|
|
pass();
|
|
} catch (Exception ex) {
|
|
Logger.getLogger(JFileChooserOrientation.class
|
|
.getName()).log(Level.SEVERE, null, ex);
|
|
}
|
|
}
|
|
});
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 0;
|
|
passFailPanel.add(passButton, gbc);
|
|
failButton = new JButton(" Fail ");
|
|
failButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
try {
|
|
fail();
|
|
} catch (Exception ex) {
|
|
Logger.getLogger(JFileChooserOrientation.class
|
|
.getName()).log(Level.SEVERE, null, ex);
|
|
}
|
|
}
|
|
});
|
|
gbc.gridx = 1;
|
|
gbc.gridy = 0;
|
|
passFailPanel.add(failButton, gbc);
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 4;
|
|
panel.add(passFailPanel, gbc);
|
|
frame = new JFrame();
|
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
frame.setContentPane(panel);
|
|
frame.pack();
|
|
frame.setVisible(true);
|
|
}
|
|
});
|
|
}
|
|
|
|
private static void pass() throws Exception
|
|
{
|
|
|
|
frame.dispose();
|
|
|
|
}
|
|
|
|
private static void fail() throws Exception
|
|
{
|
|
|
|
frame.dispose();
|
|
System.err.println(lookAndFeelComboBox.getSelectedItem().toString()
|
|
+ " : Incorrect Orientation");
|
|
}
|
|
|
|
private static void showFileChooser() throws Exception {
|
|
if (tryLookAndFeel(lookAndFeelComboBox.getSelectedItem().toString())) {
|
|
|
|
openChooser = new JFileChooser();
|
|
|
|
ComponentOrientation orientation
|
|
= ComponentOrientation.UNKNOWN;
|
|
|
|
switch (orientationComboBox.getSelectedItem().toString()) {
|
|
case orientationLTR:
|
|
orientation = ComponentOrientation.LEFT_TO_RIGHT;
|
|
break;
|
|
case orientationRTL:
|
|
orientation = ComponentOrientation.RIGHT_TO_LEFT;
|
|
break;
|
|
}
|
|
openChooser.setComponentOrientation(orientation);
|
|
openChooser.showOpenDialog(frame);
|
|
|
|
}
|
|
}
|
|
private static boolean tryLookAndFeel(String lookAndFeelString)
|
|
throws Exception {
|
|
try {
|
|
UIManager.setLookAndFeel(
|
|
lookAndFeelString);
|
|
} catch (UnsupportedLookAndFeelException
|
|
| ClassNotFoundException
|
|
| InstantiationException
|
|
| IllegalAccessException e) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}
|