blob: a6d3ac50866c0f21cd86c8cce30ac5747dcd5606 [file] [log] [blame]
/*
* Copyright (c) 2005, 2016, 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
* @bug 4296930 5033603 7092679
* @summary Make sure that Java runtime detects the platform time zone
* correctly. Also make sure that the system time zone detection code
* detects the "Automatically adjust clock for daylight saving
* changes" setting correctly on Windows.
* @run applet/manual=yesno DefaultTimeZoneTest.html
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
public class DefaultTimeZoneTest extends JApplet implements Runnable {
static final String FORMAT = "yyyy-MM-dd HH:mm:ss zzzz (XXX)";
JLabel tzid;
JLabel label;
SimpleDateFormat sdf = new SimpleDateFormat(FORMAT);
JButton button = new JButton("English");
Thread clock;
boolean english = false;
@Override
public void init() {
tzid = new JLabel("Time zone ID: " + sdf.getTimeZone().getID(), SwingConstants.CENTER);
tzid.setAlignmentX(Component.CENTER_ALIGNMENT);
label = new JLabel(sdf.format(new Date()), SwingConstants.CENTER);
label.setAlignmentX(Component.CENTER_ALIGNMENT);
button.addActionListener(new ActionListener() {
@Override
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e) {
english = (english == false);
Locale loc = english ? Locale.US : Locale.getDefault();
sdf = new SimpleDateFormat(FORMAT, loc);
button.setLabel(!english ? "English" : "Local");
}
});
button.setAlignmentX(Component.CENTER_ALIGNMENT);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
panel.add(Box.createRigidArea(new Dimension(0, 10)));
panel.add(tzid);
panel.add(Box.createRigidArea(new Dimension(0, 5)));
panel.add(label);
panel.add(Box.createRigidArea(new Dimension(0, 10)));
panel.add(button);
getContentPane().add(panel);
}
@Override
public void start() {
clock = new Thread(this);
clock.start();
}
@Override
public void stop() {
clock = null;
}
@Override
public void run() {
Thread me = Thread.currentThread();
while (clock == me) {
// Reset the default time zone so that
// TimeZone.getDefault will detect the platform time zone
TimeZone.setDefault(null);
System.setProperty("user.timezone", "");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(tz);
tzid.setText("Time zone ID: " + tz.getID());
label.setText(sdf.format(new Date()));
repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}
}