package com.anjlab.eclipse.e4.tapestry5.handlers;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;
import com.anjlab.eclipse.tapestry5.Activator;
import com.anjlab.eclipse.tapestry5.EclipseUtils;
import com.anjlab.eclipse.tapestry5.TapestryContext;
import com.anjlab.eclipse.tapestry5.TapestryUtils;
/**
* Our sample handler extends AbstractHandler, an IHandler base class.
* @see org.eclipse.core.commands.IHandler
* @see org.eclipse.core.commands.AbstractHandler
*/
public class QuickSwitchHandler extends AbstractHandler
{
/**
* The constructor.
*/
public QuickSwitchHandler()
{
}
/**
* the command has been executed, so extract extract the needed information
* from the application context.
*/
public Object execute(ExecutionEvent event) throws ExecutionException
{
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
TapestryContext context = Activator.getDefault().getTapestryContext(window);
if (context == null || context.isEmpty())
{
return null;
}
TapestryContextInformationControl informationControl =
new TapestryContextInformationControl(window, context);
informationControl.setLocation(
EclipseUtils.getPopupLocation(
window,
window.getActivePage().getActivePartReference(),
informationControl.computeSizeHint()));
// TODO When inside module class try to map current method to service instrumenter
informationControl.setInput(TapestryUtils.getTapestryFileFromPage(window.getActivePage()));
informationControl.open();
informationControl.setFocus();
return null;
}
}