デフォルトでは、JFace TableViewerは、ユーザーが上矢印キーまたは下矢印キーを押すと、選択範囲を上下に移動します。これはほとんどの場合理にかなっていますが、私のアプリケーションではビジネスロジックが異なります。
この動作をオーバーライドするにはどうすればよいですか?KeyListenerを追加しようとしましたが、呼び出されますが、デフォルトのアクションが引き続き発生します。選択が変更されます。
CellNavigationStrategy と一緒に TableViewerFocusCellManager を使用する必要があることがわかりました。FocusCellManager が TableViewer のプロパティであることを期待していましたが、そうではありません。どうやら、FocusCellManager が舞台裏で配線を行っているようです。
CellNavigationStrategy navigationStrategy = new CellNavigationStrategy() {
@Override
public boolean shouldCancelEvent(ColumnViewer viewer, Event event) {
return true;
}
@Override
public boolean isNavigationEvent(ColumnViewer viewer, Event event) {
return false;
}
};
TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(tableViewer, new FocusCellOwnerDrawHighlighter(tableViewer), navigationStrategy);