2009-11-26 5 views
5

ILazyTree(TreePath)ContentProviderを使用している場合、並べ替えとフィルタリングはTreeViewersでサポートされていません。だからViewerFiltersまたはSorters/ComparatorsをあなたのTreeViewに設定しても何の効果もありません。おそらくこれは現時点では見えない要素を含め、すべての要素を知らないことに関連しています。ここでは、この声明への支援にILazyTreeContentProviderで並べ替えとフィルタリングを使用するより良い方法はありますか

org.eclipse.jface.viewers.TreeViewerクラスからjavadocの抜粋です:

コンテンツプロバイダが ILazyTreeContentProviderまたは ILazyTreePathContentProviderある場合は、基礎となるツリーは は{@link SWT#を使用して作成する必要があります{0link #setUseHashlookup(boolean)}を呼び出すことによって、ツリービューアは がソートまたはフィルタリングをサポートせず、ハッシュ検索を有効にする必要があります。

私が今見ている唯一の解決策は、既に注文されている各ノードの子供を取得することです。動的ソートが必要な場合、つまりソート順序を実行時にdescまたはascの順序で切り替えることができる場合は、たとえば、子を埋めて更新するときにソートのブール型フラグを監視する独自の解決策が必要です。

あなたはおそらくより多くのjface APIを含むより良い解決策を知っていますか?

答えて

6

実際、ソートはthis threadで述べたように、あなたが、IStructuredContentProviderや怠惰なものを使用するかどうかVIRTUAL-TreeViewerことは不可能である。

あなたは(あなたのモデルに)自分で並べ替えを行う必要があります。
基本的な前提は、要素がメモリ内に存在しないことさえあるということです。

物事はchange in e4は(2009年6月で、このメッセージからの)可能性があります

JFace仮想テーブルとツリーの実装では、一つの仮想どれほど良好ではない私見 - まあ、私はそれから離れて滞在し、私のプロジェクトでそれを使用しないでください。

[...] UIデザインの視点から見ると、ユーザーが10.000sの要素を表示するのは無意味であり、さらに重要なのはモデル がメモリに常駐しているためですJFaceを使用したテーブルでは、 ヒープスペースをすべて食べる可能性があります
)このような問題を解決したE4のビューアを再設計しました。)。
this projectおよびbug 260451を参照してください。
(もっとgenralバグ:167436262160)今

表がそれを要求した後、私たちは見る人に強い参照を作成しています。

私見そのはるかに良いユーザを得た: - 例えば、代わりに結果の百万を示すのインテリジェントなフィルタリングの可能性

及び - ページング CDO (Connected Data Objects)の場合、フィルターは新しい照会APIを使用してサーバー上で行われます。

+1

私は、ソースからまっすぐに出てくることを知っています - 「自分でモデルを分類しなければなりません」。 VonCを指摘してくれてありがとう!自分のソート機能の実装に戻る... – Svilen

関連する問題