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 75179 Details for
Bug 155280
provide spell checking correction recommendations in the task editor
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
spellchecking quickfix for comment editor and other editors created trough addTextViewer()
clipboard.txt (text/plain), 16.71 KB, created by
Eugene Kuleshov
on 2007-08-01 20:31:53 EDT
(
hide
)
Description:
spellchecking quickfix for comment editor and other editors created trough addTextViewer()
Filename:
MIME Type:
Creator:
Eugene Kuleshov
Created:
2007-08-01 20:31:53 EDT
Size:
16.71 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.tasks.ui >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF,v >retrieving revision 1.352 >diff -u -r1.352 MANIFEST.MF >--- META-INF/MANIFEST.MF 27 Jul 2007 20:38:54 -0000 1.352 >+++ META-INF/MANIFEST.MF 2 Aug 2007 00:30:02 -0000 >@@ -6,6 +6,7 @@ > Bundle-Activator: org.eclipse.mylyn.tasks.ui.TasksUiPlugin > Require-Bundle: org.eclipse.ui, > org.eclipse.core.runtime, >+ org.eclipse.core.expressions, > org.eclipse.ui.forms, > org.eclipse.jface.text, > org.eclipse.mylyn.context.core, >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java,v >retrieving revision 1.11 >diff -u -r1.11 RepositoryViewerConfig.java >--- src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java 24 Jul 2007 04:56:35 -0000 1.11 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java 2 Aug 2007 00:30:02 -0000 >@@ -8,21 +8,14 @@ > > package org.eclipse.mylyn.internal.tasks.ui.editors; > >-import java.util.ArrayList; >-import java.util.Arrays; >-import java.util.List; >- >-import org.eclipse.core.runtime.NullProgressMonitor; > import org.eclipse.jface.text.IDocument; > import org.eclipse.jface.text.TextAttribute; > import org.eclipse.jface.text.hyperlink.DefaultHyperlinkPresenter; > import org.eclipse.jface.text.hyperlink.IHyperlink; >-import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; > import org.eclipse.jface.text.hyperlink.IHyperlinkPresenter; > import org.eclipse.jface.text.presentation.IPresentationReconciler; > import org.eclipse.jface.text.presentation.PresentationReconciler; > import org.eclipse.jface.text.reconciler.IReconciler; >-import org.eclipse.jface.text.reconciler.MonoReconciler; > import org.eclipse.jface.text.rules.DefaultDamagerRepairer; > import org.eclipse.jface.text.rules.IRule; > import org.eclipse.jface.text.rules.IToken; >@@ -30,11 +23,7 @@ > import org.eclipse.jface.text.rules.RuleBasedScanner; > import org.eclipse.jface.text.rules.SingleLineRule; > import org.eclipse.jface.text.rules.Token; >-import org.eclipse.jface.text.source.DefaultAnnotationHover; >-import org.eclipse.jface.text.source.IAnnotationHover; >-import org.eclipse.jface.text.source.IAnnotationModel; > import org.eclipse.jface.text.source.ISourceViewer; >-import org.eclipse.jface.text.source.SourceViewerConfiguration; > import org.eclipse.mylyn.internal.tasks.ui.TaskListColorsAndFonts; > import org.eclipse.mylyn.tasks.core.AbstractTask; > import org.eclipse.mylyn.tasks.core.TaskList; >@@ -43,36 +32,23 @@ > import org.eclipse.swt.SWT; > import org.eclipse.swt.graphics.RGB; > import org.eclipse.swt.widgets.Control; >+import org.eclipse.ui.editors.text.EditorsUI; >+import org.eclipse.ui.editors.text.TextSourceViewerConfiguration; > > /** > * @author Rob Elves > */ >-public class RepositoryViewerConfig extends SourceViewerConfiguration { >+public class RepositoryViewerConfig extends TextSourceViewerConfiguration { > > private RepositoryTextScanner scanner = null; > >- private TaskSpellingReconcileStrategy strategy = new TaskSpellingReconcileStrategy(); >- > private boolean spellcheck = false; > > public RepositoryViewerConfig(boolean spellchecking) { >+ super(EditorsUI.getPreferenceStore()); > this.spellcheck = spellchecking; > } > >- public void setAnnotationModel(IAnnotationModel model, IDocument doc) { >- strategy.setAnnotationModel(model); >- strategy.setDocument(doc); >- } >- >- @Override >- public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) { >- if (spellcheck) { >- return new DefaultAnnotationHover(); >- } else { >- return null; >- } >- } >- > @Override > public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { > PresentationReconciler reconciler = new PresentationReconciler(); >@@ -93,13 +69,6 @@ > } > > @Override >- public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) { >- List<IHyperlinkDetector> detectors = new ArrayList<IHyperlinkDetector>(); >- detectors.addAll(Arrays.asList(TasksUiPlugin.getDefault().getTaskHyperlinkDetectors())); >- return detectors.toArray(new IHyperlinkDetector[detectors.size()]); >- } >- >- @Override > public IHyperlinkPresenter getHyperlinkPresenter(final ISourceViewer sourceViewer) { > return new DefaultHyperlinkPresenter(new RGB(0, 0, 200)) { > @Override >@@ -153,11 +122,7 @@ > @Override > public IReconciler getReconciler(ISourceViewer sourceViewer) { > if (spellcheck) { >- MonoReconciler reconciler = new MonoReconciler(strategy, false); >- reconciler.setIsIncrementalReconciler(false); >- reconciler.setProgressMonitor(new NullProgressMonitor()); >- reconciler.setDelay(500); >- return reconciler; >+ return super.getReconciler(sourceViewer); > } else { > return null; > } >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.8 >diff -u -r1.8 TaskFormPage.java >--- src/org/eclipse/mylyn/tasks/ui/editors/TaskFormPage.java 10 Jul 2007 00:30:39 -0000 1.8 >+++ src/org/eclipse/mylyn/tasks/ui/editors/TaskFormPage.java 2 Aug 2007 00:30:02 -0000 >@@ -12,7 +12,10 @@ > import java.util.Iterator; > import java.util.List; > >+import org.eclipse.core.commands.IHandler; > import org.eclipse.core.resources.IMarker; >+import org.eclipse.jface.action.Action; >+import org.eclipse.jface.commands.ActionHandler; > import org.eclipse.jface.text.DefaultInformationControl; > import org.eclipse.jface.text.Document; > import org.eclipse.jface.text.IInformationControl; >@@ -27,16 +30,13 @@ > import org.eclipse.jface.text.TextViewer; > import org.eclipse.jface.text.source.Annotation; > import org.eclipse.jface.text.source.AnnotationModel; >-import org.eclipse.jface.text.source.AnnotationPainter; >-import org.eclipse.jface.text.source.AnnotationRulerColumn; >-import org.eclipse.jface.text.source.CompositeRuler; > import org.eclipse.jface.text.source.IAnnotationAccess; > import org.eclipse.jface.text.source.IAnnotationAccessExtension; > import org.eclipse.jface.text.source.IAnnotationHover; > import org.eclipse.jface.text.source.ISharedTextColors; > import org.eclipse.jface.text.source.ISourceViewer; > import org.eclipse.jface.text.source.ImageUtilities; >-import org.eclipse.jface.text.source.OverviewRuler; >+import org.eclipse.jface.text.source.SourceViewer; > import org.eclipse.mylyn.internal.tasks.ui.TaskListColorsAndFonts; > import org.eclipse.mylyn.internal.tasks.ui.editors.RepositoryTextViewer; > import org.eclipse.mylyn.internal.tasks.ui.editors.RepositoryViewerConfig; >@@ -44,6 +44,8 @@ > import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.swt.SWT; > import org.eclipse.swt.custom.StyledText; >+import org.eclipse.swt.events.DisposeEvent; >+import org.eclipse.swt.events.DisposeListener; > import org.eclipse.swt.events.FocusEvent; > import org.eclipse.swt.events.FocusListener; > import org.eclipse.swt.graphics.Color; >@@ -57,10 +59,21 @@ > import org.eclipse.swt.widgets.Display; > import org.eclipse.swt.widgets.Shell; > import org.eclipse.swt.widgets.Text; >+import org.eclipse.ui.ActiveShellExpression; >+import org.eclipse.ui.PlatformUI; > import org.eclipse.ui.actions.ActionFactory; >+import org.eclipse.ui.editors.text.EditorsUI; >+import org.eclipse.ui.editors.text.TextSourceViewerConfiguration; > import org.eclipse.ui.forms.IManagedForm; > import org.eclipse.ui.forms.editor.FormEditor; > import org.eclipse.ui.forms.editor.FormPage; >+import org.eclipse.ui.handlers.IHandlerActivation; >+import org.eclipse.ui.handlers.IHandlerService; >+import org.eclipse.ui.texteditor.AnnotationPreference; >+import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess; >+import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; >+import org.eclipse.ui.texteditor.MarkerAnnotationPreferences; >+import org.eclipse.ui.texteditor.SourceViewerDecorationSupport; > import org.eclipse.ui.themes.IThemeManager; > > /** >@@ -69,6 +82,8 @@ > * NOTE: likely to change for 3.0. > * > * @author Rob Elves >+ * @author Eugene Kuleshov (spelling correction) >+ * > * @ref: PDEFormPage.class ref: > * @ref: http://dev.eclipse.org/newslists/news.eclipse.platform.swt/msg19676.html > */ >@@ -80,8 +95,6 @@ > > protected List<TextViewer> textViewers = new ArrayList<TextViewer>(); > >- private static final ISharedTextColors sharedTextColors = new SharedTextColors(); >- > private void addTextViewer(TextViewer viewer) { > textViewers.add(viewer); > } >@@ -304,49 +317,32 @@ > actionContributor = ((TaskEditor) getEditor()).getContributor(); > } > >- CompositeRuler fCompositeRuler = null; >- OverviewRuler fOverviewRuler = null; >- IAnnotationAccess fAnnotationAccess = null; >- AnnotationRulerColumn annotationRuler = null; >- >- AnnotationModel fAnnotationModel = null; >- >- if (true) { >- fAnnotationModel = new AnnotationModel(); >- fAnnotationAccess = new AnnotationMarkerAccess(); >- >- fCompositeRuler = new CompositeRuler(); >- fOverviewRuler = new OverviewRuler(fAnnotationAccess, 12, sharedTextColors); >- annotationRuler = new AnnotationRulerColumn(fAnnotationModel, 16, fAnnotationAccess); >- fCompositeRuler.setModel(fAnnotationModel); >- fOverviewRuler.setModel(fAnnotationModel); >- >- // annotation ruler is decorating our composite ruler >- fCompositeRuler.addDecorator(0, annotationRuler); >- >- // what types are show on the different rulers >- annotationRuler.addAnnotationType(ErrorAnnotation.ERROR_TYPE); >- fOverviewRuler.addAnnotationType(ErrorAnnotation.ERROR_TYPE); >+ AnnotationModel annotationModel = new AnnotationModel(); >+ final RepositoryTextViewer commentViewer = new RepositoryTextViewer(null, null, repository, composite, style); >+ commentViewer.showAnnotations(false); >+ commentViewer.showAnnotationsOverview(false); > >- fOverviewRuler.addHeaderAnnotationType(ErrorAnnotation.ERROR_TYPE); >- fOverviewRuler.setAnnotationTypeLayer(ErrorAnnotation.ERROR_TYPE, 3); >+ IAnnotationAccess annotationAccess = new DefaultMarkerAnnotationAccess(); > >- fOverviewRuler.setAnnotationTypeColor(ErrorAnnotation.ERROR_TYPE, >- TaskListColorsAndFonts.COLOR_SPELLING_ERROR); >+ final SourceViewerDecorationSupport support = new SourceViewerDecorationSupport(commentViewer, null, >+ annotationAccess, EditorsUI.getSharedTextColors()); > >+ @SuppressWarnings("unchecked") >+ Iterator e = new MarkerAnnotationPreferences().getAnnotationPreferences().iterator(); >+ while (e.hasNext()) { >+ support.setAnnotationPreference((AnnotationPreference) e.next()); > } >- final RepositoryTextViewer commentViewer = new RepositoryTextViewer(fCompositeRuler, fOverviewRuler, >- repository, composite, style); >- commentViewer.showAnnotations(false); >- commentViewer.showAnnotationsOverview(false); > >- // to paint the annotations >- final AnnotationPainter ap = new AnnotationPainter(commentViewer, fAnnotationAccess); >- ap.addAnnotationType(ErrorAnnotation.ERROR_TYPE); >- ap.setAnnotationTypeColor(ErrorAnnotation.ERROR_TYPE, TaskListColorsAndFonts.COLOR_SPELLING_ERROR); >+ support.install(EditorsUI.getPreferenceStore()); >+ >+ commentViewer.getTextWidget().addDisposeListener(new DisposeListener() { >+ public void widgetDisposed(DisposeEvent e) { >+ support.uninstall(); >+ } >+ }); > >- // this will draw the squigglies under the text >- commentViewer.addPainter(ap); >+ final IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( >+ IHandlerService.class); > > IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); > >@@ -356,17 +352,24 @@ > commentViewer.addSelectionChangedListener(actionContributor); > > commentViewer.getTextWidget().addFocusListener(new FocusListener() { >- >+ private IHandlerActivation handlerActivation; >+ > public void focusGained(FocusEvent e) { >- > actionContributor.updateSelectableActions(commentViewer.getSelection()); > >+ handlerActivation = handlerService.activateHandler( >+ ITextEditorActionDefinitionIds.QUICK_ASSIST, createQuickFixActionHandler(commentViewer), >+ new ActiveShellExpression(commentViewer.getTextWidget().getShell())); > } > > public void focusLost(FocusEvent e) { > StyledText st = (StyledText) e.widget; > st.setSelectionRange(st.getCaretOffset(), 0); > actionContributor.forceActionsEnabled(); >+ >+ if(handlerActivation!=null) { >+ handlerService.deactivateHandler(handlerActivation); >+ } > } > }); > >@@ -380,43 +383,48 @@ > commentViewer.getTextWidget().setMenu(getManagedForm().getForm().getMenu()); > Document document = new Document(text); > >- // NOTE: Configuration must be applied before the document is set in >- // order for >- // Hyperlink colouring to work. (Presenter needs document object up >- // front) >- RepositoryViewerConfig repositoryViewerConfig = new RepositoryViewerConfig(spellCheck); >- repositoryViewerConfig.setAnnotationModel(fAnnotationModel, document); >- commentViewer.configure(repositoryViewerConfig); >+ // 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 RepositoryViewerConfig(spellCheck); >+ commentViewer.configure(viewerConfig); > >- commentViewer.setDocument(document, fAnnotationModel); >+ commentViewer.setDocument(document, annotationModel); > > // !DND! hover manager that shows text when we hover >- // AnnotationBarHoverManager fAnnotationHoverManager = new >- // AnnotationBarHoverManager(fCompositeRuler, >- // commentViewer, new AnnotationHover(fAnnotationModel), new >- // AnnotationConfiguration()); >+ // AnnotationBarHoverManager fAnnotationHoverManager = new AnnotationBarHoverManager(fCompositeRuler, >+ // commentViewer, new AnnotationHover(fAnnotationModel), new AnnotationConfiguration()); > // fAnnotationHoverManager.install(annotationRuler.getControl()); > > // !DND! Sample debugging code >- // document.set("Here's some texst so that we have somewhere to show an >- // error"); >+ // document.set("Here's some texst so that we have somewhere to show an error"); > // > // // // add an annotation > // ErrorAnnotation errorAnnotation = new ErrorAnnotation(1, ""); > // // lets underline the word "texst" > // fAnnotationModel.addAnnotation(errorAnnotation, new Position(12, 5)); > >- // CoreSpellingProblem iProblem = new CoreSpellingProblem(12, 5, 1, >- // "problem message", "theword", false, false, >- // document, "task editor");// editorInput.getName() >+ // CoreSpellingProblem iProblem = new CoreSpellingProblem(12, 5, 1, >+ // "problem message", "theword", false, false, document, "task editor"); >+ // editorInput.getName() > // >- // fAnnotationModel.addAnnotation(new ProblemAnnotation(iProblem, null), >- // new Position(12, 5)); >+ // fAnnotationModel.addAnnotation(new ProblemAnnotation(iProblem, null), new Position(12, 5)); > > addTextViewer(commentViewer); > return commentViewer; > } > >+ private IHandler createQuickFixActionHandler(final SourceViewer viewer) { >+ Action quickFixAction = new Action() { >+ public void run() { >+ if (viewer.canDoOperation(ISourceViewer.QUICK_ASSIST)) { >+ viewer.doOperation(ISourceViewer.QUICK_ASSIST); >+ } >+ } >+ }; >+ quickFixAction.setActionDefinitionId(ITextEditorActionDefinitionIds.QUICK_ASSIST); >+ return new ActionHandler(quickFixAction); >+ } >+ > @Override > public boolean isDirty() { > return isDirty; >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/plugin.xml,v >retrieving revision 1.256 >diff -u -r1.256 plugin.xml >--- plugin.xml 28 Jul 2007 22:12:26 -0000 1.256 >+++ plugin.xml 2 Aug 2007 00:30:02 -0000 >@@ -886,4 +886,13 @@ > class="org.eclipse.mylyn.internal.tasks.core.LocalTaskListFactory" > id="org.eclipse.mylyn.tasks.ui.local.factory"/> > </extension> >+ >+ <extension point="org.eclipse.ui.bindings"> >+ <key commandId="org.eclipse.jdt.ui.edit.text.java.correction.assist.proposals" >+ sequence="M1+1" >+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" >+ contextId="org.eclipse.ui.contexts.dialogAndWindow" /> >+ <!-- contextId="org.eclipse.ui.contexts.dialog"/> --> >+ </extension> >+ > </plugin>
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 155280
: 75179 |
75180
|
75183