私は正常に動作しているように見える ICellModifier を備えた TableViewer を持っています。ただし、セル エディターの 1 つに ICellEditorValidator を設定しましたが、希望どおりに動作させることができません。ここに私の短縮コードがあります:
cellEditors[1] = new TextCellEditor(table);
cellEditors[1].setValidator(new ICellEditorValidator() {
public String isValid(Object value) {
try {
Integer.parseInt((String) value);
return null;
} catch(NumberFormatException e) {
return "Not a valid integer";
}
}
});
それはほとんど正常に動作します。ただし、次の 2 つの問題があります。
- バリデータがエラーを返した場合、セル修飾子の
modify
メソッドは新しい値として null を受け取ります。これを処理するようにコーディングできますが、正しくないようです。たとえば、ユーザーが背景色を選択し、透明を選択した場合は、Null が有効な値になる可能性があります。(これは一般的な問題であり、この例に固有のものではありません。) - バリデータのエラー メッセージがユーザーに表示されることはありません。これが大きな問題です。ICellEditorListener を追加して
applyEditorValue
、最後の値が無効な場合にメソッドからダイアログを表示することもできます。これは「適切な」方法ですか?
ところで、どうしようもない理由で、私は Eclipse 3.0 フレームワークに制限されています。