package edu.ysu.itrace.gaze; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.widgets.Tree; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchPartReference; import edu.ysu.itrace.gaze.handlers.BrowserGazeHandler; import edu.ysu.itrace.gaze.handlers.StyledTextGazeHandler; import edu.ysu.itrace.gaze.handlers.ProjectExplorerGazeHandler; /** * Creates IGazeHandlers from objects within the Workbench. */ public class GazeHandlerFactory { /** * Creates and returns a new IGazeHandler object from the specified object * and partRef, or returns null if no handler object is defined for that object. */ public static IGazeHandler createHandler(Object target, IWorkbenchPartReference partRef) { // create gaze handler for a StyledText widget within an EditorPart if (target instanceof StyledText && partRef instanceof IEditorReference) { return new StyledTextGazeHandler(target); //can go back to using partRef } else if (target instanceof Browser) { //create gaze handler for a Browser Stack overflow and Bug Report widget //cannot get associated partRef return new BrowserGazeHandler(target); } else if (target instanceof Tree && partRef instanceof IViewReference && partRef.getTitle().equals("Project Explorer")) { //create gaze handler for a Project Explorer Tree return new ProjectExplorerGazeHandler(target, partRef); } return null; } }