--- /dev/null 2016-06-16 13:38:05.430861000 +0530 +++ new/test/java/awt/keyboard/Bug8158478/Test8158478.java 2016-06-16 14:39:30.679659011 +0530 @@ -0,0 +1,151 @@ +/* + * Copyright (c) 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 8158478 +* @requires (os.family == "linux") +* @summary To Verify X11 Keysym unicode for topt +* @run main/manual Test8158478 + */ +import java.awt.Button; +import java.awt.Frame; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Panel; +import java.awt.TextArea; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.concurrent.CountDownLatch; + +public class Test8158478 { + + public static void main(String args[]) throws Exception { + final CountDownLatch latch = new CountDownLatch(1); + + X11KeysymTest test = new X11KeysymTest(latch); + Thread T1 = new Thread(test); + T1.start(); + + // wait for latch to complete + latch.await(); + + if (test.testResult == false) { + throw new RuntimeException("User Clicked Fail! " + + "Wrong Unicode Character"); + } + } +} + +class X11KeysymTest implements Runnable { + + private static GridBagLayout layout; + private static Panel mainControlPanel; + private static Panel resultButtonPanel; + private static TextArea instructionTextArea; + private static Button passButton; + private static Button failButton; + private static Frame mainFrame; + private static TextArea testArea; + private final CountDownLatch latch; + public volatile boolean testResult = false; + + public X11KeysymTest(CountDownLatch latch) { + this.latch = latch; + } + + @Override + public void run() { + createUI(); + } + + public final void createUI() { + + mainFrame = new Frame("X11 Keysym Test"); + layout = new GridBagLayout(); + mainControlPanel = new Panel(layout); + resultButtonPanel = new Panel(layout); + + GridBagConstraints gbc = new GridBagConstraints(); + String instructions + = "INSTRUCTIONS:" + + "\n Have a custom X11 keyboard layout with" + + " \"topt\" assigned to some key: " + + "\n Map \"topt\" key to \"Caps_Lock\" by executing" + + " following command in Terminal:" + + "\n xmodmap -e \"keysym Caps_Lock = topt\"." + + "\n Go to TextArea below and press \"CAPSLOCK\" key" + + "\n If Symbol: " + "\u252c" + " is displayed then test Pass," + + "\n If Symbol: " + "\u242c" + " is displayed then test Fail," + + "\n Execute the below command to reset the above settigs, " + + "\n setxkbmap -layout us"; + + instructionTextArea = new TextArea(); + instructionTextArea.setText(instructions); + instructionTextArea.setEnabled(true); + + gbc.gridx = 0; + gbc.gridy = 0; + gbc.fill = GridBagConstraints.HORIZONTAL; + mainControlPanel.add(instructionTextArea, gbc); + + testArea = new TextArea("TextArea"); + gbc.gridx = 0; + gbc.gridy = 1; + mainControlPanel.add(testArea, gbc); + passButton = new Button("Pass"); + passButton.setActionCommand("Pass"); + passButton.addActionListener((ActionEvent e) -> { + testResult = true; + mainFrame.dispose(); + latch.countDown(); + + }); + failButton = new Button("Fail"); + failButton.setActionCommand("Fail"); + failButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + testResult = false; + mainFrame.dispose(); + latch.countDown(); + } + }); + gbc.gridx = 0; + gbc.gridy = 0; + resultButtonPanel.add(passButton, gbc); + gbc.gridx = 1; + gbc.gridy = 0; + resultButtonPanel.add(failButton, gbc); + + gbc.gridx = 0; + gbc.gridy = 2; + mainControlPanel.add(resultButtonPanel, gbc); + + mainFrame.add(mainControlPanel); + mainFrame.pack(); + mainFrame.setVisible(true); + } + +} +