2011-02-01 17 views
5

データベースからの出力を表示するテーブルがあります。これは、最大で10,000行以上あります。私は、ユーザーが検索する値を持つ行に簡単にスクロールできるようにする「高速検索」機能を実装することを検討しています。SWTテーブルの「クイック検索」

これは、ChromeやFirefoxのクイック検索と非常によく似ていると考えられます。だから、:

  1. ユーザーヒット 'CTRL + F'
  2. ボックスがポップアップ表示されます:
  3. quick find example
  4. は、ユーザーが、その後すぐに/または/ \一致する各値にプッシュテーブル流し読みすることができます

私の質問は、このようなテーブルは既に存在するのですか?私はNatTableXViewerを見てきましたが、どちらも比較的小さな変更のためにかなり大きな追加のように見えます。

私が見たもう一つのライブラリは、billlがフィッティングに近いところです。Lucene TableSearcher残念ながら、これは強調表示ではなくフィルタリング用に設計されています。しかし、それは調査する価値のある道であるかもしれません。

答えて

1

私が選んだ解決策は、私が望むほど単純ではありませんでしたが、満足のいくパフォーマンスです。

関連するテーブルは非常に大きな仮想テーブルです。したがって、データセットのロード時に、リストの形でインデックスを構築するスレッドを開始します。これらのテーブルは非常に大きい(ただししばしばではありません)ので、このリストに50mbの制限を設定し、ヒット時に索引付けを停止します。ほとんどの場合、これは完全に受け入れられますが、テーブルが大きければ遅くなる一方、他のオプションよりもかなり安定していることを意味します。

'search'は、ModifyListenerを持つシンプルなSWTテキストボックスで、リストを反復して各エントリに 'contains'を実行します。一致すると、行と列はインデックス番号(0 = 0,0,1 = 0,1 ..)から計算されます。

シンプルな「ドロップイン」ソリューションを使用するとよいでしょうが、提供されているすべてのテーブルには機能が多すぎます。

2

これは全く同じではありませんが、JFaceではビューのフィルタリングがサポートされています。テキストボックスに入力すると、内容がフィルタに一致する内容に縮小されます。これは基本的にユーザーに検索機能を提供する別の方法です。

これはEclipse Preferences(ダイアログのナビゲーションツリーに関するフィルタテキストフィールド)で実際に動作しています。 org.eclipse.ui.dialogs.FilteredTreeクラスを参照してください。私はFilteredTableまたはそれに相当するものはないと信じていますが、基本的な機能はかなり一般的です。したがって、1つをまとめるために多くの作業を行うべきではありません。 FilteredTreeソースを見てそこから行ってください。

+0

おかげで、すでにこのテーブル(フィルタリングを行うためにデータベースクエリを使用しています)のためのフィルタがあります。ユーザーがフィルタリングされたデータを見過ごすことを可能にすることによって、検索がフィルタを補完するという考えがあります。 –

0

使用FilteredItemsSelectionDialogダイアログボックス

+0

どこにありますか? SWTやJFaceの一部ですか? – Mot

関連する問題