Frage zu SWT - TextViewer

fireblade1282

Mitglied
Hallo!
Ich habe folgende Frage, die ich nicht alleine lösen kann, und da ich evtl. weitere Fragen haben könnte und dann auch in diesem Thread posten möchte, beschreibe ich euch kurz auch mein gewünschtes Ziel, damit das nicht alles so zusammenhangslos hier rumsteht:
In meinem Programm möchte ich in einem "adäquaten Widget" reinen "ASCII Text" Notepad ähnlich schreiben, also ohne Formatierung. Das gesamte Programm ist netzwerkfähig und ich möchte dass das Widget zunächst in roter Farbe den Text schreibt, ich denke das bekomme ich auch hin... dann, alle paar Sekunden oder welches Kriterium ich auch immer wähle möchte ich diesen roten text, der "neu ist", schwarz färben und diese Information an den Server senden zum Synchronisieren...
Jetzt habe ich mich komplett in SWT reingearbeitet bin auf JFace gestossen und vermute, dass die sinnvollste Art mein Problem zu lösen das TextViewer Dingens ist :)
Soweit ich verstanden habe, liegt der grafischen Implementation des sichtbaren "Widgets" die SWT zugrunde, im Hintergrund liegt das logische Modell als "Document" - Objekt, basierend auf dem IDocument Interface, etc...
Wie schaffe ich es nun neu eingegebenen Text am besten "abzufangen"...
sollte ich über die visuelle Komponente gehen? oder sollte ich versuchen am Document im Hintergrund anzusetzen?
Ich habe mal in einem Example ein SyntaxHighlighting gesehen, das wohl auf diesem "Damage" and "Repair" Prinzip beruht... sollte ich diesen Ansatz verfolgen? So alla der im Netzwerk synchronisierte Text ist ok.. dann schreibt ein Nutzer etwas das Document gilt als "damaged" und der Repairer synchronisiert per Netzwerk...
Und was mich schon die ganze Zeit wurmt: mit TextViewer.getControl bekomme ich das sichtbare Widget an sich oder? Wie kann ich die Cursor Position bestimmen? Am liebsten nicht absolut als char mit laufender nummer x sondern als tupel row/col nr...
Ich bin für jede Hilfe dankbar und hab auch schon eine Menge Profis hier gesehen, bin sicher jemandem fällt was sinnvolles dazu ein!

-Andy
 
...und noch eine Frage...
Das dem TextViewer zugrunde liegende Widget muss ich doch irgendwie "abhören" können? So soll doch JFace die SWT-API erweitern und nicht verdecken...
ich habs mit dem Ansatz

Code:
...
myTextViewer.getControl().addKeyListener(new TextViewKeyListener_Adapter());
...

private class TextViewKeyListener_Adapter extends KeyAdapter {
    public void keyPressed(KeyEvent k) {
        MessageBox msgBox = new MessageBox(shell, SWT.ICON_ERROR);
        msgBox.setText("Info");
        msgBox.setMessage("Tastenanschlag registriert...");
        msgBox.open();				
    }
    public void keyReleased(KeyEvent k) { 
    }
}

probiert, bekomme meine kleine MessageBox aber nicht angezeigt... was mache ich falsch?
 
ok.... Eclipse hat automatisch
import java.awt.KeyEvent;
statt
import org.eclipse.swt.events.KeyEvent;
reingeschoben, was natürlich den Event nicht auslöst... jetzt geht's...

trotzdem,... für weitere Anregungen bei meinem Projekt bin ich dankbar!
 
Zurück