Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 163739 Details for
Bug 304910
[api] recognize comment#number link on bug editor without bug number too
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
updated Patch
304910.txt (text/plain), 63.43 KB, created by
Frank Becker
on 2010-04-02 13:28:50 EDT
(
hide
)
Description:
updated Patch
Filename:
MIME Type:
Creator:
Frank Becker
Created:
2010-04-02 13:28:50 EDT
Size:
63.43 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.bugzilla.tests >Index: src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java,v >retrieving revision 1.6 >diff -u -r1.6 BugzillaTaskHyperlinkDetectorTest.java >--- src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java 3 Mar 2010 21:32:08 -0000 1.6 >+++ src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java 2 Apr 2010 17:22:34 -0000 >@@ -19,12 +19,14 @@ > import org.eclipse.jface.text.TextViewer; > import org.eclipse.jface.text.hyperlink.IHyperlink; > import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; > import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; > import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; > import org.eclipse.mylyn.internal.tasks.ui.editors.TaskHyperlinkDetector; > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.mylyn.tasks.core.data.TaskAttribute; > import org.eclipse.mylyn.tasks.ui.TaskHyperlink; >+import org.eclipse.mylyn.tasks.ui.TasksUi; > import org.eclipse.swt.SWT; > import org.eclipse.swt.widgets.Shell; > >@@ -44,73 +46,98 @@ > > private static final String ATTACHMENT_NEW = "Created attachment" + ATTACHMENT_NUMBER; > >- private final String TASK_FORMAT_1 = "task#1"; >+ private final String TASK_FORMAT_1 = "task#123"; > >- private final String TASK_FORMAT_2 = "task# 1"; >+ private final String TASK_FORMAT_2 = "task# 123"; > >- private final String TASK_FORMAT_3 = "task1"; >+ private final String TASK_FORMAT_3 = "task123"; > >- private final String TASK_FORMAT_4 = "task #1"; >+ private final String TASK_FORMAT_4 = "task #123"; > >- private final String BUG_FORMAT_1 = "bug# 1"; >+ private final String BUG_FORMAT_1 = "bug# 123"; > >- private final String BUG_FORMAT_2 = "bug # 1"; >+ private final String BUG_FORMAT_2 = "bug # 123"; > >- private final String BUG_FORMAT_3 = "bug1"; >+ private final String BUG_FORMAT_3 = "bug123"; > >- private final String BUG_FORMAT_4 = "bug #1"; >+ private final String BUG_FORMAT_4 = "bug #123"; > > private final String BUG_FORMAT_1_2 = "bug# 2"; > > private final String TASK_FORMAT_1_COMMENT_1 = "task#123c#44556677"; > >- private final String TASK_FORMAT_2_COMMENT_1 = "task# 1c#44556677"; >+ private final String TASK_FORMAT_2_COMMENT_1 = "task# 123c#44556677"; > >- private final String TASK_FORMAT_3_COMMENT_1 = "task1c#44556677"; >+ private final String TASK_FORMAT_3_COMMENT_1 = "task123c#44556677"; > >- private final String TASK_FORMAT_4_COMMENT_1 = "task #1c#44556677"; >+ private final String TASK_FORMAT_4_COMMENT_1 = "task #123c#44556677"; > >- private final String BUG_FORMAT_1_COMMENT_1 = "bug# 1c#44556677"; >+ private final String BUG_FORMAT_1_COMMENT_1 = "bug# 123c#44556677"; > >- private final String BUG_FORMAT_2_COMMENT_1 = "bug # 1c#44556677"; >+ private final String BUG_FORMAT_2_COMMENT_1 = "bug # 123c#44556677"; > >- private final String BUG_FORMAT_3_COMMENT_1 = "bug1c#44556677"; >+ private final String BUG_FORMAT_3_COMMENT_1 = "bug123c#44556677"; > >- private final String BUG_FORMAT_4_COMMENT_1 = "bug #1c#44556677"; >+ private final String BUG_FORMAT_4_COMMENT_1 = "bug #123c#44556677"; > > private final String TASK_FORMAT_1_COMMENT_2 = "task#123 comment #44556677"; > >- private final String TASK_FORMAT_2_COMMENT_2 = "task# 1 comment #44556677"; >+ private final String TASK_FORMAT_2_COMMENT_2 = "task# 123 comment #44556677"; > >- private final String TASK_FORMAT_3_COMMENT_2 = "task1 comment #44556677"; >+ private final String TASK_FORMAT_3_COMMENT_2 = "task123 comment #44556677"; > >- private final String TASK_FORMAT_4_COMMENT_2 = "task #1 comment #44556677"; >+ private final String TASK_FORMAT_4_COMMENT_2 = "task #123 comment #44556677"; > >- private final String BUG_FORMAT_1_COMMENT_2 = "bug# 1 comment #44556677"; >+ private final String BUG_FORMAT_1_COMMENT_2 = "bug# 123 comment #44556677"; > >- private final String BUG_FORMAT_2_COMMENT_2 = "bug # 1 comment #44556677"; >+ private final String BUG_FORMAT_2_COMMENT_2 = "bug # 123 comment #44556677"; > >- private final String BUG_FORMAT_3_COMMENT_2 = "bug1 comment #44556677"; >+ private final String BUG_FORMAT_3_COMMENT_2 = "bug123 comment #44556677"; > >- private final String BUG_FORMAT_4_COMMENT_2 = "bug #1 comment #44556677"; >+ private final String BUG_FORMAT_4_COMMENT_2 = "bug #123 comment #44556677"; > > private final String TASK_FORMAT_1_COMMENT_3 = "task#123 comment#44556677"; > >- private final String TASK_FORMAT_2_COMMENT_3 = "task# 1 comment#44556677"; >+ private final String TASK_FORMAT_2_COMMENT_3 = "task# 123 comment#44556677"; > >- private final String TASK_FORMAT_3_COMMENT_3 = "task1 comment#44556677"; >+ private final String TASK_FORMAT_3_COMMENT_3 = "task123 comment#44556677"; > >- private final String TASK_FORMAT_4_COMMENT_3 = "task #1 comment#44556677"; >+ private final String TASK_FORMAT_4_COMMENT_3 = "task #123 comment#44556677"; > >- private final String BUG_FORMAT_1_COMMENT_3 = "bug# 1 comment#44556677"; >+ private final String BUG_FORMAT_1_COMMENT_3 = "bug# 123 comment#44556677"; > >- private final String BUG_FORMAT_2_COMMENT_3 = "bug # 1 comment#44556677"; >+ private final String BUG_FORMAT_2_COMMENT_3 = "bug # 123 comment#44556677"; > >- private final String BUG_FORMAT_3_COMMENT_3 = "bug1 comment#44556677"; >+ private final String BUG_FORMAT_3_COMMENT_3 = "bug123 comment#44556677"; > >- private final String BUG_FORMAT_4_COMMENT_3 = "bug #1 comment#44556677"; >+ private final String BUG_FORMAT_4_COMMENT_3 = "bug #123 comment#44556677"; >+ >+ private final String TASK_FORMAT_1_COMMENT_4 = "task#123 comment # 44556677"; >+ >+ private final String TASK_FORMAT_2_COMMENT_4 = "task# 123 comment # 44556677"; >+ >+ private final String TASK_FORMAT_3_COMMENT_4 = "task123 comment # 44556677"; >+ >+ private final String TASK_FORMAT_4_COMMENT_4 = "task #123 comment # 44556677"; >+ >+ private final String BUG_FORMAT_1_COMMENT_4 = "bug# 123 comment # 44556677"; >+ >+ private final String BUG_FORMAT_2_COMMENT_4 = "bug # 123 comment # 44556677"; >+ >+ private final String BUG_FORMAT_3_COMMENT_4 = "bug123 comment # 44556677"; >+ >+ private final String BUG_FORMAT_4_COMMENT_4 = "bug #123 comment # 44556677"; >+ >+ private final String COMMENT_1 = "comment#44556677"; >+ >+ private final String COMMENT_2 = "comment #44556677"; >+ >+ private final String COMMENT_3 = "comment # 44556677"; >+ >+ private final String COMMENT_4 = "comment# 44556677"; >+ >+ private final String COMMENT_5 = "comment 44556677"; > >- //private BugzillaTaskHyperlinkDetector detector = new BugzillaTaskHyperlinkDetector(); > private TaskHyperlinkDetector detector; > > private TaskRepository repository1; >@@ -119,16 +146,20 @@ > > private TextViewer viewer; > >- private String[] formats; >- > private String[] commentFormats; > >+ private String[] bugFormats; >+ >+ private String[] bugCommentFormats; >+ > private TaskRepositoryManager repositoryManager; > > private Shell shell; > > protected TaskRepository activeRepository; > >+ protected AbstractTask task; >+ > @Override > protected void setUp() throws Exception { > super.setUp(); >@@ -137,11 +168,16 @@ > > repository1 = new TaskRepository(BugzillaCorePlugin.CONNECTOR_KIND, "repository_url1"); > repository2 = new TaskRepository(BugzillaCorePlugin.CONNECTOR_KIND, "repository_url2"); >- >+ task = (AbstractTask) TasksUi.getRepositoryModel().createTask(repository1, "123"); > detector.setContext(new IAdaptable() { > @SuppressWarnings("rawtypes") > public Object getAdapter(Class adapter) { >- return (adapter == TaskRepository.class) ? activeRepository : null; >+ if (adapter == TaskRepository.class) { >+ return activeRepository; >+ } else if (adapter == AbstractTask.class) { >+ return task; >+ } >+ return null; > } > }); > setRepository(repository1); >@@ -152,15 +188,18 @@ > repositoryManager = TasksUiPlugin.getRepositoryManager(); > repositoryManager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); > >- formats = new String[] { TASK_FORMAT_1, TASK_FORMAT_2, TASK_FORMAT_3, TASK_FORMAT_4, BUG_FORMAT_1, >+ commentFormats = new String[] { COMMENT_1, COMMENT_2, COMMENT_3, COMMENT_4 }; >+ bugFormats = new String[] { TASK_FORMAT_1, TASK_FORMAT_2, TASK_FORMAT_3, TASK_FORMAT_4, BUG_FORMAT_1, > BUG_FORMAT_2, BUG_FORMAT_3, BUG_FORMAT_4 }; >- commentFormats = new String[] { TASK_FORMAT_1_COMMENT_1, TASK_FORMAT_2_COMMENT_1, TASK_FORMAT_3_COMMENT_1, >+ bugCommentFormats = new String[] { TASK_FORMAT_1_COMMENT_1, TASK_FORMAT_2_COMMENT_1, TASK_FORMAT_3_COMMENT_1, > TASK_FORMAT_4_COMMENT_1, BUG_FORMAT_1_COMMENT_1, BUG_FORMAT_2_COMMENT_1, BUG_FORMAT_3_COMMENT_1, > BUG_FORMAT_4_COMMENT_1, TASK_FORMAT_1_COMMENT_2, TASK_FORMAT_2_COMMENT_2, TASK_FORMAT_3_COMMENT_2, > TASK_FORMAT_4_COMMENT_2, BUG_FORMAT_1_COMMENT_2, BUG_FORMAT_2_COMMENT_2, BUG_FORMAT_3_COMMENT_2, > BUG_FORMAT_4_COMMENT_2, TASK_FORMAT_1_COMMENT_3, TASK_FORMAT_2_COMMENT_3, TASK_FORMAT_3_COMMENT_3, > TASK_FORMAT_4_COMMENT_3, BUG_FORMAT_1_COMMENT_3, BUG_FORMAT_2_COMMENT_3, BUG_FORMAT_3_COMMENT_3, >- BUG_FORMAT_4_COMMENT_3 }; >+ BUG_FORMAT_4_COMMENT_3, TASK_FORMAT_1_COMMENT_4, TASK_FORMAT_2_COMMENT_4, TASK_FORMAT_3_COMMENT_4, >+ TASK_FORMAT_4_COMMENT_4, BUG_FORMAT_1_COMMENT_4, BUG_FORMAT_2_COMMENT_4, BUG_FORMAT_3_COMMENT_4, >+ BUG_FORMAT_4_COMMENT_4 }; > } > > private void setRepository(final TaskRepository repository) { >@@ -178,17 +217,35 @@ > } > > public void testBeginningWithSpecialChars() { >- for (String format : formats) { >+ for (String format : bugFormats) { > String testString = "First line\n:" + format + " is at the beginning"; > viewer.setDocument(new Document(testString)); > Region region = new Region(0, testString.length()); > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNull(comment); > } >+ for (String format : bugCommentFormats) { >+ String testString = "First line\n:" + format + " is at the beginning"; >+ viewer.setDocument(new Document(testString)); >+ Region region = new Region(0, testString.length()); >+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); >+ assertNotNull(links); >+ assertEquals(1, links.length); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); >+ assertNotNull(comment); >+ assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); >+ } > for (String format : commentFormats) { > String testString = "First line\n:" + format + " is at the beginning"; > viewer.setDocument(new Document(testString)); >@@ -196,25 +253,46 @@ > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNotNull(comment); > assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); > } > } > > public void testBeginningOfSecondLine() { >- for (String format : formats) { >+ for (String format : bugFormats) { > String testString = "First line\n" + format + " is at the beginning"; > viewer.setDocument(new Document(testString)); > Region region = new Region(0, testString.length()); > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNull(comment); > } >+ for (String format : bugCommentFormats) { >+ String testString = "First line\n" + format + " is at the beginning"; >+ viewer.setDocument(new Document(testString)); >+ Region region = new Region(0, testString.length()); >+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); >+ assertNotNull(links); >+ assertEquals(1, links.length); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); >+ assertNotNull(comment); >+ assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); >+ } > for (String format : commentFormats) { > String testString = "First line\n" + format + " is at the beginning"; > viewer.setDocument(new Document(testString)); >@@ -222,25 +300,46 @@ > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNotNull(comment); > assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); > } > } > > public void testBeginningOfSecondLineWithisWhitespace() { >- for (String format : formats) { >+ for (String format : bugFormats) { > String testString = "First line\n \t " + format + " is at the beginning"; > viewer.setDocument(new Document(testString)); > Region region = new Region(0, testString.length()); > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNull(comment); > } >+ for (String format : bugCommentFormats) { >+ String testString = "First line\n \t " + format + " is at the beginning"; >+ viewer.setDocument(new Document(testString)); >+ Region region = new Region(0, testString.length()); >+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); >+ assertNotNull(links); >+ assertEquals(1, links.length); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); >+ assertNotNull(comment); >+ assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); >+ } > for (String format : commentFormats) { > String testString = "First line\n \t " + format + " is at the beginning"; > viewer.setDocument(new Document(testString)); >@@ -248,25 +347,46 @@ > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNotNull(comment); > assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); > } > } > > public void testBeginning() { >- for (String format : formats) { >+ for (String format : bugFormats) { > String testString = format + " is at the beginning"; > viewer.setDocument(new Document(testString)); > Region region = new Region(0, testString.length()); > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNull(comment); > } >+ for (String format : bugCommentFormats) { >+ String testString = format + " is at the beginning"; >+ viewer.setDocument(new Document(testString)); >+ Region region = new Region(0, testString.length()); >+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); >+ assertNotNull(links); >+ assertEquals(1, links.length); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); >+ assertNotNull(comment); >+ assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); >+ } > for (String format : commentFormats) { > String testString = format + " is at the beginning"; > viewer.setDocument(new Document(testString)); >@@ -274,15 +394,18 @@ > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNotNull(comment); > assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); > } > } > > public void testEnd() { >- for (String format : formats) { >+ for (String format : bugFormats) { > String testString = "is ends with " + format; > viewer.setDocument(new Document(testString)); > int i = testString.indexOf(format); >@@ -290,10 +413,29 @@ > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(i, links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNull(comment); > } >+ for (String format : bugCommentFormats) { >+ String testString = "is ends with " + format; >+ viewer.setDocument(new Document(testString)); >+ int i = testString.indexOf(format); >+ Region region = new Region(i, testString.length() - i); >+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); >+ assertNotNull(links); >+ assertEquals(1, links.length); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); >+ assertNotNull(comment); >+ assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); >+ } > for (String format : commentFormats) { > String testString = "is ends with " + format; > viewer.setDocument(new Document(testString)); >@@ -301,15 +443,18 @@ > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNotNull(comment); > assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); > } > } > > public void testMiddle() { >- for (String format : formats) { >+ for (String format : bugFormats) { > String testString = "is a " + format + " in the middle"; > viewer.setDocument(new Document(testString)); > int i = testString.indexOf(format); >@@ -317,10 +462,28 @@ > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNull(comment); > } >+ for (String format : bugCommentFormats) { >+ String testString = "is a " + format + " in the middle"; >+ viewer.setDocument(new Document(testString)); >+ Region region = new Region(0, testString.length()); >+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); >+ assertNotNull(links); >+ assertEquals(1, links.length); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); >+ assertNotNull(comment); >+ assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); >+ } > for (String format : commentFormats) { > String testString = "is a " + format + " in the middle"; > viewer.setDocument(new Document(testString)); >@@ -328,8 +491,11 @@ > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); > assertEquals(1, links.length); >- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset()); >- Object comment = ((TaskHyperlink) links[0]).getSelection(); >+ assertTrue(links[0] instanceof TaskHyperlink); >+ TaskHyperlink taskLink = (TaskHyperlink) links[0]; >+ assertEquals("123", taskLink.getTaskId()); >+ assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); >+ Object comment = taskLink.getSelection(); > assertNotNull(comment); > assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); > } >@@ -473,7 +639,6 @@ > public void testAttachmentOld() { > String testString = ATTACHMENT_OLD; > viewer.setDocument(new Document(testString)); >- int i = testString.indexOf(ATTACHMENT_NUMBER); > Region region = new Region(0, testString.length()); > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); >@@ -484,7 +649,6 @@ > public void testAttachmentNew() { > String testString = ATTACHMENT_NEW; > viewer.setDocument(new Document(testString)); >- int i = testString.indexOf(ATTACHMENT_NUMBER); > Region region = new Region(0, testString.length()); > IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); > assertNotNull(links); >#P org.eclipse.mylyn.tasks.ui >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/AttributePart.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AttributePart.java,v >retrieving revision 1.11 >diff -u -r1.11 AttributePart.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/AttributePart.java 12 Oct 2009 08:40:32 -0000 1.11 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/AttributePart.java 2 Apr 2010 17:22:36 -0000 >@@ -117,7 +117,7 @@ > urlComposite.setLayout(urlLayout); > GridDataFactory.fillDefaults().grab(true, false).applyTo(urlComposite); > >- urlEditor = new RichTextEditor(getRepository(), SWT.FLAT | SWT.SINGLE) { >+ urlEditor = new RichTextEditor(getRepository(), getTask(), SWT.FLAT | SWT.SINGLE) { > @Override > protected void valueChanged(String value) { > updateButtons(); >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/IAbstractTaskEditorExtension2.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/ui/editors/IAbstractTaskEditorExtension2.java >diff -N src/org/eclipse/mylyn/internal/tasks/ui/editors/IAbstractTaskEditorExtension2.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/IAbstractTaskEditorExtension2.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,21 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 Frank Becker 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: >+ * Frank Becker - initial API and implementation >+ *******************************************************************************/ >+ >+package org.eclipse.mylyn.internal.tasks.ui.editors; >+ >+import org.eclipse.jface.text.source.SourceViewer; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; >+import org.eclipse.mylyn.tasks.core.TaskRepository; >+import org.eclipse.swt.widgets.Composite; >+ >+public interface IAbstractTaskEditorExtension2 { >+ public SourceViewer createEditor(TaskRepository taskRepository, AbstractTask task, Composite parent, int style); >+} >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/LongTextAttributeEditor.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/LongTextAttributeEditor.java,v >retrieving revision 1.17 >diff -u -r1.17 LongTextAttributeEditor.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/LongTextAttributeEditor.java 6 Oct 2009 06:44:06 -0000 1.17 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/LongTextAttributeEditor.java 2 Apr 2010 17:22:37 -0000 >@@ -15,6 +15,7 @@ > import org.eclipse.jface.text.source.SourceViewer; > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonFormUtil; > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonTextSupport; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; > import org.eclipse.mylyn.internal.tasks.ui.editors.RepositoryTextViewerConfiguration.Mode; > import org.eclipse.mylyn.tasks.core.data.TaskAttribute; > import org.eclipse.mylyn.tasks.core.data.TaskDataModel; >@@ -47,7 +48,7 @@ > } > SourceViewer viewer = new SourceViewer(parent, null, style); > RepositoryTextViewerConfiguration configuration = RichTextEditor.installHyperlinkPresenter(viewer, >- getModel().getTaskRepository(), Mode.DEFAULT); >+ getModel().getTaskRepository(), ((AbstractTask) getModel().getTask()), Mode.DEFAULT); > viewer.configure(configuration); > viewer.setDocument(new Document(getValue())); > final StyledText text = viewer.getTextWidget(); >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java,v >retrieving revision 1.35 >diff -u -r1.35 PlanningPart.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java 2 Nov 2009 19:00:46 -0000 1.35 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java 2 Apr 2010 17:22:37 -0000 >@@ -336,13 +336,13 @@ > if (contextService != null) { > AbstractTaskEditorExtension extension = TaskEditorExtensions.getTaskEditorExtension(getRepository()); > if (extension != null) { >- noteEditor = new RichTextEditor(getRepository(), SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL, >- contextService, extension); >+ noteEditor = new RichTextEditor(getRepository(), getTask(), SWT.FLAT | SWT.MULTI | SWT.WRAP >+ | SWT.V_SCROLL, contextService, extension); > } > } > } > if (noteEditor == null) { >- noteEditor = new RichTextEditor(getRepository(), SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); >+ noteEditor = new RichTextEditor(getRepository(), getTask(), SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); > } > noteEditor.setSpellCheckingEnabled(true); > noteEditor.createControl(composite, toolkit); >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewerConfiguration.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewerConfiguration.java,v >retrieving revision 1.27 >diff -u -r1.27 RepositoryTextViewerConfiguration.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewerConfiguration.java 10 Dec 2009 05:46:10 -0000 1.27 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewerConfiguration.java 2 Apr 2010 17:22:37 -0000 >@@ -35,6 +35,7 @@ > import org.eclipse.jface.text.rules.Token; > import org.eclipse.jface.text.source.ISourceViewer; > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonColors; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.mylyn.tasks.ui.TaskHyperlinkPresenter; > import org.eclipse.swt.SWT; >@@ -65,11 +66,14 @@ > > private Mode mode; > >- public RepositoryTextViewerConfiguration(TaskRepository taskRepository, boolean spellCheck) { >+ private final AbstractTask task; >+ >+ public RepositoryTextViewerConfiguration(TaskRepository taskRepository, AbstractTask task, boolean spellCheck) { > super(EditorsUI.getPreferenceStore()); > this.taskRepository = taskRepository; > this.spellCheck = spellCheck; > this.mode = Mode.DEFAULT; >+ this.task = task; > } > > public Mode getMode() { >@@ -148,6 +152,8 @@ > public Object getAdapter(Class adapter) { > if (adapter == TaskRepository.class) { > return getTaskRepository(); >+ } else if (adapter == AbstractTask.class) { >+ return getTask(); > } > return null; > } >@@ -208,4 +214,8 @@ > return assistant; > } > >+ public AbstractTask getTask() { >+ return task; >+ } >+ > } >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextAttributeEditor.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextAttributeEditor.java,v >retrieving revision 1.44 >diff -u -r1.44 RichTextAttributeEditor.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextAttributeEditor.java 20 Aug 2009 00:36:38 -0000 1.44 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextAttributeEditor.java 2 Apr 2010 17:22:37 -0000 >@@ -13,7 +13,9 @@ > > import org.eclipse.jface.action.IAction; > import org.eclipse.jface.text.source.SourceViewer; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; > import org.eclipse.mylyn.internal.tasks.ui.editors.RepositoryTextViewerConfiguration.Mode; >+import org.eclipse.mylyn.tasks.core.ITask; > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.mylyn.tasks.core.data.TaskAttribute; > import org.eclipse.mylyn.tasks.core.data.TaskDataModel; >@@ -53,7 +55,8 @@ > public RichTextAttributeEditor(TaskDataModel manager, TaskRepository taskRepository, TaskAttribute taskAttribute, > int style, IContextService contextService, AbstractTaskEditorExtension extension) { > super(manager, taskAttribute); >- this.editor = new RichTextEditor(taskRepository, style, contextService, extension) { >+ this.editor = new RichTextEditor(taskRepository, ((AbstractTask) getModel().getTask()), style, contextService, >+ extension) { > @Override > public void valueChanged(String value) { > if (!ignoreNotification) { >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java,v >retrieving revision 1.13 >diff -u -r1.13 RichTextEditor.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java 8 Oct 2009 05:22:12 -0000 1.13 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java 2 Apr 2010 17:22:37 -0000 >@@ -31,6 +31,7 @@ > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonFormUtil; > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonTextSupport; > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonThemes; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; > import org.eclipse.mylyn.internal.tasks.ui.commands.ViewSourceHandler; > import org.eclipse.mylyn.internal.tasks.ui.editors.RepositoryTextViewerConfiguration.Mode; > import org.eclipse.mylyn.tasks.core.TaskRepository; >@@ -160,11 +161,13 @@ > > private final ListenerList stateChangedListeners = new ListenerList(ListenerList.IDENTITY); > >- public RichTextEditor(TaskRepository repository, int style) { >- this(repository, style, null, null); >+ private final AbstractTask task; >+ >+ public RichTextEditor(TaskRepository repository, AbstractTask task, int style) { >+ this(repository, task, style, null, null); > } > >- public RichTextEditor(TaskRepository repository, int style, IContextService contextService, >+ public RichTextEditor(TaskRepository repository, AbstractTask task, int style, IContextService contextService, > AbstractTaskEditorExtension extension) { > this.repository = repository; > this.style = style; >@@ -173,11 +176,12 @@ > this.text = ""; //$NON-NLS-1$ > this.viewSourceAction = new ViewSourceAction(); > setMode(Mode.DEFAULT); >+ this.task = task; > } > > private SourceViewer configure(final SourceViewer viewer, Document document, boolean readOnly) { > // do this before setting the document to not require invalidating the presentation >- installHyperlinkPresenter(viewer, repository, getMode()); >+ installHyperlinkPresenter(viewer, repository, task, getMode()); > > updateDocument(viewer, document, readOnly); > if (readOnly) { >@@ -263,7 +267,13 @@ > if (isReadOnly()) { > editorViewer = extension.createViewer(repository, editorComposite, style); > } else { >- editorViewer = extension.createEditor(repository, editorComposite, style); >+ if (extension instanceof IAbstractTaskEditorExtension2) { >+ editorViewer = ((IAbstractTaskEditorExtension2) extension).createEditor(repository, task, >+ editorComposite, style); >+ } else { >+ editorViewer = extension.createEditor(repository, editorComposite, style); >+ } >+ > editorViewer.getTextWidget().addFocusListener(new FocusListener() { > public void focusGained(FocusEvent e) { > setContext(); >@@ -304,7 +314,7 @@ > private SourceViewer createDefaultEditor(Composite parent, int styles) { > SourceViewer defaultEditor = new SourceViewer(parent, null, styles | SWT.WRAP); > >- RepositoryTextViewerConfiguration viewerConfig = new RepositoryTextViewerConfiguration(repository, >+ RepositoryTextViewerConfiguration viewerConfig = new RepositoryTextViewerConfiguration(repository, task, > isSpellCheckingEnabled() && !isReadOnly()); > viewerConfig.setMode(getMode()); > defaultEditor.configure(viewerConfig); >@@ -427,8 +437,8 @@ > } > > public static RepositoryTextViewerConfiguration installHyperlinkPresenter(ISourceViewer viewer, >- TaskRepository repository, Mode mode) { >- RepositoryTextViewerConfiguration configuration = new RepositoryTextViewerConfiguration(repository, false); >+ TaskRepository repository, AbstractTask task, Mode mode) { >+ RepositoryTextViewerConfiguration configuration = new RepositoryTextViewerConfiguration(repository, task, false); > configuration.setMode(mode); > > // do not configure viewer, this has already been done in extension >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/SummaryPart.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SummaryPart.java,v >retrieving revision 1.12 >diff -u -r1.12 SummaryPart.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/SummaryPart.java 11 Aug 2009 20:04:57 -0000 1.12 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/SummaryPart.java 2 Apr 2010 17:22:37 -0000 >@@ -73,7 +73,7 @@ > GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).hint(EditorUtil.MAXIMUM_WIDTH, SWT.DEFAULT).grab( > true, false).applyTo(borderComposite); > >- summaryEditor = new RichTextEditor(getRepository(), SWT.SINGLE); >+ summaryEditor = new RichTextEditor(getRepository(), getTask(), SWT.SINGLE); > summaryEditor.setSpellCheckingEnabled(true); > summaryEditor.setReadOnly(!isSummaryEditable()); > summaryEditor.createControl(borderComposite, toolkit); >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorNotesPart.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorNotesPart.java,v >retrieving revision 1.6 >diff -u -r1.6 TaskEditorNotesPart.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorNotesPart.java 6 Oct 2009 06:44:06 -0000 1.6 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorNotesPart.java 2 Apr 2010 17:22:37 -0000 >@@ -87,7 +87,8 @@ > composite.setLayout(EditorUtil.createSectionClientLayout()); > > noteEditor = new SourceViewer(composite, null, SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); >- noteEditor.configure(new RepositoryTextViewerConfiguration(getModel().getTaskRepository(), true)); >+ noteEditor.configure(new RepositoryTextViewerConfiguration(getModel().getTaskRepository(), >+ ((AbstractTask) getModel().getTask()), true)); > CommonTextSupport textSupport = (CommonTextSupport) getTaskEditorPage().getAdapter(CommonTextSupport.class); > if (textSupport != null) { > textSupport.configure(noteEditor, new Document(this.value), true); >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskHyperlinkDetector.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskHyperlinkDetector.java,v >retrieving revision 1.15 >diff -u -r1.15 TaskHyperlinkDetector.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskHyperlinkDetector.java 12 Oct 2008 05:08:11 -0000 1.15 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskHyperlinkDetector.java 2 Apr 2010 17:22:37 -0000 >@@ -19,6 +19,7 @@ > import org.eclipse.jface.text.ITextViewer; > import org.eclipse.jface.text.hyperlink.IHyperlink; > import org.eclipse.jface.util.SafeRunnable; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; > import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi; >@@ -47,7 +48,12 @@ > } > > public void run() throws Exception { >- links[0] = connectorUi.findHyperlinks(repository, content, index, contentOffset); >+ if (connectorUi.supportGetHyperlinks()) { >+ final AbstractTask task = (AbstractTask) getAdapter(AbstractTask.class); >+ links[0] = connectorUi.getHyperlinks(repository, task, content, index, contentOffset); >+ } else { >+ links[0] = connectorUi.findHyperlinks(repository, content, index, contentOffset); >+ } > } > > }); >Index: src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java,v >retrieving revision 1.84 >diff -u -r1.84 AbstractRepositoryConnectorUi.java >--- src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java 24 Jul 2009 12:05:46 -0000 1.84 >+++ src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java 2 Apr 2010 17:22:37 -0000 >@@ -21,6 +21,7 @@ > import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.jface.wizard.IWizard; > import org.eclipse.jface.wizard.IWizardPage; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; > import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery; > import org.eclipse.mylyn.internal.tasks.ui.Messages; > import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; >@@ -248,4 +249,30 @@ > return new TaskAttachmentPage(model); > } > >+ /** >+ * Returns an array of hyperlinks that link to tasks within <code>text</code>. If <code>index</code> is != -1 >+ * clients may limit the results to hyperlinks found at <code>index</code>. It is legal for clients to always return >+ * all results. >+ * >+ * @param repository >+ * the task repository, never <code>null</code> >+ * @param task >+ * the task, never <code>null</code> >+ * @param text >+ * the line of text >+ * @param index >+ * the index within <code>text</code>, if -1 return all hyperlinks found in text >+ * @param textOffset >+ * the offset of <code>text</code> >+ * @return an array of hyperlinks, or null if no hyperlinks were found >+ * @since 3.4 >+ */ >+ public IHyperlink[] getHyperlinks(TaskRepository repository, AbstractTask task, String text, int index, >+ int textOffset) { >+ return null; >+ } >+ >+ public boolean supportGetHyperlinks() { >+ return false; >+ } > } >Index: src/org/eclipse/mylyn/tasks/ui/wizards/TaskAttachmentPage.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/TaskAttachmentPage.java,v >retrieving revision 1.30 >diff -u -r1.30 TaskAttachmentPage.java >--- src/org/eclipse/mylyn/tasks/ui/wizards/TaskAttachmentPage.java 13 Feb 2010 01:22:46 -0000 1.30 >+++ src/org/eclipse/mylyn/tasks/ui/wizards/TaskAttachmentPage.java 2 Apr 2010 17:22:38 -0000 >@@ -17,6 +17,7 @@ > import org.eclipse.mylyn.context.core.ContextCore; > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonTextSupport; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; > import org.eclipse.mylyn.internal.tasks.core.data.FileTaskAttachmentSource; > import org.eclipse.mylyn.internal.tasks.ui.editors.RichTextEditor; > import org.eclipse.mylyn.internal.tasks.ui.editors.TaskEditorExtensions; >@@ -147,8 +148,8 @@ > } > } > >- commentEditor = new RichTextEditor(getModel().getTaskRepository(), SWT.V_SCROLL | SWT.BORDER | SWT.WRAP, >- contextService, extension) { >+ commentEditor = new RichTextEditor(getModel().getTaskRepository(), ((AbstractTask) getModel().getTask()), >+ SWT.V_SCROLL | SWT.BORDER | SWT.WRAP, contextService, extension) { > @Override > protected void valueChanged(String value) { > apply(); >#P org.eclipse.mylyn.trac.wiki >Index: src/org/eclipse/mylyn/internal/trac/wiki/editor/TracWikiPageEditor.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/sandbox/org.eclipse.mylyn.trac.wiki/src/org/eclipse/mylyn/internal/trac/wiki/editor/TracWikiPageEditor.java,v >retrieving revision 1.19 >diff -u -r1.19 TracWikiPageEditor.java >--- src/org/eclipse/mylyn/internal/trac/wiki/editor/TracWikiPageEditor.java 10 Dec 2009 05:46:22 -0000 1.19 >+++ src/org/eclipse/mylyn/internal/trac/wiki/editor/TracWikiPageEditor.java 2 Apr 2010 17:22:39 -0000 >@@ -233,7 +233,8 @@ > } > }); > >- TextSourceViewerConfiguration viewerConfig = new RepositoryTextViewerConfiguration(repository, true); >+ // TODO: pass the Task if possible and not null >+ TextSourceViewerConfiguration viewerConfig = new RepositoryTextViewerConfiguration(repository, null, true); > ((SourceViewer) sourceEditor).configure(viewerConfig); > Document document = new Document(page.getContent()); > ((SourceViewer) sourceEditor).setDocument(document, new AnnotationModel()); >#P org.eclipse.mylyn.wikitext.tasks.ui >Index: src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/ConfluenceMarkupTaskEditorExtension.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.wikitext.tasks.ui/src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/ConfluenceMarkupTaskEditorExtension.java,v >retrieving revision 1.2 >diff -u -r1.2 ConfluenceMarkupTaskEditorExtension.java >--- src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/ConfluenceMarkupTaskEditorExtension.java 26 Jan 2009 16:46:42 -0000 1.2 >+++ src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/ConfluenceMarkupTaskEditorExtension.java 2 Apr 2010 17:22:40 -0000 >@@ -11,9 +11,9 @@ > package org.eclipse.mylyn.internal.wikitext.tasks.ui.editor; > > import org.eclipse.mylyn.wikitext.confluence.core.ConfluenceLanguage; >-import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension; >+import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension2; > >-public class ConfluenceMarkupTaskEditorExtension extends MarkupTaskEditorExtension<ConfluenceLanguage> { >+public class ConfluenceMarkupTaskEditorExtension extends MarkupTaskEditorExtension2<ConfluenceLanguage> { > > public ConfluenceMarkupTaskEditorExtension() { > setMarkupLanguage(new ConfluenceLanguage()); >Index: src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/MediaWikiMarkupTaskEditorExtension.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.wikitext.tasks.ui/src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/MediaWikiMarkupTaskEditorExtension.java,v >retrieving revision 1.2 >diff -u -r1.2 MediaWikiMarkupTaskEditorExtension.java >--- src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/MediaWikiMarkupTaskEditorExtension.java 26 Jan 2009 16:46:42 -0000 1.2 >+++ src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/MediaWikiMarkupTaskEditorExtension.java 2 Apr 2010 17:22:40 -0000 >@@ -11,9 +11,9 @@ > package org.eclipse.mylyn.internal.wikitext.tasks.ui.editor; > > import org.eclipse.mylyn.wikitext.mediawiki.core.MediaWikiLanguage; >-import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension; >+import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension2; > >-public class MediaWikiMarkupTaskEditorExtension extends MarkupTaskEditorExtension<MediaWikiLanguage> { >+public class MediaWikiMarkupTaskEditorExtension extends MarkupTaskEditorExtension2<MediaWikiLanguage> { > > public MediaWikiMarkupTaskEditorExtension() { > setMarkupLanguage(new MediaWikiLanguage()); >Index: src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TWikiMarkupTaskEditorExtension.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.wikitext.tasks.ui/src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TWikiMarkupTaskEditorExtension.java,v >retrieving revision 1.2 >diff -u -r1.2 TWikiMarkupTaskEditorExtension.java >--- src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TWikiMarkupTaskEditorExtension.java 26 Jan 2009 16:46:42 -0000 1.2 >+++ src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TWikiMarkupTaskEditorExtension.java 2 Apr 2010 17:22:40 -0000 >@@ -10,10 +10,10 @@ > *******************************************************************************/ > package org.eclipse.mylyn.internal.wikitext.tasks.ui.editor; > >-import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension; >+import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension2; > import org.eclipse.mylyn.wikitext.twiki.core.TWikiLanguage; > >-public class TWikiMarkupTaskEditorExtension extends MarkupTaskEditorExtension<TWikiLanguage> { >+public class TWikiMarkupTaskEditorExtension extends MarkupTaskEditorExtension2<TWikiLanguage> { > > public TWikiMarkupTaskEditorExtension() { > setMarkupLanguage(new TWikiLanguage()); >Index: src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TextileMarkupTaskEditorExtension.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.wikitext.tasks.ui/src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TextileMarkupTaskEditorExtension.java,v >retrieving revision 1.2 >diff -u -r1.2 TextileMarkupTaskEditorExtension.java >--- src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TextileMarkupTaskEditorExtension.java 26 Jan 2009 16:46:42 -0000 1.2 >+++ src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TextileMarkupTaskEditorExtension.java 2 Apr 2010 17:22:40 -0000 >@@ -11,15 +11,13 @@ > > package org.eclipse.mylyn.internal.wikitext.tasks.ui.editor; > >-import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension; >+import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension2; > import org.eclipse.mylyn.wikitext.textile.core.TextileLanguage; > > /** >- * >- * > * @author David Green > */ >-public class TextileMarkupTaskEditorExtension extends MarkupTaskEditorExtension<TextileLanguage> { >+public class TextileMarkupTaskEditorExtension extends MarkupTaskEditorExtension2<TextileLanguage> { > > public TextileMarkupTaskEditorExtension() { > setMarkupLanguage(new TextileLanguage()); >Index: src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TracWikiMarkupTaskEditorExtension.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.wikitext.tasks.ui/src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TracWikiMarkupTaskEditorExtension.java,v >retrieving revision 1.4 >diff -u -r1.4 TracWikiMarkupTaskEditorExtension.java >--- src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TracWikiMarkupTaskEditorExtension.java 28 Aug 2009 01:42:33 -0000 1.4 >+++ src/org/eclipse/mylyn/internal/wikitext/tasks/ui/editor/TracWikiMarkupTaskEditorExtension.java 2 Apr 2010 17:22:40 -0000 >@@ -12,16 +12,16 @@ > package org.eclipse.mylyn.internal.wikitext.tasks.ui.editor; > > import org.eclipse.mylyn.tasks.core.TaskRepository; >-import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension; >+import org.eclipse.mylyn.wikitext.tasks.ui.editor.MarkupTaskEditorExtension2; > import org.eclipse.mylyn.wikitext.tracwiki.core.TracWikiLanguage; >-import org.eclipse.mylyn.wikitext.ui.viewer.MarkupViewer; > import org.eclipse.mylyn.wikitext.ui.viewer.AbstractTextSourceViewerConfiguration.HyperlinkDetectorDescriptorFilter; >+import org.eclipse.mylyn.wikitext.ui.viewer.MarkupViewer; > import org.eclipse.ui.texteditor.HyperlinkDetectorDescriptor; > > /** > * @author David Green > */ >-public class TracWikiMarkupTaskEditorExtension extends MarkupTaskEditorExtension<TracWikiLanguage> implements >+public class TracWikiMarkupTaskEditorExtension extends MarkupTaskEditorExtension2<TracWikiLanguage> implements > HyperlinkDetectorDescriptorFilter { > > public TracWikiMarkupTaskEditorExtension() { >Index: src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.wikitext.tasks.ui/src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension.java,v >retrieving revision 1.22 >diff -u -r1.22 MarkupTaskEditorExtension.java >--- src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension.java 15 Jan 2010 02:03:54 -0000 1.22 >+++ src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension.java 2 Apr 2010 17:22:40 -0000 >@@ -82,9 +82,9 @@ > private static final boolean DISABLE_WIKI_WORD = Boolean.getBoolean(MarkupTaskEditorExtension.class.getSimpleName() > + ".wikiWordDisabled"); //$NON-NLS-1$ > >- private static final String ID_CONTEXT_EDITOR_TASK = "org.eclipse.mylyn.tasks.ui.TaskEditor"; //$NON-NLS-1$ >+ protected static final String ID_CONTEXT_EDITOR_TASK = "org.eclipse.mylyn.tasks.ui.TaskEditor"; //$NON-NLS-1$ > >- private static final String ID_CONTEXT_EDITOR_TEXT = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$ >+ protected static final String ID_CONTEXT_EDITOR_TEXT = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$ > > private MarkupLanguageType markupLanguage; > >@@ -138,7 +138,7 @@ > } > > @SuppressWarnings("unchecked") >- private MarkupLanguageType createRepositoryMarkupLanguage(TaskRepository taskRepository) { >+ protected MarkupLanguageType createRepositoryMarkupLanguage(TaskRepository taskRepository) { > MarkupLanguageType copy = (MarkupLanguageType) markupLanguage.clone(); > MarkupLanguageConfiguration configuration = createMarkupLanguageConfiguration(taskRepository); > copy.configure(configuration); >@@ -377,7 +377,7 @@ > * > * @author David Green > */ >- private static class EditorExtensionPreferenceStore extends PreferenceStoreFacade { >+ protected static class EditorExtensionPreferenceStore extends PreferenceStoreFacade { > > // track separately from isFocusControl() since isFocusControl() is not accurate while processing a focus event > boolean controlFocused; >Index: src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension2.java >=================================================================== >RCS file: src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension2.java >diff -N src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension2.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension2.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,201 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 Frank Becker 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: >+ * Frank Becker - initial API and implementation >+ *******************************************************************************/ >+ >+package org.eclipse.mylyn.wikitext.tasks.ui.editor; >+ >+import java.util.Iterator; >+import java.util.Map; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.jface.preference.IPreferenceStore; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.text.hyperlink.IHyperlinkPresenter; >+import org.eclipse.jface.text.reconciler.IReconciler; >+import org.eclipse.jface.text.source.Annotation; >+import org.eclipse.jface.text.source.DefaultAnnotationHover; >+import org.eclipse.jface.text.source.IAnnotationHover; >+import org.eclipse.jface.text.source.ISourceViewer; >+import org.eclipse.jface.text.source.SourceViewer; >+import org.eclipse.mylyn.internal.tasks.core.AbstractTask; >+import org.eclipse.mylyn.internal.tasks.ui.editors.IAbstractTaskEditorExtension2; >+import org.eclipse.mylyn.internal.wikitext.tasks.ui.WikiTextTasksUiPlugin; >+import org.eclipse.mylyn.internal.wikitext.ui.editor.MarkupEditor; >+import org.eclipse.mylyn.tasks.core.TaskRepository; >+import org.eclipse.mylyn.tasks.ui.TaskHyperlinkPresenter; >+import org.eclipse.mylyn.tasks.ui.TasksUi; >+import org.eclipse.mylyn.wikitext.core.parser.markup.MarkupLanguage; >+import org.eclipse.mylyn.wikitext.ui.editor.MarkupSourceViewer; >+import org.eclipse.mylyn.wikitext.ui.editor.MarkupSourceViewerConfiguration; >+import org.eclipse.mylyn.wikitext.ui.editor.ShowInTargetBridge; >+import org.eclipse.mylyn.wikitext.ui.viewer.DefaultHyperlinkDetectorDescriptorFilter; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.DisposeEvent; >+import org.eclipse.swt.events.DisposeListener; >+import org.eclipse.swt.graphics.RGB; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.editors.text.EditorsUI; >+import org.eclipse.ui.swt.IFocusService; >+import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants; >+import org.eclipse.ui.texteditor.AnnotationPreference; >+import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess; >+import org.eclipse.ui.texteditor.MarkerAnnotationPreferences; >+import org.eclipse.ui.texteditor.SourceViewerDecorationSupport; >+ >+/** >+ * @author Frank Becker >+ * >+ * @since 1.3 >+ */ >+@SuppressWarnings("restriction") >+public class MarkupTaskEditorExtension2<MarkupLanguageType extends MarkupLanguage> extends >+ MarkupTaskEditorExtension<MarkupLanguageType> implements IAbstractTaskEditorExtension2 { >+ >+ public SourceViewer createEditor(TaskRepository taskRepository, AbstractTask task, Composite parent, int style) { >+ final MarkupLanguageType markupLanguageCopy = createRepositoryMarkupLanguage(taskRepository); >+ configureMarkupLanguage(taskRepository, markupLanguageCopy); >+ >+ SourceViewer viewer = new MarkupSourceViewer(parent, null, style | SWT.WRAP, markupLanguageCopy); >+ // configure the viewer >+ MarkupSourceViewerConfiguration configuration = createSourceViewerConfiguration(taskRepository, task, viewer); >+ >+ configuration.setMarkupLanguage(markupLanguageCopy); >+ configuration.setShowInTarget(new ShowInTargetBridge(viewer)); >+ viewer.configure(configuration); >+ >+ // we want the viewer to show annotations >+ viewer.showAnnotations(true); >+ >+ DefaultMarkerAnnotationAccess annotationAccess = new DefaultMarkerAnnotationAccess(); >+ MarkerAnnotationPreferences annotationPreferences = new MarkerAnnotationPreferences(); >+ >+ // configure viewer annotation/decoration support >+ final SourceViewerDecorationSupport support = new SourceViewerDecorationSupport(viewer, null, annotationAccess, >+ EditorsUI.getSharedTextColors()); >+ >+ // hook the support up to the preference store >+ Iterator<AnnotationPreference> e = annotationPreferences.getAnnotationPreferences().iterator(); >+ while (e.hasNext()) { >+ AnnotationPreference preference = e.next(); >+ support.setAnnotationPreference(preference); >+ } >+ support.setCursorLinePainterPreferenceKeys(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE, >+ AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR); >+ support.setMarginPainterPreferenceKeys(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN, >+ AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR, >+ AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN); >+ >+ support.install(new EditorExtensionPreferenceStore(EditorsUI.getPreferenceStore(), viewer.getControl())); >+ viewer.getControl().addDisposeListener(new DisposeListener() { >+ public void widgetDisposed(DisposeEvent e) { >+ support.dispose(); >+ } >+ }); >+ >+ IFocusService focusService = (IFocusService) PlatformUI.getWorkbench().getService(IFocusService.class); >+ if (focusService != null) { >+ focusService.addFocusTracker(viewer.getTextWidget(), MarkupEditor.EDITOR_SOURCE_VIEWER); >+ } >+ >+ viewer.getTextWidget().setData(MarkupLanguage.class.getName(), markupLanguageCopy); >+ viewer.getTextWidget().setData(ISourceViewer.class.getName(), viewer); >+ >+ return viewer; >+ } >+ >+ protected TaskMarkupSourceViewerConfiguration createSourceViewerConfiguration(TaskRepository taskRepository, >+ AbstractTask task, SourceViewer viewer) { >+ IPreferenceStore preferenceStore = EditorsUI.getPreferenceStore(); >+ return new TaskMarkupSourceViewerConfiguration(preferenceStore, taskRepository, task); >+ } >+ >+ @SuppressWarnings({ "rawtypes", "unchecked" }) >+ private static void addRepositoryHyperlinkDetectorTargets(final TaskRepository taskRepository, >+ final AbstractTask task, Map hyperlinkDetectorTargets) { >+ IAdaptable context = new IAdaptable() { >+ public Object getAdapter(Class adapter) { >+ if (adapter == TaskRepository.class) { >+ return taskRepository; >+ } else if (adapter == AbstractTask.class) { >+ return task; >+ } >+ return null; >+ } >+ }; >+ hyperlinkDetectorTargets.put(ID_CONTEXT_EDITOR_TEXT, context); >+ hyperlinkDetectorTargets.put(ID_CONTEXT_EDITOR_TASK, context); >+ } >+ >+ protected static class TaskMarkupSourceViewerConfiguration extends MarkupSourceViewerConfiguration { >+ >+ private final TaskRepository taskRepository; >+ >+ private final AbstractTask task; >+ >+ public TaskMarkupSourceViewerConfiguration(IPreferenceStore preferenceStore, TaskRepository taskRepository, >+ AbstractTask task) { >+ super(preferenceStore, WikiTextTasksUiPlugin.FONT_REGISTRY_KEY_DEFAULT_FONT, >+ WikiTextTasksUiPlugin.FONT_REGISTRY_KEY_MONOSPACE_FONT); >+ this.taskRepository = taskRepository; >+ this.task = task; >+ // filter out the platform URL hyperlink detector since Mylyn contributes one as well. >+ addHyperlinkDetectorDescriptorFilter(new DefaultHyperlinkDetectorDescriptorFilter( >+ "org.eclipse.ui.internal.editors.text.URLHyperlinkDetector")); //$NON-NLS-1$ >+ } >+ >+ @Override >+ protected IContentAssistProcessor[] createContentAssistProcessors() { >+ IContentAssistProcessor processor = TasksUi.getUiFactory().createTaskContentAssistProcessor(taskRepository); >+ return processor == null ? null : new IContentAssistProcessor[] { processor }; >+ } >+ >+ @Override >+ public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) { >+ return new DefaultAnnotationHover() { >+ @Override >+ protected boolean isIncluded(Annotation annotation) { >+ return annotation.getType().startsWith("org.eclipse.wikitext") || super.isIncluded(annotation); //$NON-NLS-1$ >+ } >+ }; >+ } >+ >+ @SuppressWarnings("rawtypes") >+ @Override >+ protected Map getHyperlinkDetectorTargets(ISourceViewer sourceViewer) { >+ Map hyperlinkDetectorTargets = super.getHyperlinkDetectorTargets(sourceViewer); >+ addRepositoryHyperlinkDetectorTargets(taskRepository, task, hyperlinkDetectorTargets); >+ return hyperlinkDetectorTargets; >+ } >+ >+ @Override >+ public IReconciler getReconciler(ISourceViewer sourceViewer) { >+ if (sourceViewer.isEditable()) { >+ return super.getReconciler(sourceViewer); >+ } else { >+ return null; >+ } >+ } >+ >+ @Override >+ public int getHyperlinkStateMask(ISourceViewer sourceViewer) { >+ return SWT.NONE; >+ } >+ >+ @Override >+ public IHyperlinkPresenter getHyperlinkPresenter(ISourceViewer sourceViewer) { >+ if (fPreferenceStore == null) { >+ return new TaskHyperlinkPresenter(new RGB(0, 0, 255)); >+ } >+ return new TaskHyperlinkPresenter(fPreferenceStore); >+ } >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 304910
:
161975
|
161976
|
163739
|
163740
|
163742
|
163743
|
169262
|
169263
|
169589
|
169590
|
169597
|
169598
|
169926
|
169927
|
170100
|
170101