/**
*
*/
package org.erlide.test_support.popup.actions;
import java.net.MalformedURLException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IWorkbench;
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.part.FileEditorInput;
import org.eclipse.ui.progress.UIJob;
import org.erlide.util.ErlLogger;
public class OpenResultsJob extends UIJob {
private final IFile report;
private final IFile trace;
public OpenResultsJob(final String name, final IFile report, final IFile trace) {
super(name);
this.report = report;
this.trace = trace;
}
@Override
public IStatus runInUIThread(final IProgressMonitor mon) {
openInBrowser(report);
openInEditor(trace);
return Status.OK_STATUS;
}
private void openInEditor(final IFile file) {
if (file == null) {
return;
}
try {
file.refreshLocal(IResource.DEPTH_ZERO, null);
} catch (final CoreException e) {
}
final IWorkbench wbench = PlatformUI.getWorkbench();
final IWorkbenchPage page = wbench.getActiveWorkbenchWindow().getActivePage();
final IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry()
.getDefaultEditor(file.getName());
try {
page.openEditor(new FileEditorInput(file), desc.getId());
} catch (final PartInitException e) {
ErlLogger.error(e);
}
}
private void openInBrowser(final IFile file) {
if (file == null) {
return;
}
final IWorkbench wbench = PlatformUI.getWorkbench();
final IWorkbenchBrowserSupport browserSupport = wbench.getBrowserSupport();
try {
file.refreshLocal(IResource.DEPTH_ZERO, null);
} catch (final CoreException e1) {
}
if (file.exists() && file.isAccessible()) {
try {
final int style = IWorkbenchBrowserSupport.NAVIGATION_BAR
| IWorkbenchBrowserSupport.AS_EDITOR;
final String name = file.getName();
final String browserId = getName() + "_" + name;
IWebBrowser browser;
browser = browserSupport.createBrowser(style, browserId, name, null);
try {
browser.openURL(file.getRawLocationURI().toURL());
} catch (final MalformedURLException e) {
// should not happen
ErlLogger.error(e);
}
} catch (final PartInitException e) {
ErlLogger.error(e);
}
}
}
}