package tool.commands.findtype;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceProxy;
import org.eclipse.core.resources.IResourceProxyVisitor;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.ui.ide.IDE;
/**
* Our sample handler extends AbstractHandler, an IHandler base class.
* @see org.eclipse.core.commands.IHandler
* @see org.eclipse.core.commands.AbstractHandler
*/
public class FindTypeHandler extends AbstractHandler {
/**
* The constructor.
*/
public FindTypeHandler() {
}
/**
* 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);
ISelectionService selectionService = window.getSelectionService();
ISelection selection = selectionService.getSelection();
String targetType = "";
if (selection instanceof ITextSelection){
targetType = ((ITextSelection)selection).getText();
} if (selection instanceof ITreeSelection){
ITreeSelection treeSelection = (ITreeSelection)selection;
if (treeSelection.getFirstElement() != null)
targetType = treeSelection.getFirstElement().toString();
}
TypeSelectionDialog dialog = new TypeSelectionDialog(window.getShell(), true);
dialog.setInitialPattern(targetType);
dialog.setBlockOnOpen(true);
if (dialog.open() == Dialog.OK){
// find the resource and edit it
Object[] result = dialog.getResult();
if (result.length > 0){
IFile file = (IFile) result[0];
IWorkbenchPage page = window.getActivePage();
try {
IDE.openEditor(page, file);
} catch (PartInitException e) {
ErrorDialog.openError(window.getShell(),
"Error opening " + file.getName(), e.getMessage(), Status.OK_STATUS );
}
}
}
return null;
}
}