Fixed: [ Issue 44 ] Add ability to hyperlink to imported files
https://code.google.com/p/protobuf-dt/issues/detail?id=44
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/scoping/SingleDirectoryFileResolver_resolveUri_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/scoping/SingleDirectoryFileResolver_resolveUri_Test.java
index fd213cf..6ec8b87 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/scoping/SingleDirectoryFileResolver_resolveUri_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/scoping/SingleDirectoryFileResolver_resolveUri_Test.java
@@ -14,14 +14,14 @@
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.*;
 
-import org.eclipse.core.resources.IProject;
 import org.eclipse.emf.common.util.URI;
 import org.junit.*;
 
 import com.google.eclipse.protobuf.ui.preferences.paths.PathsPreferences;
+import com.google.eclipse.protobuf.ui.util.Resources;
 
 /**
- * Tests for <code>{@link SingleDirectoryFileResolver#resolveUri(String, URI, PathsPreferences, IProject)}</code>.
+ * Tests for <code>{@link SingleDirectoryFileResolver#resolveUri(String, URI, PathsPreferences)}</code>.
  *
  * @author alruiz@google.com (Alex Ruiz)
  */
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/ImportHyperlink.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/ImportHyperlink.java
index ea8f08f..7ea01d6 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/ImportHyperlink.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/ImportHyperlink.java
@@ -12,11 +12,12 @@
 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.jface.text.IRegion;
 import org.eclipse.jface.text.hyperlink.IHyperlink;
 import org.eclipse.ui.*;
-import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.ide.FileStoreEditorInput;
 import org.eclipse.ui.part.FileEditorInput;
 
 import com.google.eclipse.protobuf.ui.util.Resources;
@@ -47,19 +48,19 @@
   private void openFromWorkspace() {
     IFile file = resources.file(importUri);
     IEditorInput editorInput = new FileEditorInput(file);
-    IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-    try {
-      page.openEditor(editorInput, "com.google.eclipse.protobuf.Protobuf");
-    } catch (PartInitException e) {
-      e.printStackTrace();
-    }
+    openFile(editorInput, "com.google.eclipse.protobuf.Protobuf");
   }
 
   private void openFromFileSystem() {
-    IFileStore fileStore = EFS.getLocalFileSystem().getStore(resources.pathOf(importUri));
+    IFileStore fileStore = EFS.getLocalFileSystem().getStore(new Path(importUri.toFileString()));
+    IEditorInput editorInput = new FileStoreEditorInput(fileStore);
+    openFile(editorInput, "org.eclipse.ui.DefaultTextEditor");
+  }
+
+  private void openFile(IEditorInput editorInput, String editorId) {
     IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
     try {
-      IDE.openEditorOnFileStore(page, fileStore);
+      page.openEditor(editorInput, editorId);
     } catch (PartInitException e) {
       e.printStackTrace();
     }
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Resources.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Resources.java
index abe9f2d..62a381b 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Resources.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Resources.java
@@ -47,17 +47,12 @@
    * @return a handle to file identified by the given URI.
    */
   public IFile file(URI uri) {
-    IPath resourcePath = pathOf(uri);
     IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-    return root.getFile(resourcePath);
+    return root.getFile(pathOf(uri));
   }
 
-  /**
-   * Constructs a new path from the given URI.
-   * @param uri the given URI.
-   * @return the constructed path.
-   */
-  public IPath pathOf(URI uri) {
-    return new Path(uri.toPlatformString(true));
+  private IPath pathOf(URI uri) {
+    String s = uri.toPlatformString(true);
+    return new Path(s);
   }
 }