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