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 169597 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]
patch v5
clipboard.txt (text/plain), 64.79 KB, created by
Steffen Pingel
on 2010-05-22 18:19:26 EDT
(
hide
)
Description:
patch v5
Filename:
MIME Type:
Creator:
Steffen Pingel
Created:
2010-05-22 18:19:26 EDT
Size:
64.79 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.xplanner.tests >Index: src/org/eclipse/mylyn/xplanner/tests/XPlannerRepositoryUiTest.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/sandbox/org.eclipse.mylyn.xplanner.tests/src/org/eclipse/mylyn/xplanner/tests/XPlannerRepositoryUiTest.java,v >retrieving revision 1.3 >diff -u -r1.3 XPlannerRepositoryUiTest.java >--- src/org/eclipse/mylyn/xplanner/tests/XPlannerRepositoryUiTest.java 24 Jul 2009 12:04:24 -0000 1.3 >+++ src/org/eclipse/mylyn/xplanner/tests/XPlannerRepositoryUiTest.java 22 May 2010 22:19:07 -0000 >@@ -51,7 +51,7 @@ > private void checkValidHyperlinks(TaskRepository repository, AbstractRepositoryConnectorUi connectorUi, > String testData, String id) throws Exception { > >- IHyperlink[] hyperlinks = connectorUi.findHyperlinks(repository, testData, -1, 0); >+ IHyperlink[] hyperlinks = connectorUi.findHyperlinks(repository, null, testData, -1, 0); > assertTrue(hyperlinks.length == 1); > assertTrue(((TaskHyperlink) hyperlinks[0]).getTaskId().equals(id)); > } >@@ -59,7 +59,7 @@ > private void checkInvalidHyperlinks(TaskRepository repository, AbstractRepositoryConnectorUi connectorUi, > String testData) throws Exception { > >- IHyperlink[] hyperlinks = connectorUi.findHyperlinks(repository, testData, -1, 0); >+ IHyperlink[] hyperlinks = connectorUi.findHyperlinks(repository, null, testData, -1, 0); > assertNull(hyperlinks); > } > } >#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 22 May 2010 22:19:07 -0000 >@@ -233,7 +233,7 @@ > } > }); > >- TextSourceViewerConfiguration viewerConfig = new RepositoryTextViewerConfiguration(repository, true); >+ 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.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 22 May 2010 22:19:08 -0000 >@@ -7,6 +7,7 @@ > * > * Contributors: > * Tasktop Technologies - initial API and implementation >+ * Frank Becker - improvements > *******************************************************************************/ > > package org.eclipse.mylyn.bugzilla.tests.ui; >@@ -22,15 +23,18 @@ > 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.ITask; > 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; > > /** > * @author Rob Elves > * @author Terry Hon >+ * @author Frank Becker > */ > public class BugzillaTaskHyperlinkDetectorTest extends TestCase { > >@@ -44,73 +48,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 +148,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 ITask task; >+ > @Override > protected void setUp() throws Exception { > super.setUp(); >@@ -137,11 +170,16 @@ > > repository1 = new TaskRepository(BugzillaCorePlugin.CONNECTOR_KIND, "repository_url1"); > repository2 = new TaskRepository(BugzillaCorePlugin.CONNECTOR_KIND, "repository_url2"); >- >+ task = 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 == ITask.class) { >+ return task; >+ } >+ return null; > } > }); > setRepository(repository1); >@@ -152,15 +190,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 +219,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 +255,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 +302,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 +349,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 +396,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 +415,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 +445,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 +464,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 +493,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 +641,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 +651,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/tasks/ui/editors/AbstractTaskEditorExtension.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorExtension.java,v >retrieving revision 1.2 >diff -u -r1.2 AbstractTaskEditorExtension.java >--- src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorExtension.java 5 Dec 2008 23:26:36 -0000 1.2 >+++ src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorExtension.java 22 May 2010 22:19:09 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2004, 2008 David Green and others. >+ * Copyright (c) 2008 David Green 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 >@@ -7,10 +7,12 @@ > * > * Contributors: > * David Green - initial API and implementation >+ * Tasktop Technologies - improvements > *******************************************************************************/ > > package org.eclipse.mylyn.tasks.ui.editors; > >+import org.eclipse.core.runtime.IAdaptable; > import org.eclipse.jface.text.source.SourceViewer; > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.swt.widgets.Composite; >@@ -27,6 +29,8 @@ > > /** > * The key to access the {@link TaskRepository} property that stores the URL of an associated wiki. >+ * >+ * @since 3.1 > */ > public static final String INTERNAL_WIKI_LINK_PATTERN = "wikiLinkPattern"; //$NON-NLS-1$ > >@@ -40,10 +44,31 @@ > * the control parent of the source viewer > * @param style > * the styles to use >+ * @deprecated use {@link #createViewer(TaskRepository, Composite, int, IAdaptable)} instead >+ * @since 3.1 > */ >+ @Deprecated > public abstract SourceViewer createViewer(TaskRepository taskRepository, Composite parent, int style); > > /** >+ * Creates a source viewer that can be used to view content in the task editor. The source viewer should be >+ * configured with a source viewer configuration prior to returning. >+ * >+ * @param taskRepository >+ * the task repository for which the viewer is created >+ * @param parent >+ * the control parent of the source viewer >+ * @param style >+ * the styles to use >+ * @param context >+ * the context for the hyperlink detector, may be null >+ * @since 3.4 >+ */ >+ public SourceViewer createViewer(TaskRepository taskRepository, Composite parent, int style, IAdaptable context) { >+ return createViewer(taskRepository, parent, style); >+ } >+ >+ /** > * Creates a source viewer that can be used to edit content in the task editor. The source viewer should be > * configured with a source viewer configuration prior to returning. > * >@@ -53,12 +78,35 @@ > * the control parent of the source viewer > * @param style > * the styles to use >+ * @deprecated use {@link #createViewer(TaskRepository, Composite, int, IAdaptable)} instead >+ * @since 3.1 > */ >+ @Deprecated > public abstract SourceViewer createEditor(TaskRepository taskRepository, Composite parent, int style); > > /** > * Returns the editor context id, to be passed to the {@link IContextService} when the editor is in focus. >+ * >+ * @since 3.1 > */ > public abstract String getEditorContextId(); > >+ /** >+ * Creates a source viewer that can be used to edit content in the task editor. The source viewer should be >+ * configured with a source viewer configuration prior to returning. >+ * >+ * @param taskRepository >+ * the task repository for which the viewer is created >+ * @param parent >+ * the control parent of the source viewer >+ * @param style >+ * the styles to use >+ * @param context >+ * the context for the hyperlink detector, may be null >+ * @since 3.4 >+ */ >+ public SourceViewer createEditor(TaskRepository taskRepository, Composite parent, int style, IAdaptable context) { >+ return createEditor(taskRepository, parent, style); >+ } >+ > } >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 22 May 2010 22:19:09 -0000 >@@ -17,6 +17,7 @@ > import java.util.Iterator; > > import org.eclipse.core.runtime.Assert; >+import org.eclipse.core.runtime.IAdaptable; > import org.eclipse.core.runtime.ListenerList; > import org.eclipse.jface.action.Action; > import org.eclipse.jface.action.IAction; >@@ -33,6 +34,7 @@ > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonThemes; > 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.ITask; > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.mylyn.tasks.ui.editors.AbstractRenderingEngine; > import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorExtension; >@@ -160,12 +162,21 @@ > > private final ListenerList stateChangedListeners = new ListenerList(ListenerList.IDENTITY); > >+ private final ITask task; >+ >+ @Deprecated > public RichTextEditor(TaskRepository repository, int style) { >- this(repository, style, null, null); >+ this(repository, style, null, null, null); > } > >+ @Deprecated > public RichTextEditor(TaskRepository repository, int style, IContextService contextService, > AbstractTaskEditorExtension extension) { >+ this(repository, style, contextService, extension, null); >+ } >+ >+ public RichTextEditor(TaskRepository repository, int style, IContextService contextService, >+ AbstractTaskEditorExtension extension, ITask task) { > this.repository = repository; > this.style = style; > this.contextService = contextService; >@@ -173,11 +184,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) { >@@ -261,9 +273,11 @@ > > if (extension != null) { > if (isReadOnly()) { >- editorViewer = extension.createViewer(repository, editorComposite, style); >+ editorViewer = extension.createViewer(repository, editorComposite, style, >+ createHyperlinkDetectorContext()); > } else { >- editorViewer = extension.createEditor(repository, editorComposite, style); >+ editorViewer = extension.createEditor(repository, editorComposite, style, >+ createHyperlinkDetectorContext()); > editorViewer.getTextWidget().addFocusListener(new FocusListener() { > public void focusGained(FocusEvent e) { > setContext(); >@@ -301,10 +315,25 @@ > } > } > >+ @SuppressWarnings( { "rawtypes" }) >+ private IAdaptable createHyperlinkDetectorContext() { >+ return new IAdaptable() { >+ public Object getAdapter(Class adapter) { >+ if (adapter == TaskRepository.class) { >+ return repository; >+ } >+ if (adapter == ITask.class) { >+ return task; >+ } >+ return null; >+ } >+ }; >+ } >+ > 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 +456,8 @@ > } > > public static RepositoryTextViewerConfiguration installHyperlinkPresenter(ISourceViewer viewer, >- TaskRepository repository, Mode mode) { >- RepositoryTextViewerConfiguration configuration = new RepositoryTextViewerConfiguration(repository, false); >+ TaskRepository repository, ITask 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/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 22 May 2010 22:19:09 -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.tasks.core.ITask; > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.mylyn.tasks.ui.TaskHyperlinkPresenter; > import org.eclipse.swt.SWT; >@@ -65,11 +66,22 @@ > > private Mode mode; > >+ private final ITask task; >+ >+ /** >+ * @deprecated use {@link #RepositoryTextViewerConfiguration(TaskRepository, ITask, boolean)} instead. >+ */ >+ @Deprecated > public RepositoryTextViewerConfiguration(TaskRepository taskRepository, boolean spellCheck) { >+ this(taskRepository, null, spellCheck); >+ } >+ >+ public RepositoryTextViewerConfiguration(TaskRepository taskRepository, ITask task, boolean spellCheck) { > super(EditorsUI.getPreferenceStore()); > this.taskRepository = taskRepository; > this.spellCheck = spellCheck; > this.mode = Mode.DEFAULT; >+ this.task = task; > } > > public Mode getMode() { >@@ -148,6 +160,8 @@ > public Object getAdapter(Class adapter) { > if (adapter == TaskRepository.class) { > return getTaskRepository(); >+ } else if (adapter == ITask.class) { >+ return getTask(); > } > return null; > } >@@ -208,4 +222,8 @@ > return assistant; > } > >+ public ITask getTask() { >+ return task; >+ } >+ > } >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 22 May 2010 22:19:09 -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(), >+ 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/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 22 May 2010 22:19:09 -0000 >@@ -337,12 +337,13 @@ > AbstractTaskEditorExtension extension = TaskEditorExtensions.getTaskEditorExtension(getRepository()); > if (extension != null) { > noteEditor = new RichTextEditor(getRepository(), SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL, >- contextService, extension); >+ contextService, extension, getTask()); > } > } > } > if (noteEditor == null) { >- noteEditor = new RichTextEditor(getRepository(), SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); >+ noteEditor = new RichTextEditor(getRepository(), SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL, null, >+ null, getTask()); > } > noteEditor.setSpellCheckingEnabled(true); > noteEditor.createControl(composite, toolkit); >@@ -398,8 +399,9 @@ > if (noteEditor.getViewer() != null) { > noteEditor.getViewer().getTextWidget().addFocusListener(removePersonalNotesFocusListener); > if (changeColor) { >- noteEditor.getViewer().getTextWidget().setForeground( >- composite.getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); >+ noteEditor.getViewer() >+ .getTextWidget() >+ .setForeground(composite.getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); > } > } > >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 22 May 2010 22:19:09 -0000 >@@ -70,10 +70,13 @@ > > private void createSummaryControl(Composite composite, final FormToolkit toolkit) { > Composite borderComposite = EditorUtil.createBorder(composite, toolkit); >- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).hint(EditorUtil.MAXIMUM_WIDTH, SWT.DEFAULT).grab( >- true, false).applyTo(borderComposite); >+ 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(), SWT.SINGLE, null, null, getTask()); > summaryEditor.setSpellCheckingEnabled(true); > summaryEditor.setReadOnly(!isSummaryEditable()); > summaryEditor.createControl(borderComposite, toolkit); >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 22 May 2010 22:19:09 -0000 >@@ -47,7 +47,7 @@ > } > SourceViewer viewer = new SourceViewer(parent, null, style); > RepositoryTextViewerConfiguration configuration = RichTextEditor.installHyperlinkPresenter(viewer, >- getModel().getTaskRepository(), Mode.DEFAULT); >+ getModel().getTaskRepository(), 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/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 22 May 2010 22:19:09 -0000 >@@ -20,6 +20,7 @@ > import org.eclipse.jface.text.hyperlink.IHyperlink; > import org.eclipse.jface.util.SafeRunnable; > import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; >+import org.eclipse.mylyn.tasks.core.ITask; > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi; > import org.eclipse.mylyn.tasks.ui.AbstractTaskHyperlinkDetector; >@@ -47,7 +48,8 @@ > } > > public void run() throws Exception { >- links[0] = connectorUi.findHyperlinks(repository, content, index, contentOffset); >+ final ITask task = (ITask) getAdapter(ITask.class); >+ links[0] = connectorUi.findHyperlinks(repository, task, content, index, contentOffset); > } > > }); >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorCommentPart.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorCommentPart.java,v >retrieving revision 1.68 >diff -u -r1.68 TaskEditorCommentPart.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorCommentPart.java 17 Apr 2010 19:24:17 -0000 1.68 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorCommentPart.java 22 May 2010 22:19:09 -0000 >@@ -811,7 +811,10 @@ > for (CommentGroupViewer groupViewer : groupViewers) { > for (CommentViewer viewer : groupViewer.getCommentViewers()) { > if (viewer.getTaskAttribute().equals(commentAttribute)) { >- CommonFormUtil.ensureVisible(viewer.getControl()); >+ //CommonFormUtil.ensureVisible(viewer.getControl()); >+ // EditorUtil is consistent with behavior of outline >+ EditorUtil.reveal(getTaskEditorPage().getManagedForm().getForm(), commentAttribute.getId()); >+ return viewer; > } > } > } >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 22 May 2010 22:19:09 -0000 >@@ -53,7 +53,7 @@ > 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, style, contextService, extension, getModel().getTask()) { > @Override > public void valueChanged(String value) { > if (!ignoreNotification) { >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 22 May 2010 22:19:09 -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(), SWT.FLAT | SWT.SINGLE, null, null, getTask()) { > @Override > protected void valueChanged(String value) { > updateButtons(); >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.85 >diff -u -r1.85 AbstractRepositoryConnectorUi.java >--- src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java 12 May 2010 01:22:43 -0000 1.85 >+++ src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java 22 May 2010 22:19:09 -0000 >@@ -239,7 +239,9 @@ > * the offset of <code>text</code> > * @return an array of hyperlinks, or null if no hyperlinks were found > * @since 2.0 >+ * @deprecated use {@link #findHyperlinks(TaskRepository, ITask, String, int, int)} instead > */ >+ @Deprecated > public IHyperlink[] findHyperlinks(TaskRepository repository, String text, int index, int textOffset) { > return null; > } >@@ -266,4 +268,25 @@ > 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, can be <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[] findHyperlinks(TaskRepository repository, ITask task, String text, int index, int textOffset) { >+ return findHyperlinks(repository, text, index, textOffset); >+ } > } >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 22 May 2010 22:19:09 -0000 >@@ -148,7 +148,7 @@ > } > > commentEditor = new RichTextEditor(getModel().getTaskRepository(), SWT.V_SCROLL | SWT.BORDER | SWT.WRAP, >- contextService, extension) { >+ contextService, extension, getModel().getTask()) { > @Override > protected void valueChanged(String value) { > apply(); >#P org.eclipse.mylyn.wikitext.tasks.ui >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.23 >diff -u -r1.23 MarkupTaskEditorExtension.java >--- src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension.java 8 Apr 2010 12:02:10 -0000 1.23 >+++ src/org/eclipse/mylyn/wikitext/tasks/ui/editor/MarkupTaskEditorExtension.java 22 May 2010 22:19:10 -0000 >@@ -7,6 +7,8 @@ > * > * Contributors: > * David Green - initial API and implementation >+ * Frank Becker - improvements for bug 304910 >+ * Tasktop Technologies - improvements > *******************************************************************************/ > package org.eclipse.mylyn.wikitext.tasks.ui.editor; > >@@ -100,8 +102,14 @@ > return MarkupEditor.CONTEXT; > } > >+ @Deprecated > @Override > public SourceViewer createViewer(TaskRepository taskRepository, Composite parent, int style) { >+ return createViewer(taskRepository, parent, style, null); >+ } >+ >+ @Override >+ public SourceViewer createViewer(TaskRepository taskRepository, Composite parent, int style, IAdaptable context) { > if (markupLanguage == null) { > throw new IllegalStateException(); > } >@@ -157,24 +165,45 @@ > > protected TaskMarkupViewerConfiguration createViewerConfiguration(TaskRepository taskRepository, > MarkupViewer markupViewer) { >- return new TaskMarkupViewerConfiguration(markupViewer, taskRepository); >+ return createViewerConfiguration(taskRepository, markupViewer, null); >+ } >+ >+ /** >+ * @since 1.3 >+ */ >+ protected TaskMarkupViewerConfiguration createViewerConfiguration(TaskRepository taskRepository, >+ MarkupViewer markupViewer, IAdaptable context) { >+ return new TaskMarkupViewerConfiguration(markupViewer, taskRepository, context); > } > > protected TaskMarkupSourceViewerConfiguration createSourceViewerConfiguration(TaskRepository taskRepository, > SourceViewer viewer) { >+ return createSourceViewerConfiguration(taskRepository, viewer, null); >+ } >+ >+ /** >+ * @since 1.3 >+ */ >+ protected TaskMarkupSourceViewerConfiguration createSourceViewerConfiguration(TaskRepository taskRepository, >+ SourceViewer viewer, IAdaptable context) { > IPreferenceStore preferenceStore = EditorsUI.getPreferenceStore(); >- return new TaskMarkupSourceViewerConfiguration(preferenceStore, taskRepository); >+ return new TaskMarkupSourceViewerConfiguration(preferenceStore, taskRepository, context); > } > >- @SuppressWarnings("unchecked") >+ @Deprecated > @Override > public SourceViewer createEditor(TaskRepository taskRepository, Composite parent, int style) { >+ return createEditor(taskRepository, parent, style, null); >+ } >+ >+ @Override >+ public SourceViewer createEditor(TaskRepository taskRepository, Composite parent, int style, IAdaptable context) { > 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, viewer); >+ MarkupSourceViewerConfiguration configuration = createSourceViewerConfiguration(taskRepository, viewer, context); > > configuration.setMarkupLanguage(markupLanguageCopy); > configuration.setShowInTarget(new ShowInTargetBridge(viewer)); >@@ -257,10 +286,25 @@ > > private final TaskRepository taskRepository; > >+ private final IAdaptable context; >+ > public TaskMarkupSourceViewerConfiguration(IPreferenceStore preferenceStore, TaskRepository taskRepository) { >+ this(preferenceStore, taskRepository, null); >+ } >+ >+ /** >+ * @since 1.3 >+ */ >+ public TaskMarkupSourceViewerConfiguration(IPreferenceStore preferenceStore, TaskRepository taskRepository, >+ IAdaptable context) { > super(preferenceStore, WikiTextTasksUiPlugin.FONT_REGISTRY_KEY_DEFAULT_FONT, > WikiTextTasksUiPlugin.FONT_REGISTRY_KEY_MONOSPACE_FONT); > this.taskRepository = taskRepository; >+ if (context == null) { >+ this.context = createDefaultHyperlinkDetectorContext(taskRepository); >+ } else { >+ this.context = context; >+ } > // 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$ >@@ -286,7 +330,7 @@ > @Override > protected Map getHyperlinkDetectorTargets(ISourceViewer sourceViewer) { > Map hyperlinkDetectorTargets = super.getHyperlinkDetectorTargets(sourceViewer); >- addRepositoryHyperlinkDetectorTargets(taskRepository, hyperlinkDetectorTargets); >+ addRepositoryHyperlinkDetectorTargets(context, hyperlinkDetectorTargets); > return hyperlinkDetectorTargets; > } > >@@ -317,9 +361,23 @@ > > private final TaskRepository taskRepository; > >+ private final IAdaptable context; >+ > public TaskMarkupViewerConfiguration(MarkupViewer viewer, TaskRepository taskRepository) { >+ this(viewer, taskRepository, null); >+ } >+ >+ /** >+ * @since 1.3 >+ */ >+ public TaskMarkupViewerConfiguration(MarkupViewer viewer, TaskRepository taskRepository, IAdaptable context) { > super(viewer); > this.taskRepository = taskRepository; >+ if (context == null) { >+ this.context = createDefaultHyperlinkDetectorContext(taskRepository); >+ } else { >+ this.context = context; >+ } > markupHyperlinksFirst = false; > } > >@@ -327,7 +385,7 @@ > @Override > protected Map getHyperlinkDetectorTargets(ISourceViewer sourceViewer) { > Map hyperlinkDetectorTargets = super.getHyperlinkDetectorTargets(sourceViewer); >- addRepositoryHyperlinkDetectorTargets(taskRepository, hyperlinkDetectorTargets); >+ addRepositoryHyperlinkDetectorTargets(context, hyperlinkDetectorTargets); > return hyperlinkDetectorTargets; > } > >@@ -355,17 +413,20 @@ > } > } > >- @SuppressWarnings({ "rawtypes", "unchecked" }) >- private static void addRepositoryHyperlinkDetectorTargets(final TaskRepository taskRepository, >- Map hyperlinkDetectorTargets) { >- IAdaptable context = new IAdaptable() { >+ @SuppressWarnings( { "rawtypes" }) >+ private static IAdaptable createDefaultHyperlinkDetectorContext(final TaskRepository repository) { >+ return new IAdaptable() { > public Object getAdapter(Class adapter) { > if (adapter == TaskRepository.class) { >- return taskRepository; >+ return repository; > } > return null; > } > }; >+ } >+ >+ @SuppressWarnings( { "unchecked" }) >+ private static void addRepositoryHyperlinkDetectorTargets(IAdaptable context, Map hyperlinkDetectorTargets) { > hyperlinkDetectorTargets.put(ID_CONTEXT_EDITOR_TEXT, context); > hyperlinkDetectorTargets.put(ID_CONTEXT_EDITOR_TASK, context); > } >#P org.eclipse.mylyn.bugzilla.ui >Index: src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java,v >retrieving revision 1.53 >diff -u -r1.53 BugzillaConnectorUi.java >--- src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java 2 Apr 2010 17:55:48 -0000 1.53 >+++ src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java 22 May 2010 22:19:11 -0000 >@@ -8,6 +8,7 @@ > * Contributors: > * Tasktop Technologies - initial API and implementation > * Eugene Kuleshov - improvements >+ * Frank Becker - improvements > *******************************************************************************/ > > package org.eclipse.mylyn.internal.bugzilla.ui.tasklist; >@@ -48,18 +49,24 @@ > > /** > * @author Mik Kersten >+ * @author Robert Elves >+ * @author Frank Becker > */ > public class BugzillaConnectorUi extends AbstractRepositoryConnectorUi { > >- private static final int TASK_NUM_GROUP = 5; >+ private static final int GET_TASK_NUM_GROUP = 8; > >- private static final int COMMENT_NUM_GROUP = 10; >+ private static final int GET_COMMENT_NUM_GROUP = 13; > >- private static final int ATTACHMENT_NUM_GROUP = 14; >+ private static final int GET_ATTACHMENT_NUM_GROUP = 3; > >- private static final String regexp = "(?:(duplicate of|(\\W||^)+bug|(\\W|^)+task)( ?#? ?)(\\d+)((\\s)*(comment|c)(\\s#|#|#\\s|\\s|)(\\s\\d+|\\d+))?)|(?:(Created (an )?attachment\\s*(\\(id=)?(\\d+)))"; //$NON-NLS-1$ >+ private static final String regexp_bug = "(((duplicate of|((\\W||^)+(bug|task)))( ?#? ?)(\\d+))?((\\W||\\s)*(comment|c)??(\\s*#\\s*)(\\d+))?)"; //$NON-NLS-1$ > >- private static final Pattern PATTERN = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE); >+ private static final String regexp_attachment = "Created (an )?attachment\\s*(\\(id=)?(\\d+)"; //$NON-NLS-1$ >+ >+ private static final Pattern PATTERN_BUG = Pattern.compile(regexp_bug, Pattern.CASE_INSENSITIVE); >+ >+ private static final Pattern PATTERN_ATTACHMENT = Pattern.compile(regexp_attachment, Pattern.CASE_INSENSITIVE); > > @Override > public String getAccountCreationUrl(TaskRepository taskRepository) { >@@ -122,26 +129,6 @@ > } > > @Override >- public IHyperlink[] findHyperlinks(TaskRepository repository, String text, int index, int textOffset) { >- ArrayList<IHyperlink> hyperlinksFound = null; >- >- Matcher m = PATTERN.matcher(text); >- while (m.find()) { >- if (index == -1 || (index >= m.start() && index <= m.end())) { >- IHyperlink link = extractHyperlink(repository, textOffset, m); >- if (link != null) { >- if (hyperlinksFound == null) { >- hyperlinksFound = new ArrayList<IHyperlink>(); >- } >- hyperlinksFound.add(link); >- } >- } >- } >- >- return (hyperlinksFound != null) ? hyperlinksFound.toArray(new IHyperlink[0]) : null; >- } >- >- @Override > public String getTaskKindLabel(ITask repositoryTask) { > return IBugzillaConstants.BUGZILLA_TASK_KIND; > } >@@ -191,14 +178,47 @@ > return custom != null && custom.equals(Boolean.TRUE.toString()); > } > >- private static IHyperlink extractHyperlink(TaskRepository repository, int regionOffset, Matcher m) { >+ @Override >+ public IWizardPage getTaskAttachmentPage(TaskAttachmentModel model) { >+ return new BugzillaTaskAttachmentPage(model); >+ } > >- int start = -1; >+ @Override >+ public IHyperlink[] findHyperlinks(TaskRepository repository, ITask task, String text, int index, int textOffset) { >+ ArrayList<IHyperlink> hyperlinksFound = null; >+ Matcher mb = PATTERN_BUG.matcher(text); >+ while (mb.find()) { >+ if (index == -1 || (index >= mb.start() && index <= mb.end())) { >+ IHyperlink link = extractHyperlinkBug(repository, task, textOffset, mb); >+ if (link != null) { >+ if (hyperlinksFound == null) { >+ hyperlinksFound = new ArrayList<IHyperlink>(); >+ } >+ hyperlinksFound.add(link); >+ } >+ } >+ } >+ Matcher ma = PATTERN_ATTACHMENT.matcher(text); >+ while (ma.find()) { >+ if (index == -1 || (index >= ma.start() && index <= ma.end())) { >+ IHyperlink link = extractHyperlinkAttachment(repository, textOffset, ma); >+ if (link != null) { >+ if (hyperlinksFound == null) { >+ hyperlinksFound = new ArrayList<IHyperlink>(); >+ } >+ hyperlinksFound.add(link); >+ } >+ } >+ } >+ >+ return (hyperlinksFound != null) ? hyperlinksFound.toArray(new IHyperlink[0]) : null; >+ } > >- int a = m.groupCount(); >+ private static IHyperlink extractHyperlinkBug(TaskRepository repository, ITask task, int regionOffset, Matcher m) { > >+ int start = m.start(); > if (m.group().startsWith("duplicate")) { //$NON-NLS-1$ >- start = m.start() + m.group().indexOf(m.group(TASK_NUM_GROUP)); >+ start = m.start() + m.group().indexOf(m.group(GET_TASK_NUM_GROUP)); > } else { > start = m.start(); > for (int index = 0; index < m.group().length() && !Character.isLetter(m.group().charAt(index)); index++, start++) { >@@ -211,38 +231,62 @@ > end = m.group().length(); > } > >- try { >- start += regionOffset; >- end += regionOffset; >- >- String bugId = m.group(TASK_NUM_GROUP); >- if (bugId == null) { >- String attachmentId = m.group(ATTACHMENT_NUM_GROUP); >- if (attachmentId != null) { >- start = start + m.group().indexOf(m.group(ATTACHMENT_NUM_GROUP)); >- >- IRegion sregion = new Region(start, end - start); >- return new TaskAttachmentHyperlink(sregion, repository, attachmentId); >+ start += regionOffset; >+ end += regionOffset; >+ String bugId = m.group(GET_TASK_NUM_GROUP); >+ if (bugId == null) { >+ String commentId = m.group(GET_COMMENT_NUM_GROUP); >+ IRegion sregion = new Region(start, end - start); >+ if (commentId != null) { >+ String taskID; >+ if (task != null) { >+ taskID = task.getTaskId(); >+ } else { >+ taskID = ""; //$NON-NLS-1$ > } >- } else { >- bugId.trim(); >- IRegion sregion = new Region(start, end - start); >- TaskHyperlink taskHyperLink = new TaskHyperlink(sregion, repository, bugId); >- String commentId = m.group(COMMENT_NUM_GROUP); >+ TaskHyperlink taskHyperLink = new TaskHyperlink(sregion, repository, taskID); > if (commentId != null) { > taskHyperLink.setSelection(TaskAttribute.PREFIX_COMMENT + commentId); > } > return taskHyperLink; >- } > >- } catch (NumberFormatException e) { >+ } >+ } else { >+ bugId.trim(); >+ IRegion sregion = new Region(start, end - start); >+ TaskHyperlink taskHyperLink = new TaskHyperlink(sregion, repository, bugId); >+ String commentId = m.group(GET_COMMENT_NUM_GROUP); >+ if (commentId != null) { >+ taskHyperLink.setSelection(TaskAttribute.PREFIX_COMMENT + commentId); >+ } >+ return taskHyperLink; > } > return null; > } > >- @Override >- public IWizardPage getTaskAttachmentPage(TaskAttachmentModel model) { >- return new BugzillaTaskAttachmentPage(model); >- } >+ private static IHyperlink extractHyperlinkAttachment(TaskRepository repository, int regionOffset, Matcher m) { >+ >+ int start = -1; >+ start = m.start(); >+ for (int index = 0; index < m.group().length() && !Character.isLetter(m.group().charAt(index)); index++, start++) { >+ } >+ >+ int end = m.end(); >+ >+ if (end == -1) { >+ end = m.group().length(); >+ } >+ >+ start += regionOffset; >+ end += regionOffset; > >+ String attachmentId = m.group(GET_ATTACHMENT_NUM_GROUP); >+ if (attachmentId != null) { >+ start = start + m.group().indexOf(m.group(GET_ATTACHMENT_NUM_GROUP)); >+ >+ IRegion sregion = new Region(start, end - start); >+ return new TaskAttachmentHyperlink(sregion, repository, attachmentId); >+ } >+ return null; >+ } > }
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