RCP SpellingService

Wildcard

Top Contributor
Das ist default mäßig doch schon dabei wenn du einen TextEditor verwendest.
Bei einem Text Field brauchst du AFAIK einen Source Viewer auf einem Styled Text.
 
G

Gast2

Gast
Das ist default mäßig doch schon dabei wenn du einen TextEditor verwendest.
Bei einem Text Field brauchst du AFAIK einen Source Viewer auf einem Styled Text.
Also ich hab jetzt sowas
Java:
ISourceViewer viewer =new SourceViewer(filterGroup,null, SWT.BORDER);
            d = new GridData() ;
            d.widthHint = 100 ;
            viewer.getTextWidget().setLayoutData(d);

Jetzt ist der Viewer aber kleiner wie ein normales Text-Widget in der höhe und breite des sieht ja voll sch*** aus =(...

Ich kann keinen TextEditor verwenden, wie stelle ich in dem Viewer nun die Rechtschreibung ein??????:L
 
Zuletzt bearbeitet von einem Moderator:

Wildcard

Top Contributor
Jetzt ist der Viewer aber kleiner wie ein normales Text-Widget in der höhe und breite des sieht ja voll sch*** aus =(...
Bekommt man aber hin, habe ich auch schon gemacht.
Ich kann keinen TextEditor verwenden, wie stelle ich in dem Viewer nun die Rechtschreibung ein?
Schau doch mal im TextEditor nach. Der wird sicherlich den SourceViewer entprechend konfigurieren.
 
G

Gast2

Gast
Also ich hab es bis jetzt soweit!!!
Java:
SourceViewer viewer =new SourceViewer(currentVersionTextsComposite,null,SWT.BORDER | SWT.WRAP | SWT.MULTI | SWT.V_SCROLL  );
            IPreferenceStore iPreferenceStore = new PreferenceStore();
            iPreferenceStore.setValue(SpellingService.PREFERENCE_SPELLING_ENABLED, true);
            TextSourceViewerConfiguration configuration = new TextSourceViewerConfiguration(iPreferenceStore);
			viewer.configure(configuration);
wo sehe ich jetzt meine Rechtschreibhilfe???Also es wird noch nichts unterstrichen =(
Zur GUI nochmal ist ein Eclipse-Plugin, aber der SourceViewer ist in einer neuen shell, wenn man rechtsklick auf eine java klasse macht wird eine neue shell geöffnet.

EDIT: Im AbstractEditor und TextEditor finde ich nichts zum Spelling. Eventuell hast du noch ein guter Tip, den habe ich nun in meinem SourceViewer den SpellingService aber wie wird nun die Hilfe angezeigt?

EDIt EDIT: Kann es sein dass ich noch extension benötige???

[XML]
point="org.eclipse.ui.editors.markerAnnotationSpecification">
<specification
annotationType="org.eclipse.ui.workbench.texteditor.spelling"
label="%spelling.label"
symbolicIcon="warning"
quickFixIcon="$nl$/icons/full/obj16/quick_fix_warning_obj.gif"
presentationLayer="5"
contributesToHeader="true"
colorPreferenceKey="spellingIndicationColor"
colorPreferenceValue="255,128,64"
textPreferenceKey="spellingIndication"
textPreferenceValue="true"
overviewRulerPreferenceKey="spellingIndicationInOverviewRuler"
overviewRulerPreferenceValue="false"
verticalRulerPreferenceKey="spellingIndicationInVerticalRuler"
verticalRulerPreferenceValue="false"
isGoToPreviousNavigationTargetKey="isSpellingGoToPreviousNavigationTarget"
isGoToPreviousNavigationTarget="false"
isGoToNextNavigationTargetKey="isSpellingGoToNextNavigationTarget"
isGoToNextNavigationTarget="false"
showInNextPrevDropdownToolbarActionKey="showSpellingInNextPrevDropdownToolbarAction"
showInNextPrevDropdownToolbarAction="true"
highlightPreferenceKey="spellingIndicationHighlighting"
highlightPreferenceValue="false"
textStylePreferenceKey="spellingTextStyle"
textStylePreferenceValue="PROBLEM_UNDERLINE">
</specification>
[/XML]
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Hey,

also mit einem TextEditor habe ich jetzt auch mal versucht, aber bekomme ich auch nicht hin.

[XML]
<extension point="org.eclipse.ui.workbench.texteditor.spellingEngine">
<engine
default="true"
label="Spelling Engine"
class="spell.DefaultSpellingEngine"
id="my.DefaultSpellingEngine">
</engine>
</extension>
[/XML]

aber meine Engine wird nie aufgerufen =(
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Hey,

also mit einem TextEditor habe ich jetzt auch mal versucht, aber bekomme ich auch nicht hin.

[XML]
<extension point="org.eclipse.ui.workbench.texteditor.spellingEngine">
<engine
default="true"
label="Spelling Engine"
class="spell.DefaultSpellingEngine"
id="my.DefaultSpellingEngine">
</engine>
</extension>
[/XML]

aber meine Engine wird nie aufgerufen =(

EDIT: Das jdt plugin habe ich auch mit aufgenommen. jetzt habe ich auf meinem TextEditor mit rechte Maustaste die PreferenceSeite damit sehe ich sogar beide SpellingEngine meine und díe von jdt., aber egal welche ich auswähle es werden keine Schreibfehler unterstrichen =(
 
G

Gast2

Gast
Also ganz kleiner Erfolg

Hier mein SourceViewer
Java:
	final SourceViewer sourceViewer = new SourceViewer(parent, null, null,
				true, SWT.MULTI | SWT.V_SCROLL | SWT.WRAP);
		// grab the text widget from the source viewer
		StyledText fTextField = sourceViewer.getTextWidget();
		// this is where the magic happens for spellchecking
		// see TextSourceViewerConfiguration#getReconciler
		Document document = new Document("dfg");
		SourceViewerConfiguration config = new TextSourceViewerConfiguration(
				EditorsUI.getPreferenceStore());
		sourceViewer.configure(config);
		sourceViewer.setDocument(document, new AnnotationModel());

Es werden nun Wörter gecheckt, aber
1. Es wird nichts unterstrichen, es kommt nur ein Popup dass das Wort falsch ist
2. Es gibt kein Quickfix Dialog
3. Wo kann ich das dictonary angeben? Da ich 2 SourceViewer habe einen englischen und einen deutschen somit sollen auch 2 verschieden verwendet werden?

Zu meinem TextEditor:
Da wird alles schön unterstrichen mein dictonary kann ich über rechte Maustate preferences einstellen.
Jedoch kommt beim Popup noch kein Quickfix sofort wie kann ich das einstellen?
 
G

Gast2

Gast
Wildcard keine Idee =)?

EDIT:

So ein SourceViewer mit falschen unterstrichenen Wörtern =)...
Was jetzt noch fehlt ist:
- Eigenes Dictonary eingeben.
- Und den QuickAssistant anzeigen.
Code:
public final class SpellingCorrectionProcessor implements IQuickAssistProcessor
wird initialisiert aber wird nie angezeigt ich such wo der shortcut ctrl-1 ist.
Aber wie gesagt am liebsten wäre mir wenn man das angezeigt bekommt wenn man über das unterstrichene wort fährt wie in Eclipse auch.
Java:
	private void createSourceViewer(Composite parent){
		final IAnnotationAccess access =  new DefaultMarkerAnnotationAccess();
		final SourceViewer sourceViewer = new SourceViewer(parent, null, null,
				true, SWT.MULTI | SWT.V_SCROLL | SWT.WRAP);
		// this is where the magic happens for spellchecking
		// see TextSourceViewerConfiguration#getReconciler
		Document document = new Document("dfg");
	
		
		SourceViewerConfiguration config = new TextSourceViewerConfiguration(
				EditorsUI.getPreferenceStore());
		config.getContentAssistant(sourceViewer);
		sourceViewer.configure(config);
		sourceViewer.setDocument(document, new AnnotationModel());
		SourceViewerDecorationSupport decorationSupport = new SourceViewerDecorationSupport(sourceViewer, null, access, EditorsPlugin.getDefault().getSharedTextColors());
		configureSourceViewerDecorationSupport(decorationSupport);
		if (sourceViewer instanceof ISourceViewerExtension3)
			((IAnnotationAccessExtension2)access).setQuickAssistAssistant(((ISourceViewerExtension3)sourceViewer).getQuickAssistAssistant());
		
	}
	
	private void configureSourceViewerDecorationSupport(SourceViewerDecorationSupport support) {

		Iterator<?> e= new MarkerAnnotationPreferences().getAnnotationPreferences().iterator();
		while (e.hasNext())
			support.setAnnotationPreference((AnnotationPreference) e.next());

		support.setCursorLinePainterPreferenceKeys(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE, AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR);
		support.install(EditorsUI.getPreferenceStore());
	}
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Also das mit der SpellEngine funktioniert ganz gut jetzt auch mit verschiedenen Sprachen und Dictonary=).
Aber das mit dem QuickAssistant bei einem SourceViewer will nicht funktionieren. Der SourceViewer hat den SpellingCorrectionProcessor eingebunden. Hab noch nicht gefunden wann und wo die Proposal gezogen werden.

Find leider auch nicht wie ich den QuickAssistant wie in Eclipse sofort anzeigen lassen kann.

Nun habe ich mal ein Popupmenü hinzugefügt

Java:
		if (sourceViewer instanceof ISourceViewerExtension3)
			((IAnnotationAccessExtension2)access).setQuickAssistAssistant(((ISourceViewerExtension3)sourceViewer).getQuickAssistAssistant());
		
		MenuManager menuMgr = new MenuManager();
		Action action = new Action("Quick Fix") {
			@Override
			public void run() {
				sourceViewer.doOperation(ISourceViewer.QUICK_ASSIST);
			}
		};
		menuMgr.add(action);
		Control control = sourceViewer.getTextWidget();
		Menu menu = menuMgr.createContextMenu(control);
		control.setMenu(menu);

Der Quickassistant wird nun aufgerufen und funktioniert auch wie gewohnt, nur leider weiß ich wie den einhänge in das TextHover, sowie im JavaDoc bei der Eclipse IDE.

Leider habe ich auch nicht gaz verstanden woher die Proposals kommen, weil es eine AddWordProposal gibt
Java:
  public class AddWordProposal implements  IJavaCompletionProposal {
            /*
             * @see org.eclipse.jface.text.contentassist.ICompletionProposal#apply(org.eclipse.jface.text.IDocument)
             */
            public final void apply(final IDocument document) {

                final ISpellCheckEngine engine = SpellCheckEngine.getInstance();
                final ISpellChecker checker = engine.getSpellChecker();

Und da wird die falsche Engine benutzt also muss ich das Proposal ändern
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben