Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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.
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.
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???
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 =(
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?
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());
}
Nicht ohne Nachzuschauen und dafür habe ich keine Zeit
Nach meiner Erfahrung findet man im Eclipse Source alles was man braucht. Nur ein wenig Gedult und Spürsinn mitbringen
Vielleicht hast du ja Glück und es findet sich noch jemand der das schonmal eingebunden hat.
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