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:
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.) 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.
Sie können Ihrem Editor einen Listener hinzufügen:
%Vor%Wenn page Ihre aktuelle FormPage ist, wird dies dem Benutzer die errorMessage anzeigen.
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.
Tags und Links eclipse java validation jface