Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 298364 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/tasks/tests/ui/editor/TaskUrlHyperlinkDetectorTest.java (-1 / +1 lines)
Lines 30-36 Link Here
30
public class TaskUrlHyperlinkDetectorTest extends TestCase {
30
public class TaskUrlHyperlinkDetectorTest extends TestCase {
31
31
32
	protected IHyperlink[] detect(final String text, int start, int length) {
32
	protected IHyperlink[] detect(final String text, int start, int length) {
33
		AbstractHyperlinkDetector detector = new TaskUrlHyperlinkDetector();
33
		AbstractHyperlinkDetector detector = new TaskUrlHyperlinkDetector(true);
34
		return detector.detectHyperlinks(new TextViewer() {
34
		return detector.detectHyperlinks(new TextViewer() {
35
			@Override
35
			@Override
36
			public IDocument getDocument() {
36
			public IDocument getDocument() {
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskUrlHyperlink.java (-1 / +17 lines)
Lines 14-27 Link Here
14
import org.eclipse.jface.text.IRegion;
14
import org.eclipse.jface.text.IRegion;
15
import org.eclipse.jface.text.hyperlink.URLHyperlink;
15
import org.eclipse.jface.text.hyperlink.URLHyperlink;
16
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
16
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
17
import org.eclipse.osgi.util.NLS;
17
18
18
/**
19
/**
19
 * @author Rob Elves
20
 * @author Rob Elves
20
 */
21
 */
21
public class TaskUrlHyperlink extends URLHyperlink {
22
public class TaskUrlHyperlink extends URLHyperlink {
22
23
23
	public TaskUrlHyperlink(IRegion region, String urlString) {
24
	private final String hyperlinkText;
25
26
	public TaskUrlHyperlink(IRegion region, String urlString, String hyperlinkText) {
24
		super(region, urlString);
27
		super(region, urlString);
28
		this.hyperlinkText = hyperlinkText;
29
	}
30
31
	public TaskUrlHyperlink(IRegion region, String urlString) {
32
		this(region, urlString, null);
25
	}
33
	}
26
34
27
	@Override
35
	@Override
Lines 29-32 Link Here
29
		TasksUiUtil.openTask(getURLString());
37
		TasksUiUtil.openTask(getURLString());
30
	}
38
	}
31
39
40
	@Override
41
	public String getHyperlinkText() {
42
		if (hyperlinkText != null) {
43
			return hyperlinkText;
44
		}
45
		return NLS.bind(Messages.TaskUrlHyperlink_Open_URL_in_Task_Editor, getURLString());
46
	}
47
32
}
48
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/messages.properties (+1 lines)
Lines 148-150 Link Here
148
TaskEditorExtensionSettingsContribution_Editor=Task Editor Settings
148
TaskEditorExtensionSettingsContribution_Editor=Task Editor Settings
149
TaskEditorExtensionSettingsContribution_Plain_Text=Plain Text
149
TaskEditorExtensionSettingsContribution_Plain_Text=Plain Text
150
TaskEditorExtensionSettingsContribution_Select_the_capabilities_of_the_task_editor=Select the capabilities of the task editor
150
TaskEditorExtensionSettingsContribution_Select_the_capabilities_of_the_task_editor=Select the capabilities of the task editor
151
TaskUrlHyperlink_Open_URL_in_Task_Editor=Open ''{0}'' in Task Editor
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/Messages.java (+2 lines)
Lines 262-265 Link Here
262
	public static String TaskEditorExtensionSettingsContribution_Plain_Text;
262
	public static String TaskEditorExtensionSettingsContribution_Plain_Text;
263
263
264
	public static String TaskEditorExtensionSettingsContribution_Select_the_capabilities_of_the_task_editor;
264
	public static String TaskEditorExtensionSettingsContribution_Select_the_capabilities_of_the_task_editor;
265
266
	public static String TaskUrlHyperlink_Open_URL_in_Task_Editor;
265
}
267
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewerConfiguration.java (-1 / +1 lines)
Lines 112-118 Link Here
112
	public IHyperlinkDetector[] getDefaultHyperlinkDetectors(ISourceViewer sourceViewer, Mode mode) {
112
	public IHyperlinkDetector[] getDefaultHyperlinkDetectors(ISourceViewer sourceViewer, Mode mode) {
113
		IHyperlinkDetector[] detectors;
113
		IHyperlinkDetector[] detectors;
114
		if (mode == Mode.URL) {
114
		if (mode == Mode.URL) {
115
			detectors = new IHyperlinkDetector[] { new TaskUrlHyperlinkDetector() };
115
			detectors = new IHyperlinkDetector[] { new TaskUrlHyperlinkDetector(true) };
116
		} else if (mode == Mode.TASK) {
116
		} else if (mode == Mode.TASK) {
117
			detectors = new IHyperlinkDetector[] { new TaskHyperlinkDetector() };
117
			detectors = new IHyperlinkDetector[] { new TaskHyperlinkDetector() };
118
		} else if (mode == Mode.TASK_RELATION) {
118
		} else if (mode == Mode.TASK_RELATION) {
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskUrlHyperlinkDetector.java (-6 / +40 lines)
Lines 23-29 Link Here
23
import org.eclipse.jface.text.ITextViewer;
23
import org.eclipse.jface.text.ITextViewer;
24
import org.eclipse.jface.text.Region;
24
import org.eclipse.jface.text.Region;
25
import org.eclipse.jface.text.hyperlink.IHyperlink;
25
import org.eclipse.jface.text.hyperlink.IHyperlink;
26
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
27
import org.eclipse.mylyn.internal.tasks.ui.actions.CopyTaskDetailsAction;
28
import org.eclipse.mylyn.internal.tasks.ui.actions.CopyTaskDetailsAction.Mode;
29
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
30
import org.eclipse.mylyn.tasks.core.TaskRepository;
26
import org.eclipse.mylyn.tasks.ui.AbstractTaskHyperlinkDetector;
31
import org.eclipse.mylyn.tasks.ui.AbstractTaskHyperlinkDetector;
32
import org.eclipse.osgi.util.NLS;
27
33
28
/**
34
/**
29
 * Detects URLs based on a regular expression.
35
 * Detects URLs based on a regular expression.
Lines 37-42 Link Here
37
	// so we do the same here
43
	// so we do the same here
38
	private static final Pattern URL_PATTERN = Pattern.compile("([a-zA-Z][a-zA-Z+.-]{0,10}://[a-zA-Z0-9%._~!$&?#'()*+,;:@/=-]*[a-zA-Z0-9%_~!$&?#'(*+;:@/=-])"); //$NON-NLS-1$
44
	private static final Pattern URL_PATTERN = Pattern.compile("([a-zA-Z][a-zA-Z+.-]{0,10}://[a-zA-Z0-9%._~!$&?#'()*+,;:@/=-]*[a-zA-Z0-9%_~!$&?#'(*+;:@/=-])"); //$NON-NLS-1$
39
45
46
	private final boolean detectAllUrls;
47
48
	/**
49
	 * @param detectAllUrls
50
	 *            if false, only known task URLs are detected
51
	 */
52
	public TaskUrlHyperlinkDetector(boolean detectAllUrls) {
53
		this.detectAllUrls = detectAllUrls;
54
	}
55
56
	public TaskUrlHyperlinkDetector() {
57
		this(false);
58
	}
59
40
	@Override
60
	@Override
41
	protected List<IHyperlink> detectHyperlinks(ITextViewer textViewer, String content, int indexInContent,
61
	protected List<IHyperlink> detectHyperlinks(ITextViewer textViewer, String content, int indexInContent,
42
			int contentOffset) {
62
			int contentOffset) {
Lines 44-59 Link Here
44
		Matcher m = URL_PATTERN.matcher(content);
64
		Matcher m = URL_PATTERN.matcher(content);
45
		while (m.find()) {
65
		while (m.find()) {
46
			if (isInRegion(indexInContent, m)) {
66
			if (isInRegion(indexInContent, m)) {
47
				try {
67
				String urlString = m.group(1);
48
					String urlString = m.group(1);
68
				TaskUrlHyperlink link = null;
49
					new URL(urlString);
69
				if (getAdapter(TaskRepository.class) != null) {
70
					try {
71
						new URL(urlString);
72
						link = new TaskUrlHyperlink(determineRegion(contentOffset, m), urlString);
73
					} catch (MalformedURLException e) {
74
						// ignore
75
					}
76
77
				} else {
78
					AbstractTask task = TasksUiInternal.getTaskByUrl(urlString);
79
					if (task != null) {
80
						String text = NLS.bind(Messages.TaskUrlHyperlink_Open_URL_in_Task_Editor,
81
								CopyTaskDetailsAction.getTextForTask(task, Mode.SUMMARY));
82
						link = new TaskUrlHyperlink(determineRegion(contentOffset, m), urlString, text);
83
					}
84
				}
50
85
86
				if (link != null) {
51
					if (links == null) {
87
					if (links == null) {
52
						links = new ArrayList<IHyperlink>();
88
						links = new ArrayList<IHyperlink>();
53
					}
89
					}
54
					links.add(new TaskUrlHyperlink(determineRegion(contentOffset, m), urlString));
90
					links.add(link);
55
				} catch (MalformedURLException e) {
56
					// ignore
57
				}
91
				}
58
			}
92
			}
59
		}
93
		}
(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyTaskDetailsAction.java (-1 / +18 lines)
Lines 29-35 Link Here
29
	public static final String ID = "org.eclipse.mylyn.tasklist.actions.copy"; //$NON-NLS-1$
29
	public static final String ID = "org.eclipse.mylyn.tasklist.actions.copy"; //$NON-NLS-1$
30
30
31
	public enum Mode {
31
	public enum Mode {
32
		KEY, URL, SUMMARY_URL
32
		KEY, URL, SUMMARY, SUMMARY_URL
33
	}
33
	}
34
34
35
	private Mode mode;
35
	private Mode mode;
Lines 53-58 Link Here
53
		case URL:
53
		case URL:
54
			setText(Messages.CopyTaskDetailsAction_Url_Menu_Label);
54
			setText(Messages.CopyTaskDetailsAction_Url_Menu_Label);
55
			break;
55
			break;
56
		case SUMMARY:
57
			setText("Summary");
58
			break;
56
		case SUMMARY_URL:
59
		case SUMMARY_URL:
57
			setText(Messages.CopyTaskDetailsAction_Summary_and_Url_Menu_Label);
60
			setText(Messages.CopyTaskDetailsAction_Summary_and_Url_Menu_Label);
58
			break;
61
			break;
Lines 92-97 Link Here
92
				}
95
				}
93
			}
96
			}
94
			break;
97
			break;
98
		case SUMMARY:
99
			if (object instanceof ITask) {
100
				ITask task = (ITask) object;
101
				if (task.getTaskKey() != null) {
102
					sb.append(TasksUiInternal.getTaskPrefix(task.getConnectorKind()));
103
					sb.append(task.getTaskKey());
104
					sb.append(": "); //$NON-NLS-1$
105
				}
106
				sb.append(task.getSummary());
107
			} else if (object instanceof IRepositoryElement) {
108
				IRepositoryElement element = (IRepositoryElement) object;
109
				sb.append(element.getSummary());
110
			}
111
			break;
95
		case SUMMARY_URL:
112
		case SUMMARY_URL:
96
			if (object instanceof ITask) {
113
			if (object instanceof ITask) {
97
				ITask task = (ITask) object;
114
				ITask task = (ITask) object;

Return to bug 298364