問題タブ [nebula]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipse-plugin - TreeViewer から GridTreeViewer へ: 既存の ITreeContentProvider と「怠惰な」ObservableListTreeContentProvider の間のブリッジ
TL;DR
Thomas Schindlの記事JFace-Viewer and Eclipse Databinding with > 10.000 ObjectsTreeViewer
(これは非常に良い考えです) に基づいて、通常の+ 複数のITreeContentProvider
実装を、 、a、およびEclipse Data Bindingを使用するNebulaGridTreeViewer
に変換して作成したいと思います。 "lazy" (レイジー) で、オンデマンドでデータをロードします。 ObservableListTreeContentProvider
VisibleRangeChangedListener
ITreeContentProvider
で同じ階層を使用するには、既存の通常の実装をどのように書き直すべきObservableListTreeContentProvider
ですか? 古いソリューションと新しいソリューションの間に「架け橋」を作ることはできますか? DelegatingListProperty
どういうわけかこのように使用しますか?他のアイデアはありますか?
単純すぎる例をいくつか見つけましたが、このような複雑な階層ツリー形式でデータ バインディングを使用するという概念がよくわかりません。
ツリーとコンテンツ プロバイダの例:
コンテンツ プロバイダ 1.:
コンテンツ プロバイダー 2.:
長い説明
従来の実装と+実装のカスタムを使用して、膨大な量のオブジェクトを階層ツリー形式で表示するビューがあります。この階層を表示する形式をユーザーが選択できるメニューもあります。ユーザーが別の表示形式を選択すると、別の実装がビューアーに設定され、プログラムによってビューアーが更新されるだけです。
動作しますが、膨大な数の要素 (場合によっては 100 ~ 200k 行、理由は聞かないでください。動作する必要があるだけです) のため、アイテムの表示が遅くなる可能性があります。TreeViewer
ITreeContentProvider
LabelProvider
ITableLabelProvider
ITreeContentProvider
、TreeItems に非常に多くのリスナーがあり、ビューの更新に時間がかかるなどの理由で、UI がフリーズすることがあります。
そのため、モデル要素が既にメモリに読み込まれている間に、ある種の怠惰なソリューションを使用したいと思います。
私はすでに と を試しましSWT.VIRTUAL
たILazyTreeContentProvider
が、パフォーマンスが悪く ( を使用していてもviewer.setUseHashlookup(true)
)、問題がありました (スクロール時に、TreeItems の読み込みに時間がかかり、バグ、並べ替え、フィルタリングなどの問題がありました)。
Thomas Schindl のブログ記事: JFace-Viewer and Eclipse Databinding with > 10.000 Objectsを読みました。Eclipse Nebula Gridの GridTreeViewer
and + ObservableListTreeContentProvider
(これもITreeContentProvider
実装です) とVisibleRangeChangedListener
"lazy" ラベル プロバイダー (記事のように)を使用して、これを試してみたいと思います。どうにか既存のITreeContentProvider
実装を使用して、これと新しいの間に「ブリッジ」を構築できObservableListTreeContentProvider
ますか?
ところで、私はNebula NatTableをチェックしましたが、既存のコンテンツ プロバイダーをこの新しいソリューションに移行するのは非常に難しいことがわかりました。その API とそのアプローチはまったく異なります (階層は子から親へ、逆ではありません)。木はまだ空です。