TrialListenerManager.java revision 13978:1993af50385d
1/* 2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23package org.netbeans.jemmy.explorer; 24 25import java.awt.AWTEvent; 26import java.awt.Component; 27import java.awt.event.KeyEvent; 28import java.awt.event.KeyListener; 29import java.awt.event.MouseEvent; 30import java.awt.event.MouseListener; 31import java.awt.event.MouseMotionListener; 32 33import org.netbeans.jemmy.JemmyProperties; 34import org.netbeans.jemmy.Outputable; 35import org.netbeans.jemmy.QueueTool; 36import org.netbeans.jemmy.TestOut; 37 38/** 39 * Auxiliary class to find an event sequence which should be posted to reproduce 40 * user actions. 41 * 42 * @author Alexandre Iline (alexandre.iline@oracle.com) 43 * 44 */ 45public class TrialListenerManager implements Outputable { 46 47 Component comp; 48 TrialMouseListener mListener; 49 TrialMouseMotionListener mmListener; 50 TrialKeyListener kListener; 51 TestOut output; 52 53 /** 54 * Contructor. 55 * 56 * @param comp Component to display event sequence for. 57 */ 58 public TrialListenerManager(Component comp) { 59 this.comp = comp; 60 mListener = new TrialMouseListener(); 61 mmListener = new TrialMouseMotionListener(); 62 kListener = new TrialKeyListener(); 63 output = JemmyProperties.getCurrentOutput(); 64 } 65 66 @Override 67 public void setOutput(TestOut output) { 68 this.output = output; 69 } 70 71 @Override 72 public TestOut getOutput() { 73 return output; 74 } 75 76 /** 77 * Removes mouse listener. 78 * 79 * @see #addMouseListener 80 */ 81 public void removeMouseListener() { 82 comp.removeMouseListener(mListener); 83 } 84 85 /** 86 * Adds mouse listener. 87 * 88 * @see #removeMouseListener 89 */ 90 public void addMouseListener() { 91 removeMouseListener(); 92 comp.addMouseListener(mListener); 93 } 94 95 /** 96 * Removes mouse motion listener. 97 * 98 * @see #addMouseMotionListener 99 */ 100 public void removeMouseMotionListener() { 101 comp.removeMouseMotionListener(mmListener); 102 } 103 104 /** 105 * Adds mouse motion listener. 106 * 107 * @see #removeMouseMotionListener 108 */ 109 public void addMouseMotionListener() { 110 removeMouseMotionListener(); 111 comp.addMouseMotionListener(mmListener); 112 } 113 114 /** 115 * Removes key listener. 116 * 117 * @see #addKeyListener 118 */ 119 public void removeKeyListener() { 120 comp.removeKeyListener(kListener); 121 } 122 123 /** 124 * Adds key listener. 125 * 126 * @see #removeKeyListener 127 */ 128 public void addKeyListener() { 129 removeKeyListener(); 130 comp.addKeyListener(kListener); 131 } 132 133 void printEvent(final AWTEvent event) { 134 // if event != null run toString in dispatch thread 135 String eventToString = new QueueTool().invokeSmoothly( 136 new QueueTool.QueueAction<String>("event.toString()") { 137 @Override 138 public String launch() { 139 return event.toString(); 140 } 141 } 142 ); 143 output.printLine(eventToString); 144 } 145 146 private class TrialMouseListener implements MouseListener { 147 148 @Override 149 public void mouseClicked(MouseEvent e) { 150 printEvent(e); 151 } 152 153 @Override 154 public void mouseEntered(MouseEvent e) { 155 printEvent(e); 156 } 157 158 @Override 159 public void mouseExited(MouseEvent e) { 160 printEvent(e); 161 } 162 163 @Override 164 public void mousePressed(MouseEvent e) { 165 printEvent(e); 166 } 167 168 @Override 169 public void mouseReleased(MouseEvent e) { 170 printEvent(e); 171 } 172 } 173 174 private class TrialMouseMotionListener implements MouseMotionListener { 175 176 @Override 177 public void mouseDragged(MouseEvent e) { 178 printEvent(e); 179 } 180 181 @Override 182 public void mouseMoved(MouseEvent e) { 183 printEvent(e); 184 } 185 } 186 187 private class TrialKeyListener implements KeyListener { 188 189 @Override 190 public void keyPressed(KeyEvent e) { 191 printEvent(e); 192 } 193 194 @Override 195 public void keyReleased(KeyEvent e) { 196 printEvent(e); 197 } 198 199 @Override 200 public void keyTyped(KeyEvent e) { 201 printEvent(e); 202 } 203 } 204} 205