Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspingel2008-02-12 07:06:11 +0000
committerspingel2008-02-12 07:06:11 +0000
commit3f4765da41c0dbf3a8031b3e15f6db70e4e762db (patch)
treedef80e797779d916c97c4975f783661ee4835a8e /org.eclipse.mylyn.trac.ui
parentf30e5ca6109bfb768034166554527ebd6b852a89 (diff)
downloadorg.eclipse.mylyn.tasks-3f4765da41c0dbf3a8031b3e15f6db70e4e762db.tar.gz
org.eclipse.mylyn.tasks-3f4765da41c0dbf3a8031b3e15f6db70e4e762db.tar.xz
org.eclipse.mylyn.tasks-3f4765da41c0dbf3a8031b3e15f6db70e4e762db.zip
NEW - bug 215978: limit extended Trac hyperlinking support to task editor
https://bugs.eclipse.org/bugs/show_bug.cgi?id=215978
Diffstat (limited to 'org.eclipse.mylyn.trac.ui')
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkDetector.java3
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkUtil.java41
2 files changed, 35 insertions, 9 deletions
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkDetector.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkDetector.java
index 1e5630039..f4d10a8f1 100644
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkDetector.java
+++ b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkDetector.java
@@ -14,6 +14,7 @@ import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.mylyn.internal.trac.core.TracCorePlugin;
import org.eclipse.mylyn.tasks.core.TaskRepository;
/**
@@ -26,7 +27,7 @@ public class TracHyperlinkDetector extends AbstractHyperlinkDetector {
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
TaskRepository taskRepository = (TaskRepository) getAdapter(TaskRepository.class);
- if (taskRepository != null) {
+ if (taskRepository != null && TracCorePlugin.REPOSITORY_KIND.equals(taskRepository.getConnectorKind())) {
IDocument document = textViewer.getDocument();
if (document == null) {
return null;
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkUtil.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkUtil.java
index 5281b183b..5e059cbca 100644
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkUtil.java
+++ b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkUtil.java
@@ -5,7 +5,6 @@
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
-
package org.eclipse.mylyn.internal.trac.ui;
import java.io.UnsupportedEncodingException;
@@ -26,6 +25,11 @@ import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.ui.TaskHyperlink;
import org.eclipse.mylyn.tasks.ui.WebHyperlink;
+/**
+ * Utility class for detecting Trac hyperlinks.
+ *
+ * @author Steffen Pingel
+ */
public class TracHyperlinkUtil {
static Pattern ticketPattern = Pattern.compile("(ticket:|#)(\\d+)");
@@ -61,8 +65,28 @@ public class TracHyperlinkUtil {
static Pattern filesPattern = Pattern.compile("source:/*([\\w\\./\\-_]+)(@(\\d+)(#L(\\d+))?)?");
/**
+ * Detects hyperlinks to Trac tickets.
+ */
+ public static IHyperlink[] findTicketHyperlinks(TaskRepository repository, String text, int lineOffset,
+ int regionOffset) {
+ List<IHyperlink> links = null;
+ Matcher m = ticketPattern.matcher(text);
+ while (m.find()) {
+ if (isInRegion(lineOffset, m)) {
+ String id = m.group(2);
+ if (links == null) {
+ links = new ArrayList<IHyperlink>();
+ }
+ links.add(new TaskHyperlink(determineRegion(regionOffset, m), repository, id));
+ }
+ }
+ return links == null ? null : links.toArray(new IHyperlink[0]);
+ }
+
+ /**
+ * Detects Trac hyperlinks.
+ *
* <ul>
- * <li>Tickets: #1 or ticket:1
* <li>Ticket comments: comment:ticket:1:2
* <li>Reports: {1} or report:1
* <li>Changesets: r1, [1], changeset:1 or (restricted) [1/trunk], changeset:1/trunk
@@ -79,22 +103,23 @@ public class TracHyperlinkUtil {
*
* @see http://trac.edgewall.org/wiki/TracLinks
*/
- public static IHyperlink[] findHyperlinks(TaskRepository repository, String text, int lineOffset, int regionOffset) {
+ public static IHyperlink[] findTracHyperlinks(TaskRepository repository, String text, int lineOffset,
+ int regionOffset) {
List<IHyperlink> links = new ArrayList<IHyperlink>();
- Matcher m = commentPattern.matcher(text);
+ Matcher m = ticketPattern.matcher(text);
while (m.find()) {
if (isInRegion(lineOffset, m)) {
- String id = m.group(1);
- // String comment = m.group(2);
+ String id = m.group(2);
links.add(new TaskHyperlink(determineRegion(regionOffset, m), repository, id));
}
}
- m = ticketPattern.matcher(text);
+ m = commentPattern.matcher(text);
while (m.find()) {
if (isInRegion(lineOffset, m)) {
- String id = m.group(2);
+ String id = m.group(1);
+ // String comment = m.group(2);
links.add(new TaskHyperlink(determineRegion(regionOffset, m), repository, id));
}
}

Back to the top