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 88078 Details for
Bug 167941
resolved bugs hyperlinks in comments should appear in a strikethrought font
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
2. Prove of concept for comment#6
patch167941Neu.txt (text/plain), 11.73 KB, created by
Frank Becker
on 2008-01-28 19:19:28 EST
(
hide
)
Description:
2. Prove of concept for comment#6
Filename:
MIME Type:
Creator:
Frank Becker
Created:
2008-01-28 19:19:28 EST
Size:
11.73 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.tasks.ui >Index: src/org/eclipse/mylyn/tasks/ui/editors/TaskFormPage.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskFormPage.java,v >retrieving revision 1.17 >diff -u -r1.17 TaskFormPage.java >--- src/org/eclipse/mylyn/tasks/ui/editors/TaskFormPage.java 7 Jan 2008 04:14:52 -0000 1.17 >+++ src/org/eclipse/mylyn/tasks/ui/editors/TaskFormPage.java 29 Jan 2008 00:14:37 -0000 >@@ -271,7 +271,7 @@ > // order for > // Hyperlink colouring to work. (Presenter needs document object up > // front) >- TaskTextViewerConfiguration repositoryViewerConfig = new TaskTextViewerConfiguration(false); >+ TaskTextViewerConfiguration repositoryViewerConfig = new TaskTextViewerConfiguration(false, repository); > commentViewer.configure(repositoryViewerConfig); > > IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); >@@ -405,7 +405,7 @@ > > // NOTE: Configuration must be applied before the document is set in order for > // Hyperlink coloring to work. (Presenter needs document object up front) >- TextSourceViewerConfiguration viewerConfig = new TaskTextViewerConfiguration(spellCheck); >+ TextSourceViewerConfiguration viewerConfig = new TaskTextViewerConfiguration(spellCheck, repository); > commentViewer.configure(viewerConfig); > > commentViewer.setDocument(document, annotationModel); >Index: src/org/eclipse/mylyn/tasks/ui/editors/TaskTextViewerConfiguration.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskTextViewerConfiguration.java,v >retrieving revision 1.7 >diff -u -r1.7 TaskTextViewerConfiguration.java >--- src/org/eclipse/mylyn/tasks/ui/editors/TaskTextViewerConfiguration.java 24 Jan 2008 03:10:32 -0000 1.7 >+++ src/org/eclipse/mylyn/tasks/ui/editors/TaskTextViewerConfiguration.java 29 Jan 2008 00:14:37 -0000 >@@ -15,6 +15,7 @@ > import org.eclipse.core.runtime.IAdaptable; > import org.eclipse.jface.preference.JFacePreferences; > import org.eclipse.jface.resource.JFaceResources; >+import org.eclipse.jface.text.BadLocationException; > import org.eclipse.jface.text.IDocument; > import org.eclipse.jface.text.IRegion; > import org.eclipse.jface.text.TextAttribute; >@@ -44,6 +45,7 @@ > import org.eclipse.swt.custom.StyleRange; > import org.eclipse.swt.graphics.Color; > import org.eclipse.swt.widgets.Control; >+import org.eclipse.swt.widgets.Display; > import org.eclipse.ui.editors.text.EditorsUI; > import org.eclipse.ui.editors.text.TextSourceViewerConfiguration; > >@@ -60,10 +62,13 @@ > private RepositoryTextScanner scanner = null; > > private boolean spellcheck = false; >+ >+ private TaskRepository repository; > >- public TaskTextViewerConfiguration(boolean spellchecking) { >+ public TaskTextViewerConfiguration(boolean spellchecking, TaskRepository repository) { > super(EditorsUI.getPreferenceStore()); > this.spellcheck = spellchecking; >+ this.repository = repository; > } > > @Override >@@ -80,7 +85,7 @@ > > private RepositoryTextScanner getDefaultScanner() { > if (scanner == null) { >- scanner = new RepositoryTextScanner(); >+ scanner = new RepositoryTextScanner(repository); > } > return scanner; > } >@@ -196,40 +201,72 @@ > super.hideHyperlinks(); > } > >+ @Override > public void uninstall() { > // ignore > super.uninstall(); > } > } > >- private static class RepositoryTextScanner extends RuleBasedScanner { >+ public static class RepositoryTextScanner extends RuleBasedScanner { > >- public RepositoryTextScanner() { >- IToken bugToken = new Token(new TextAttribute(JFaceResources.getColorRegistry().get( >- JFacePreferences.ACTIVE_HYPERLINK_COLOR))); >+ public RepositoryTextScanner(TaskRepository repository) { >+ IToken urlToken = new Token(new TextAttribute(JFaceResources.getColorRegistry().get( >+ JFacePreferences.ACTIVE_HYPERLINK_COLOR))); >+ IToken bugToken = new Token(new TextAttribute(new Color(Display.getDefault(),255,128,128))); >+ IToken bugTokenCompleted = new Token(new TextAttribute(new Color(Display.getDefault(),255,128,128), new Color(Display.getDefault(),255,255,255),TextAttribute.STRIKETHROUGH)); //TaskListColorsAndFonts.GRAY)); //JFaceResources.getColorRegistry().get( >+ IToken bugTokenNotFound = new Token(new TextAttribute(new Color(Display.getDefault(),255,0,0), new Color(Display.getDefault(),255,255,255),TextAttribute.UNDERLINE)); //TaskListColorsAndFonts.GRAY)); //JFaceResources.getColorRegistry().get( > IToken quoteToken = new Token(new TextAttribute(TaskListColorsAndFonts.COLOR_QUOTED_TEXT)); >- IRule[] rules = new IRule[16]; >- rules[0] = (new SingleLineRule("http://", " ", bugToken)); >- rules[1] = (new SingleLineRule("https://", " ", bugToken)); >- rules[2] = (new SingleLineRule("bug#", " ", bugToken)); >- rules[3] = (new SingleLineRule("bug#", "", bugToken)); >- rules[4] = (new SingleLineRule("bug #", "", bugToken)); >- rules[5] = (new SingleLineRule("http://", "\n", bugToken)); >- rules[6] = (new SingleLineRule("https://", "\n", bugToken)); >- rules[7] = (new SingleLineRule("task#", " ", bugToken)); >- rules[8] = (new MultiLineRule("task#", "\n", bugToken)); >- rules[9] = (new MultiLineRule("task# ", " ", bugToken)); >- rules[10] = (new SingleLineRule("task #", "\n", bugToken)); >- rules[11] = (new SingleLineRule("*** This bug has been ", "***", bugToken)); >- rules[12] = (new SingleLineRule("http://", "", bugToken)); >- rules[13] = (new SingleLineRule("https://", "", bugToken)); >- rules[14] = (new MultiLineRule("task #", " ", bugToken)); >+ IRule[] rules = new IRule[14]; >+ rules[0] = (new SingleLineRule("http://", " ", urlToken)); >+ rules[1] = (new SingleLineRule("https://", " ", urlToken)); >+ rules[2] = (new TaskRule(repository, "^(duplicate of|bug|task)(\\s#|#|#\\s|\\s|)(\\s\\d+|\\d+)", 3, bugToken, bugTokenCompleted, bugTokenNotFound)); >+ rules[3] = (new SingleLineRule("http://", "\n", urlToken)); >+ rules[4] = (new SingleLineRule("https://", "\n", urlToken)); >+ rules[5] = (new SingleLineRule("task#", " ", bugToken)); >+ rules[6] = (new MultiLineRule("task#", "\n", bugToken)); >+ rules[7] = (new MultiLineRule("task# ", " ", bugToken)); >+ rules[8] = (new SingleLineRule("task #", "\n", bugToken)); >+ rules[9] = (new SingleLineRule("*** This bug has been ", "***", bugToken)); >+ rules[10] = (new SingleLineRule("http://", "", urlToken)); >+ rules[11] = (new SingleLineRule("https://", "", urlToken)); >+ rules[12] = (new MultiLineRule("task #", " ", bugToken)); > SingleLineRule quoteRule = new SingleLineRule(">", null, quoteToken, (char) 0, true); > quoteRule.setColumnConstraint(0); >- rules[15] = quoteRule; >+ rules[13] = quoteRule; > setRules(rules); > } >+ >+ public int getCharOffset() { >+ return fOffset; >+ } > >+ public void addToOffset(int length) { >+ fOffset += length; >+ } >+ >+ public String getTokenText(int start, int end) { >+ try { >+ return fDocument.get(start, end-start); >+ } catch (BadLocationException e) { >+ // TODO Auto-generated catch block >+ e.printStackTrace(); >+ } >+ return null; >+ } >+ >+ public String getLineTextFromPos() { >+ try { >+ int line= fDocument.getLineOfOffset(fOffset); >+ int start= fDocument.getLineOffset(line); >+ int length = fDocument.getLineLength(line); >+ >+ String erg = fDocument.get(fOffset, length-(fOffset-start)); >+ return erg; >+ } catch (BadLocationException ex) { >+ } >+ return null; >+ } > } > > } >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.1 >diff -u -r1.1 RichTextAttributeEditor.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextAttributeEditor.java 13 Jan 2008 08:06:39 -0000 1.1 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextAttributeEditor.java 29 Jan 2008 00:14:37 -0000 >@@ -124,7 +124,7 @@ > > // NOTE: configuration must be applied before the document is set in order for > // hyper link coloring to work, the Presenter requires the document object up front >- TextSourceViewerConfiguration viewerConfig = new TaskTextViewerConfiguration(spellCheckingEnabled); >+ TextSourceViewerConfiguration viewerConfig = new TaskTextViewerConfiguration(spellCheckingEnabled, taskRepository); > viewer.configure(viewerConfig); > > Document document = new Document(getValue()); >Index: src/org/eclipse/mylyn/tasks/ui/editors/TaskRule.java >=================================================================== >RCS file: src/org/eclipse/mylyn/tasks/ui/editors/TaskRule.java >diff -N src/org/eclipse/mylyn/tasks/ui/editors/TaskRule.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/tasks/ui/editors/TaskRule.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,86 @@ >+/******************************************************************************* >+ * Copyright (c) 2004, 2007 Mylyn project committers 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 >+ *******************************************************************************/ >+ >+package org.eclipse.mylyn.tasks.ui.editors; >+ >+import java.util.regex.Matcher; >+import java.util.regex.Pattern; >+ >+import org.eclipse.jface.text.rules.ICharacterScanner; >+import org.eclipse.jface.text.rules.IPredicateRule; >+import org.eclipse.jface.text.rules.IToken; >+import org.eclipse.jface.text.rules.Token; >+import org.eclipse.mylyn.tasks.core.AbstractTask; >+import org.eclipse.mylyn.tasks.core.TaskList; >+import org.eclipse.mylyn.tasks.core.TaskRepository; >+import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; >+import org.eclipse.mylyn.tasks.ui.editors.TaskTextViewerConfiguration.RepositoryTextScanner; >+ >+public class TaskRule implements IPredicateRule {//extends SingleLineRule { >+ >+ /** The token to be returned on success */ >+ protected IToken fToken; >+ >+ private TaskRepository repository; >+ >+ protected IToken fTokenCompleted; >+ >+ protected IToken fTokenNotFound; >+ >+ private Pattern fPattern; >+ >+ private int taskNumberGroupNumber; >+ >+ public TaskRule(TaskRepository repository, String regexp, int taskNumberGroupNumber, IToken token, IToken tokenCompleted, IToken tokenNotFound) { >+ this.repository = repository; >+ fToken = token; >+ fTokenCompleted = tokenCompleted; >+ fTokenNotFound = tokenNotFound; >+ this.taskNumberGroupNumber = taskNumberGroupNumber; >+ fPattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE); >+ } >+ >+ public IToken evaluate(ICharacterScanner scanner, boolean resume) { >+ >+ String text = ((RepositoryTextScanner)scanner).getLineTextFromPos(); >+ Matcher m = fPattern.matcher(text); >+ if (m.find()) { >+ String taskNumber = m.group(taskNumberGroupNumber); >+ taskNumber = taskNumber.trim(); >+ if (!taskNumber.equals("")) { >+ ((RepositoryTextScanner)scanner).addToOffset(m.end()); >+ TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList(); >+ String repositoryUrl = repository.getUrl(); >+ >+ AbstractTask task = taskList.getTask(repositoryUrl, taskNumber); >+ if (task == null) { >+ task = taskList.getTaskByKey(repositoryUrl, taskNumber); >+ } >+ if (task != null) { >+ if (task.isCompleted()) { >+ return fTokenCompleted; >+ } else { >+ return fToken; >+ } >+ } else { >+ return fTokenNotFound; >+ } >+ } >+ } >+ >+ return Token.UNDEFINED; >+ } >+ >+ public IToken getSuccessToken() { >+ return fToken; >+ } >+ >+ public IToken evaluate(ICharacterScanner scanner) { >+ return evaluate(scanner, false); >+ } >+}
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 167941
:
87571
|
87697
|
87698
|
87707
|
87711
|
87712
|
88044
|
88045
| 88078 |
88079
|
88334
|
88335
|
88674
|
88675
|
88720
|
88721
|
90296
|
90418
|
90419
|
90658
|
90659
|
110237
|
110238
|
110248
|
113800