1 package org.simantics.document.ui.graphfile;
3 import java.net.MalformedURLException;
6 import org.eclipse.swt.widgets.Display;
7 import org.eclipse.ui.PartInitException;
8 import org.eclipse.ui.PlatformUI;
9 import org.eclipse.ui.browser.IWebBrowser;
10 import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
11 import org.simantics.db.ReadGraph;
12 import org.simantics.db.Resource;
13 import org.simantics.db.common.request.ReadRequest;
14 import org.simantics.db.exception.DatabaseException;
15 import org.simantics.document.DocumentResource;
16 import org.simantics.document.ui.Activator;
17 import org.simantics.ui.SimanticsUI;
18 import org.simantics.ui.workbench.editor.AbstractResourceEditorAdapter;
19 import org.simantics.ui.workbench.editor.EditorAdapter;
20 import org.simantics.utils.ui.ExceptionUtils;
22 public class UrlEditorAdapter extends AbstractResourceEditorAdapter implements EditorAdapter {
24 public UrlEditorAdapter() {
25 super("Browser",Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/world.png"));
30 public boolean canHandle(ReadGraph g, Resource r) throws DatabaseException {
31 DocumentResource doc = DocumentResource.getInstance(g);
32 if (!g.isInstanceOf(r, doc.UrlDocument))
34 String url = g.getPossibleRelatedValue(r, doc.HasUrl);
39 protected void openEditor(final Resource input) throws Exception {
40 SimanticsUI.getSession().asyncRequest(new ReadRequest() {
43 public void run(ReadGraph graph) throws DatabaseException {
44 DocumentResource doc = DocumentResource.getInstance(graph);
45 final String urlString = graph.getPossibleRelatedValue(input, doc.HasUrl);
46 if (urlString == null)
49 Display.getDefault().asyncExec(new Runnable() {
53 IWorkbenchBrowserSupport browserSupport = PlatformUI.getWorkbench().getBrowserSupport();
56 browser = browserSupport.createBrowser(null);
57 URL url = new URL(urlString);
60 } catch (PartInitException e1) {
61 ExceptionUtils.logAndShowError(e1);
62 } catch (MalformedURLException e2) {
63 ExceptionUtils.logAndShowError(e2);