FileDocCategorySizeDatePackage
EventTester.javaAPI DocExample5075Thu Apr 04 21:33:02 BST 1996None

EventTester.java

// This example is from the book _Java in a Nutshell_ by David Flanagan.
// Written by David Flanagan.  Copyright (c) 1996 O'Reilly & Associates.
// You may study, use, modify, and distribute this example for any purpose.
// This example is provided WITHOUT WARRANTY either expressed or implied.

import java.applet.*;
import java.awt.*;

public class EventTester extends Applet {
    // display the instructions
    public void paint(Graphics g)  { 
        g.drawString("Click, drag, and type in this window.", 10, 20);
    }
    
    // Handle mouse events
    public boolean mouseDown(Event e, int x, int y)  {
        showStatus(modifier_key_names(e.modifiers) + 
               "Mouse Down: [" + x + "," + y + "]");
        return true;
    }
    public boolean mouseUp(Event e, int x, int y)  {
        showStatus(modifier_key_names(e.modifiers) + 
               "Mouse Up: [" + x + "," + y + "]");
        return true;
    }
    public boolean mouseDrag(Event e, int x, int y)  {
        showStatus(modifier_key_names(e.modifiers) + 
               "Mouse Drag: [" + x + "," + y + "]");
        return true;
    }
    public boolean mouseEnter(Event e, int x, int y)  {
        showStatus("Mouse Enter: [" + x + "," + y + "]");
        return true;
    }
    public boolean mouseExit(Event e, int x, int y)  {
        showStatus("Mouse Exit: [" + x + "," + y + "]");
        return true;
    }
    
    // Handle focus events
    public boolean gotFocus(Event e, Object what)  {
        showStatus("Got Focus");
        return true;
    }
    public boolean lostFocus(Event e, Object what)  {
        showStatus("Lost Focus");
        return true;
    }
    
    // Handle key down and key up events
    public boolean keyDown(Event e, int key)  {
        int flags = e.modifiers;
        if (e.id == Event.KEY_PRESS)            // a regular key
            showStatus("Key Down: " 
                   + modifier_key_names(flags) 
                   + key_name(e));
        else if (e.id == Event.KEY_ACTION)      // a function key
            showStatus("Function Key Down: "
                   + modifier_key_names(flags)
                   + function_key_name(key));
        return true;
    }
    public boolean keyUp(Event e, int key)  {
        int flags = e.modifiers;
        if (e.id == Event.KEY_RELEASE)             // a regular key
            showStatus("Key Up: " 
                   + modifier_key_names(flags)
                   + key_name(e));
        else if (e.id == Event.KEY_ACTION_RELEASE) // a function key
            showStatus("Function Key Up: "
                   + modifier_key_names(flags)
                   + function_key_name(key));
        return true;
    }
    
    // The remaining methods help us sort out the various key events

    // Return the current list of modifier keys
    private String modifier_key_names(int flags) {
        String s = "[ ";
        if (flags == 0) return "";
        if ((flags & Event.SHIFT_MASK) != 0) s += "Shift ";
        if ((flags & Event.CTRL_MASK) != 0) s += "Control ";
        if ((flags & Event.META_MASK) != 0) s += "Meta ";
        if ((flags & Event.ALT_MASK) != 0) s += "Alt ";
        s += "] ";
        return s;
    }
    
    // Return the name of a regular (ASCII) key.
    private String key_name(Event e) {
        char c = (char) e.key;
        
        // If CTRL flag is set, handle ASCII control characters.
        if (e.controlDown()) {
            if (c < ' ') {
                c += '@';
                return "^" + c;
            }
        }
        else {
            // If CTRL flag is not set, then certain ASCII
            // control characters have special meaning.
            switch (c) {
                case '\n': return "Return";
                case '\t': return "Tab";
                case '\033': return "Escape";
                case '\010': return "Backspace";
            }
        }

        // Handle the remaining possibilities.
        if (c == '\177') return "Delete";
        else if (c == ' ') return "Space";
        else return String.valueOf(c);
    }
    
    // Return the name of a function key.
    private String function_key_name(int key) {
        switch(key) {
            case Event.HOME: return "Home";
            case Event.END: return "End";
            case Event.PGUP: return "Page Up";
            case Event.PGDN: return "Page Down";
            case Event.UP: return "Up Arrow";
            case Event.DOWN: return "Down Arrow";
            case Event.LEFT: return "Left Arrow";
            case Event.RIGHT: return "Right Arrow";
            case Event.F1: return "F1";    case Event.F2: return "F2";
            case Event.F3: return "F3";    case Event.F4: return "F4";
            case Event.F5: return "F5";    case Event.F6: return "F6";
            case Event.F7: return "F7";    case Event.F8: return "F8";
            case Event.F9: return "F9";    case Event.F10: return "F10";
            case Event.F11: return "F11";    case Event.F12: return "F12";
        }
        return "Unknown Function Key";
    }
}