diff options
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskRelationHyperlinkDetector.java')
-rw-r--r-- | org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskRelationHyperlinkDetector.java | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskRelationHyperlinkDetector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskRelationHyperlinkDetector.java deleted file mode 100644 index ee5ca57b8..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskRelationHyperlinkDetector.java +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Tasktop Technologies and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.editors; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.Region; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.AbstractTaskHyperlinkDetector; -import org.eclipse.mylyn.tasks.ui.TaskHyperlink; - -/** - * @author Steffen Pingel - */ -public class TaskRelationHyperlinkDetector extends AbstractTaskHyperlinkDetector { - - private static Pattern HYPERLINK_PATTERN = Pattern.compile("([^\\s,]+)"); //$NON-NLS-1$ - - @Override - public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) { - if (region.getLength() > 0) { - return super.detectHyperlinks(textViewer, region, canShowMultipleHyperlinks); - } else { - if (textViewer.getDocument() == null) { - return null; - } - - TaskRepository taskRepository = getTaskRepository(textViewer); - if (taskRepository != null) { - String prefix = extractPrefix(textViewer, region.getOffset()); - String postfix = extractPostfix(textViewer, region.getOffset()); - String taskKey = prefix + postfix; - if (taskKey.length() > 0) { - Region hyperlinkRegion = new Region(region.getOffset() - prefix.length(), taskKey.length()); - return new IHyperlink[] { new TaskHyperlink(hyperlinkRegion, taskRepository, taskKey) }; - } - } - } - return null; - } - - @Override - protected List<IHyperlink> detectHyperlinks(ITextViewer textViewer, String content, int index, int contentOffset) { - List<IHyperlink> links = null; - for (TaskRepository repository : getTaskRepositories(textViewer)) { - Matcher m = HYPERLINK_PATTERN.matcher(content); - while (m.find()) { - if (links == null) { - links = new ArrayList<IHyperlink>(); - } - Region region = new Region(contentOffset + m.start(), m.end() - m.start()); - links.add(new TaskHyperlink(region, repository, m.group())); - } - } - return links; - } - - private String extractPrefix(ITextViewer viewer, int offset) { - int i = offset; - IDocument document = viewer.getDocument(); - if (i > document.getLength()) { - return ""; //$NON-NLS-1$ - } - - try { - if (isSeparator(document.getChar(i))) { - return ""; //$NON-NLS-1$ - } - while (i > 0) { - char ch = document.getChar(i - 1); - if (isSeparator(ch)) { - break; - } - i--; - } - return document.get(i, offset - i); - } catch (BadLocationException e) { - return ""; //$NON-NLS-1$ - } - } - - private String extractPostfix(ITextViewer viewer, int offset) { - int i = offset; - IDocument document = viewer.getDocument(); - int length = document.getLength(); - if (i > length) { - return ""; //$NON-NLS-1$ - } - - try { - if (isSeparator(document.getChar(i))) { - return ""; //$NON-NLS-1$ - } - while (i < length - 1) { - char ch = document.getChar(i + 1); - if (isSeparator(ch)) { - break; - } - i++; - } - return document.get(offset, i - offset + 1); - } catch (BadLocationException e) { - } - return ""; //$NON-NLS-1$ - } - - private boolean isSeparator(char ch) { - return Character.isWhitespace(ch) || ch == ','; - } - -} |