2016-05-04 13 views
1

JFace TreeViewerからNatTableに切り替えようとしています。残念ながら、NatTableを使ってツリーを実装することに関する多くのドキュメントは見つかりませんでした。だから私は、私は新しい入力を提供するために、setInput()を使用TreeViewerではいくつかの質問NatTableを使ったツリーの実装

  1. を持っています。どのようにNatTableで同じことを達成できますか?基になるデータソースListclear()addAll()を呼び出すことは適切な方法ですか? (GlazedListsを使用しています)

  2. 私は、clear()/addAll()データベースのクエリ後に新しいデータを渡す方法を説明しました。そしてそれが展開されたツリーの状態が失われた後、すべてのノードが崩壊します。 JFace TreeViewerを使用して、私は getExpandedElements()/setExpandedElements()の状態を維持しました。 NatTableに似たようなものがありますか?

  3. 親ノードをクリックしたときにのみ子ツリーノードを読み込むことはできますか?私、私はそれでサイクルを持つことができますので、事前にすべてのツリーデータを構築することはできません(まあ、厳密に私のデータを話すことは本当に木ではありませんが、それは木のようにそれを表示すると便利です)

UPD:

  1. 私はソートに問題があります。私はここで同様の議論を見つけたhttps://www.eclipse.org/forums/index.php?t=msg&th=489524しかし、私はまだ深い理解がありません。

私の問題は:「ツリー」列の子ノード以外の任意の列でソートした後、無効な親に移動することができます。要素の順序は、階層のすべてのレベルで正しいですが。私はSortableTreeComparatorを使用し、treeComparatorとして私のカスタムコンパレータを使用します(例ではGlazedLists.beanPropertyComparatorではありません)。ここで何が間違っていますか?

答えて

1

まず、NatTable examplesを調べて、ツリーの実装方法を見てください。

  1. はい、データソースリストは、データオブジェクトを配置して管理する場所です。
  2. 拡張状態を管理するには、入力として使用するTreeListの一部であるca.odell.glazedlists.TreeList.ExpansionModelを使用できます。
  3. NatTableの主な利点の1つは、可視になる必要がある場合にのみオンデマンドでデータをロードできることです。これがデフォルト動作です。
1
  1. はい、これは問題ありません。 NatTableはデータを視覚化します。少なくともIDataProviderが2次元の方法でデータを提供することができれば、それはどこから来ても気にしません。私たちの抽象度レベルのため、NatTableにはsetInput()がありません。 1.4では、実行時にIDataProviderDataLayerに設定できるようにAPIをオープンしました。これは類似しています。
  2. 拡張状態を記憶するExpansionModelを実装する必要があります。 NatTableでは、同じreaonsのためにGroupByExpansionModelで同じことがあります。
  3. 私はまだNatTableで自分自身をしていませんが、これを頻繁に見てきました。はい、可能です。IIRCでは、必要に応じて展開時に遅延ロードを実行するカスタムITreeRowModelを実装する必要があります。 GlazedListTreeRowModelを拡張し、オーバーライドする必要のあるさまざまな展開方法を確認することをお勧めします。
+0

ありがとうございました。私はすでに遅延ロードを実装しており、同じアプローチを使用しています。しかし、私は並べ替えに関して新しい問題に直面しました。私は私の質問を更新しました。あなたの助けは本当に感謝されます – Joel

+0

注意する最も重要な事実は、ツリーソートのための2つのコンパレータを考慮する必要があるということです。 1つはコンテンツの正しい順番にツリーを持って来る。あなたのコンパレータは内容をチェックするだけで、ツリー階層を尊重しないので、ツリー構造が崩れてしまうようです。しかし、それ以上の情報がなければ、わかりません。それが助けにならないならば、私は新しい質問を作成することを提案します。 –

+0

私はほとんどのために新しい質問を作成しました。私はこの例題のコードでも問題があります。 http://stackoverflow.com/questions/37105593/sorting-of-tree-implemented-with-nattable – Joel