package de.ugoe.cs.eventbench.jfcmonitor; import java.awt.AWTEvent; import java.awt.Component; import java.awt.event.AWTEventListener; import java.awt.event.FocusEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.io.IOException; import java.io.OutputStreamWriter; import de.ugoe.cs.util.StringTools; /** *
* This class implements monitoring of AWT and Swing mouse and keyboard events. * Each of the events is written to an output stream. *
* * @author Steffen Herbold * @version 1.0 */ public class JFCListener implements AWTEventListener { /** ** Writer for logging events. *
*/ final private OutputStreamWriter outputWriter; /** ** Constructor. Creates a new JFCListener with a given * {@link OutputStreamWriter}, where the monitored information is logged. *
* * @param outputWriter * writer for the logged information */ public JFCListener(OutputStreamWriter outputWriter) { this.outputWriter = outputWriter; try { outputWriter.write("" + StringTools.ENDLINE); outputWriter.write("* Writes all received {@link MouseEvent}s and {@link KeyEvent}s to the * {@link #outputWriter}. *
* * @see java.awt.event.AWTEventListener#eventDispatched(java.awt.AWTEvent) */ @Override public void eventDispatched(AWTEvent event) { StringBuilder builder = new StringBuilder(); if (event instanceof MouseEvent) { if (!isMouseMovement(event.getID())) { MouseEvent mouseEvent = (MouseEvent) event; builder.append("* Appends information about the event to a {@link StringBuilder}. *
* * @param builder * {@link StringBuilder} where the information is appended * @param event * event whose information is appended */ private void addSourceInfo(StringBuilder builder, AWTEvent event) { builder.append(" " + StringTools.ENDLINE); } /** ** Checks if the Id of an {@link AWTEvent} is a mouse movement Id. *
* * @param eventId * id of the {@link AWTEvent} * @return true, if the event is a mouse movement event; false otherwise */ private boolean isMouseMovement(int eventId) { return eventId == MouseEvent.MOUSE_MOVED || eventId == MouseEvent.MOUSE_DRAGGED || eventId == MouseEvent.MOUSE_ENTERED || eventId == MouseEvent.MOUSE_EXITED; } }