/*******************************************************************************
* Copyright (c) 2012 Google, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Google, Inc. - initial API and implementation
*******************************************************************************/
package com.windowtester.swt.event.server;
import java.util.ArrayList;
import java.util.List;
import com.windowtester.internal.debug.Tracer;
import com.windowtester.recorder.event.ISemanticEvent;
import com.windowtester.recorder.event.IUISemanticEvent;
import com.windowtester.recorder.event.meta.RecorderAssertionHookAddedEvent;
import com.windowtester.recorder.event.meta.RecorderMetaEvent;
import com.windowtester.swt.event.recorder.EventRecorderPlugin;
public class WorkbenchEventController extends SemanticEventServer {
/** The list of cached events */
private List _events = new ArrayList();
public WorkbenchEventController() {
super("WorkbenchEventController");
}
/**
* Handle the given event.
* @param event - the event to handle
*/
protected void handleEvent(ISemanticEvent event) {
Tracer.trace(EventRecorderPlugin.PLUGIN_ID+"/trace", "Received event: " + toString(event));
if (event == RecorderMetaEvent.RESTART)
_events.clear(); //clear events for a fresh start
//store event for later code generation
if(event instanceof IUISemanticEvent || event instanceof RecorderAssertionHookAddedEvent)
_events.add(event);
super.handleEvent(event);
}
private String toString(ISemanticEvent event) {
//serialization sometimes breaks toString()
//in this case, return a generic description
try {
return event.toString();
} catch(Throwable e) {
return "Event type: " + event.getClass();
}
}
public List getEvents(){
return _events;
}
}