1 /* 2 @test %I% %E% 3 @bug 6315717 4 @summary verifies that sun.awt.enableExtraMouseButtons is working 5 @author Andrei Dmitriev : area=awt.mouse 6 @run main/othervm -Dsun.awt.enableExtraMouseButtons=true ToolkitPropertyTest_Enable 7 */ 8 9 import java.awt.*; 10 import java.awt.event.*; 11 12 // Testcase 1: set to TRUE (via jtreg option) 13 // Testcase 2: set to TRUE and check that extra events are coming 14 // check that standard events are coming 15 16 public class ToolkitPropertyTest_Enable extends Frame { 17 static boolean propValue; 18 static Robot robot; 19 static int [] buttonsPressed; 20 static int [] buttonsReleased; 21 static int [] buttonsClicked; 22 23 public static void main(String []s){ 24 propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons")); 25 buttonsPressed = new int [MouseInfo.getNumberOfButtons()]; 26 buttonsReleased = new int [MouseInfo.getNumberOfButtons()]; 27 buttonsClicked = new int [MouseInfo.getNumberOfButtons()]; 28 29 ToolkitPropertyTest_Enable frame = new ToolkitPropertyTest_Enable(); 30 frame.setSize(300, 300); 31 frame.setVisible(true); 32 33 MouseAdapter ma1 = new MouseAdapter() { 34 public void mousePressed(MouseEvent e) { 35 buttonsPressed[e.getButton() - 1] += 1; 36 System.out.println("PRESSED "+e); 37 } 38 public void mouseReleased(MouseEvent e) { 39 buttonsReleased[e.getButton() - 1] += 1; 40 System.out.println("RELEASED "+e); 41 } 42 public void mouseClicked(MouseEvent e) { 43 buttonsClicked[e.getButton() - 1] += 1; 44 System.out.println("CLICKED "+e); 45 } 46 }; 47 // frame.addMouseListener(ma1); 48 49 try { 50 robot = new Robot(); 51 robot.delay(1000); 52 robot.mouseMove(frame.getLocationOnScreen().x + frame.getWidth()/2, frame.getLocationOnScreen().y + frame.getHeight()/2); 53 54 System.out.println("Property = " + propValue); 55 testCase0(); 56 57 testCase1(); 58 System.out.println("Number Of Buttons = "+ MouseInfo.getNumberOfButtons()); 59 60 boolean lessThenFourButtons = (MouseInfo.getNumberOfButtons() <= 3); 61 if ( !lessThenFourButtons ) { 62 frame.addMouseListener(ma1); 63 testCase2(); 64 // testCase3(); 65 // testCase4(); 66 frame.removeMouseListener(ma1); 67 } 68 } catch (Exception e){ 69 e.printStackTrace(); 70 throw new RuntimeException(e); 71 } 72 73 } 74 75 public static void testCase0(){ 76 if (!propValue){ 77 throw new RuntimeException("TEST FAILED (0) : System property sun.awt.enableExtraMouseButtons = " + propValue); 78 } 79 } 80 81 public static void testCase1(){ 82 if (Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled() == false){ 83 throw new RuntimeException("TEST FAILED (1) : setting to TRUE. enabled = " + Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()); 84 } 85 } 86 87 public static void testCase2(){ 88 emptyArrays(); 89 //we can't post a message from an unexistent button 90 int [] buttonMasks = new int[MouseInfo.getNumberOfButtons()]; // = InputEvent.getButtonDownMasks(); 91 for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){ 92 buttonMasks[i] = InputEvent.getMaskForButton(i+1); 93 System.out.println("TEST: buttonMasks["+ i +"] = " + buttonMasks[i]); 94 } 95 96 for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){ 97 System.out.println("button to press = " +(i+1) + " : value passed to robot = " +buttonMasks[i]); 98 robot.mousePress(buttonMasks[i]); 99 robot.delay(70); 100 robot.mouseRelease(buttonMasks[i]); 101 robot.delay(200); 102 } 103 robot.delay(1000); 104 105 for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){ 106 if (buttonsPressed[i] != 1 || buttonsReleased[i] != 1 || buttonsClicked[i] !=1 ) { 107 throw new RuntimeException("TESTCASE 2 FAILED : button " + (i+1) + " wasn't single pressed|released|clicked : "+ buttonsPressed[i] +" : "+ buttonsReleased[i] +" : "+ buttonsClicked[i]); 108 } 109 } 110 } 111 112 public static void emptyArrays(){ 113 for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){ 114 buttonsPressed[i] = 0; 115 buttonsReleased[i] = 0; 116 buttonsClicked[i] = 0; 117 } 118 } 119 120 }