diff options
author | spingel | 2008-02-12 07:06:11 +0000 |
---|---|---|
committer | spingel | 2008-02-12 07:06:11 +0000 |
commit | 3f4765da41c0dbf3a8031b3e15f6db70e4e762db (patch) | |
tree | def80e797779d916c97c4975f783661ee4835a8e /org.eclipse.mylyn.trac.ui | |
parent | f30e5ca6109bfb768034166554527ebd6b852a89 (diff) | |
download | org.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')
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)); } } |