]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.ui/src/org/simantics/document/ui/graphfile/UrlEditorAdapter.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.ui / src / org / simantics / document / ui / graphfile / UrlEditorAdapter.java
1 package org.simantics.document.ui.graphfile;\r
2 \r
3 import java.net.MalformedURLException;\r
4 import java.net.URL;\r
5 \r
6 import org.eclipse.swt.widgets.Display;\r
7 import org.eclipse.ui.PartInitException;\r
8 import org.eclipse.ui.PlatformUI;\r
9 import org.eclipse.ui.browser.IWebBrowser;\r
10 import org.eclipse.ui.browser.IWorkbenchBrowserSupport;\r
11 import org.simantics.db.ReadGraph;\r
12 import org.simantics.db.Resource;\r
13 import org.simantics.db.common.request.ReadRequest;\r
14 import org.simantics.db.exception.DatabaseException;\r
15 import org.simantics.document.DocumentResource;\r
16 import org.simantics.document.ui.Activator;\r
17 import org.simantics.ui.SimanticsUI;\r
18 import org.simantics.ui.workbench.editor.AbstractResourceEditorAdapter;\r
19 import org.simantics.ui.workbench.editor.EditorAdapter;\r
20 import org.simantics.utils.ui.ExceptionUtils;\r
21 \r
22 public class UrlEditorAdapter extends AbstractResourceEditorAdapter implements EditorAdapter {\r
23         \r
24         public UrlEditorAdapter() {\r
25                 super("Browser",Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/world.png"));\r
26         }\r
27 \r
28         \r
29         @Override\r
30         public boolean canHandle(ReadGraph g, Resource r) throws DatabaseException {\r
31                 DocumentResource doc = DocumentResource.getInstance(g);\r
32                 if (!g.isInstanceOf(r, doc.UrlDocument))\r
33                         return false;\r
34                 String url = g.getPossibleRelatedValue(r, doc.HasUrl);\r
35                 return url != null;\r
36         }\r
37         \r
38         @Override\r
39         protected void openEditor(final Resource input) throws Exception {\r
40                 SimanticsUI.getSession().asyncRequest(new ReadRequest() {\r
41                         \r
42                         @Override\r
43                         public void run(ReadGraph graph) throws DatabaseException {\r
44                                 DocumentResource doc = DocumentResource.getInstance(graph);\r
45                                 final String urlString = graph.getPossibleRelatedValue(input, doc.HasUrl);\r
46                                 if (urlString == null)\r
47                                         return;\r
48                                 \r
49                                 Display.getDefault().asyncExec(new Runnable() {\r
50                                         \r
51                                         @Override\r
52                                         public void run() {\r
53                                                 IWorkbenchBrowserSupport browserSupport = PlatformUI.getWorkbench().getBrowserSupport();                                        \r
54                                                 IWebBrowser browser;\r
55                                                 try {\r
56                                                         browser = browserSupport.createBrowser(null);\r
57                                                         URL url = new URL(urlString);\r
58                                                         browser.openURL(url);\r
59                                                         \r
60                                                 } catch (PartInitException e1) {\r
61                                                         ExceptionUtils.logAndShowError(e1);\r
62                                                 } catch (MalformedURLException e2) {\r
63                                                         ExceptionUtils.logAndShowError(e2);\r
64                                                 }\r
65 \r
66                                         }\r
67                                 });\r
68                         }\r
69                 });\r
70                 \r
71 \r
72         }\r
73 \r
74 \r
75 }\r