Wie soll ich einen Validierungsfehler anzeigen, der von einem ICellEditorValidator erkannt wurde?

8

Ich habe einen TableViewer mit einem ICellModifier, der gut zu funktionieren scheint. Ich setze jedoch einen ICellEditorValidator auf einen der Zelleditoren, und ich kann nicht erreichen, dass er sich so verhält, wie ich es möchte. Hier ist mein abgekürzter Code:

%Vor%

Es funktioniert meistens gut. Es gibt jedoch zwei Probleme:

  1. Die Methode modify der Zelle Modifikator erhält eine Null als Neu Wert, wenn der Validator einen Wert zurückgibt Error. Ich kann damit umgehen, aber es scheint nicht richtig zu sein. Null könnte ein gültiger Wert sein, zum Beispiel wenn der Benutzer einen Hintergrund auswählt Farbe und sie wählten transparent. (Dies ist ein allgemeines Problem, nicht spezifisch für dieses Beispiel.)
  2. Die Fehlermeldung des Validators lautet nie für den Benutzer angezeigt. Dies ist das große Problem. Ich könnte es auch füge einen ICellEditorListener und hinzu Zeige einen Dialog von der applyEditorValue Methode, wenn die letzter Wert war ungültig. Ist das der "richtige" Art und Weise, es zu tun?

Aus Gründen, die ich nicht kontrollieren kann, bin ich auf das Eclipse 3.0-Framework beschränkt.

    
Adam Crume 20.05.2009, 22:03
quelle

2 Antworten

9

Sie können Ihrem Editor einen Listener hinzufügen:

%Vor%

Wenn page Ihre aktuelle FormPage ist, wird dies dem Benutzer die errorMessage anzeigen.

    
Sven Lilienthal 09.12.2009 09:39
quelle
5

In Bezug auf das zweite Problem wird die Zeichenfolge, die die Methode isValid des Validators zurückgibt, die Fehlermeldung für das CellEditor , das diesen Validator besitzt. Sie können diese Nachricht mit CellEditor.getErrorMessage abrufen.

Es scheint mir, dass die Fehlermeldung am einfachsten durch ICellEditorListener angezeigt wird, wie Sven oben andeutet. Vielleicht ist das Schwierige an diesem Listener, dass der Zelleneditor nicht als Parameter an irgendeine seiner Methoden übergeben wird. Daher ist die Annahme, dass der Listener weiß, mit welchem ​​Zelleneditor er spricht.

Wenn Sie möchten, dass der Dialog, die Einstellungsseite oder ein anderes Objekt die Schnittstelle ICellEditorListener implementiert, müssen Sie sicher sein, dass sie den bearbeiteten Zelleneditor kennt.

Wenn es jedoch der Zelleneditor selbst ist, der die Schnittstelle implementiert, sollte er eine Möglichkeit haben, die Fehlermeldung korrekt in den Dialog, die Präferenzseite oder was auch immer zu übertragen. Das ist die currentForm page die Scott sucht.

Eine letzte Sache, die es wert ist, wenn Sie EditingSupport verwenden, ist, dass der an die EditingSupport.setValue -Methode übergebene Wert null ist, wenn ICellEditorValidator.isValue eine Fehlermeldung zurückgibt. Vergessen Sie nicht, es zu überprüfen.

    
José M. Benítez 13.07.2011 08:24
quelle

Tags und Links