ImportHyperlink is created by Guice now.
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ImportHyperlink.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ImportHyperlink.java
index 77d7f2c..51d6277 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ImportHyperlink.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ImportHyperlink.java
@@ -8,13 +8,18 @@
*/
package com.google.eclipse.protobuf.ui.editor.hyperlinking;
+import static org.eclipse.emf.common.util.URI.createURI;
+
import org.apache.log4j.Logger;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.*;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.ui.PartInitException;
+import org.eclipse.xtext.nodemodel.INode;
+import com.google.eclipse.protobuf.protobuf.Import;
import com.google.eclipse.protobuf.ui.editor.FileOpener;
+import com.google.inject.Inject;
/**
* A hyperlink for imported .proto files.
@@ -24,14 +29,14 @@
class ImportHyperlink implements IHyperlink {
private static Logger logger = Logger.getLogger(ImportHyperlink.class);
- private final URI importUri;
- private final IRegion region;
- private final FileOpener fileOpener;
+ @Inject private FileOpener fileOpener;
- ImportHyperlink(URI importUri, IRegion region, FileOpener fileOpener) {
- this.importUri = importUri;
- this.region = region;
- this.fileOpener = fileOpener;
+ private URI importUri;
+ private IRegion region;
+
+ void update(Import anImport, INode importUriNode) {
+ importUri = createURI(anImport.getImportURI());
+ region = new Region(importUriNode.getOffset(), importUriNode.getLength());
}
@Override public void open() {
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ProtobufHyperlinkDetector.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ProtobufHyperlinkDetector.java
index db92a2e..3347629 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ProtobufHyperlinkDetector.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ProtobufHyperlinkDetector.java
@@ -9,7 +9,6 @@
package com.google.eclipse.protobuf.ui.editor.hyperlinking;
import static com.google.eclipse.protobuf.protobuf.ProtobufPackage.Literals.IMPORT__IMPORT_URI;
-import static org.eclipse.emf.common.util.URI.createURI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.*;
@@ -23,8 +22,7 @@
import com.google.eclipse.protobuf.model.util.*;
import com.google.eclipse.protobuf.protobuf.Import;
-import com.google.eclipse.protobuf.ui.editor.FileOpener;
-import com.google.inject.Inject;
+import com.google.inject.*;
/**
* Represents an implementation of interface <code>{@link IHyperlinkDetector}</code> to find and convert
@@ -37,8 +35,8 @@
@Inject private INodes nodes;
@Inject private EObjectAtOffsetHelper eObjectAtOffsetHelper;
- @Inject private FileOpener fileOpener;
@Inject private Imports imports;
+ @Inject private Provider<ImportHyperlink> importHyperlinkProvider;
@Override public IHyperlink[] detectHyperlinks(ITextViewer textViewer, final IRegion region,
final boolean canShowMultipleHyperlinks) {
@@ -66,12 +64,11 @@
return NO_HYPERLINKS;
}
INode importUriNode = nodes.firstNodeForFeature(anImport, IMPORT__IMPORT_URI);
- int importUriLength = importUriNode.getLength();
- if (importUriLength == 0) {
+ if (importUriNode.getLength() == 0) {
return NO_HYPERLINKS;
}
- IRegion importUriRegion = new Region(importUriNode.getOffset(), importUriLength);
- IHyperlink hyperlink = new ImportHyperlink(createURI(anImport.getImportURI()), importUriRegion, fileOpener);
+ ImportHyperlink hyperlink = importHyperlinkProvider.get();
+ hyperlink.update(anImport, importUriNode);
return new IHyperlink[] { hyperlink };
}
});