Texteditor - Problem bei ersten Tasteneingabe

darksmilie

Erfahrenes Mitglied
Hi,

ich habe noch ein Problem mit meinem RCP JFace Texteditor, der von einem AbstarctDecoratedTextEditor erbt. Es ist so, wenn ich ein neuen Editor öffne nimmt der Editor immer erst ab der zweiten Taste die Eingabe wahr. Ich habe das ganze schon einwenig gedebugt und festgestellt, das der Editor immer zuerst ein "validateState" bei der ersten Tasteneingabe macht und erst bei der zweiten Tasteneingabe wird der Editor dirty und übernimmt den Wert.

Jetzt habe ich schon einmal einbisschen getrickst und zumindest den Editor nach der ersten Tasteneingabe "Dirty" bekommen, indem ich die validateState methode überschrieben habe und dem ElementInfo Object vom DocumentProvider sage, das sich etwas geändert hat.

Java:
  @Override
  public void validateState(Object element, Object computationContext)
      throws CoreException {
    super.validateState(element, computationContext);
    if (isModifiable(element) && isStateValidated(element)) {
      getElementInfo(element).documentChanged(null);
    }
  }

Das ist leider nur die halbe Lösung meines Problems, da der Editor immernoch nicht die erste Tasteneingabe übernimmt.

Dann habe ich auch schon ausprobiert den Editor sofort validieren zu lassen.

Java:
  @Override
  protected void connected() {
    super.connected();
    
    try {
      validateState(input, PlatformUI.getWorkbench().getDisplay().getActiveShell());
    } catch (CoreException e) {
      e.printStackTrace();
    }
  }

Wenn ich es so mache klappt es mit der ersten EIngabe, aber leider ist der Editor nun immer Dirty, sobald ich Ihn öffne.

Kennt jemand von euch das Problem oder weiß jemand noch ein Weg um das Problem zu lösen?
 
Ich habe den Fehler gefunden. :D

Es lag an der Methode "validateEditorInput" im der Editor Klasse. Diese Methode hat immer false zurück geliefert und somit wurde im VerifyListener die eingabe als
Java:
e.doit = false
gesetzt.

Jetzt funktioniert es :D
 
Zurück