package org.eclipse.iee.web.ui.handlers;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.core.commands.IHandlerListener;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.ITypeRoot;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.browser.IWebBrowser;
import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.ui.ide.ResourceUtil;
public class OpenBrowserHandler implements IHandler {
@Override
public void addHandlerListener(IHandlerListener handlerListener) {
}
@Override
public void dispose() {
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event)
.getActivePage();
IEditorPart targetEditor = page.getActiveEditor();
ITypeRoot root = JavaUI.getEditorInputTypeRoot(targetEditor.getEditorInput());
if (root == null) {
return null;
}
IResource resource = ResourceUtil.getResource(targetEditor.getEditorInput());
String projectName = resource.getProject().getName();
String clazz = root.findPrimaryType().getFullyQualifiedName();
StringBuilder sb = new StringBuilder();
sb.append("http://localhost:8080/test/doc/");
try {
sb.append(URLEncoder.encode(projectName, "utf-8"));
sb.append('/');
sb.append(URLEncoder.encode(clazz, "utf-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
IWorkbenchBrowserSupport support = PlatformUI.getWorkbench()
.getBrowserSupport();
IWebBrowser browser;
try {
browser = support.getExternalBrowser();
browser.openURL(new URL(sb.toString()));
} catch (PartInitException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isHandled() {
return true;
}
@Override
public void removeHandlerListener(IHandlerListener handlerListener) {
}
}