WindowRecorder.java :  » Testing » abbot-1.0.1 » abbot » editor » recorder » Java Open Source

Java Open Source » Testing » abbot 1.0.1 
abbot 1.0.1 » abbot » editor » recorder » WindowRecorder.java
package abbot.editor.recorder;

import java.awt.*;
import java.awt.event.*;

import abbot.script.*;
import abbot.tester.WindowTracker;

/**
 * Record basic semantic events you might find on an Window. <p>
 */
public class WindowRecorder extends ContainerRecorder {

    private Window window;
    private Point where;
    private Dimension size;

    public WindowRecorder(Resolver resolver) {
        super(resolver);
    }

    protected void init(int recordingType) {
        super.init(recordingType);
        window = null;
        where = null;
        size = null;
    }

    protected boolean isWindowEvent(AWTEvent event) {
        return (event.getSource() instanceof Window
                // Checking for window ready avoids picking up
                // spurious resize events on first window show
                && ((Window)event.getSource()).isShowing() 
                && WindowTracker.getTracker().
                isWindowReady((Window)event.getSource())
                && (event.getID() == ComponentEvent.COMPONENT_MOVED
                    || event.getID() == ComponentEvent.COMPONENT_RESIZED))
            || event.getID() == WindowEvent.WINDOW_CLOSING
            || super.isWindowEvent(event);
    }

    protected boolean parseWindowEvent(AWTEvent event) {
        int id = event.getID();
        boolean consumed = true;
        if (id == ComponentEvent.COMPONENT_MOVED) {
            window = (Window)event.getSource();
            where = window.getLocationOnScreen();
            setFinished(true);
        }
        else if (id == ComponentEvent.COMPONENT_RESIZED) {
            window = (Window)event.getSource();
            size = window.getSize();
            setFinished(true);
        }
        else if (id == WindowEvent.WINDOW_CLOSING) {
            window = (Window)event.getSource();
            setFinished(true);
        }
        else {
            consumed = super.parseWindowEvent(event);
        }
        return consumed;
    }

    protected Step createStep() {
        Step step;
        if (getRecordingType() == SE_WINDOW && window != null) {
            if (where != null) {
                step = createMove(window, where);
            }
            else if (size != null) {
                step = createResize(window, size);
            }
            else {
                step = createClose(window);
            }
        }
        else {
            step = super.createStep();
        }
        return step;
    }

    protected Step createClose(Window window) {
        ComponentReference ref = getResolver().addComponent(window);
        return new Action(getResolver(),
                          null, "actionClose",
                          new String[] { ref.getID() }, Window.class);
    }

    protected Step createMove(Window window, Point where) {
        // If the window is not yet showing, ignore it
        if (!WindowTracker.getTracker().isWindowReady(window))
            return null;

        ComponentReference ref = getResolver().addComponent(window);
        return new Action(getResolver(), 
                          null, "actionMove",
                          new String[] { ref.getID(),
                                         String.valueOf(where.x),
                                         String.valueOf(where.y)
                          }, Window.class);
    }

    protected Step createResize(Window window, Dimension size) {
        // If the window is not yet showing, ignore it
        if (!window.isShowing())
            return null;

        ComponentReference ref = getResolver().addComponent(window);
        return new Action(getResolver(), 
                          null, "actionResize",
                          new String[] { ref.getID(),
                                         String.valueOf(size.width),
                                         String.valueOf(size.height),
                          },
                          Window.class);
    }
}

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.