問題タブ [eclipse-databinding]
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.
data-binding - EMF データバインディングを使用してリスト内のプロパティを変換しても、値は変換されません
コンバーターを使用して、いくつかの値を整数から文字列に変換しようとしています。
リストが与えられているという事実が気に入らないので、繰り返し試してみました:
IObservableValue observeItemValue = props[0].observe(peopleList.get(i));
ここで、i はインデックスです。例外はスローされませんが、値は変換されません。props[0]
監視されるプロパティのみが含まれています。
java - 他のいくつかのモデルによって拡張されているモデルと TableViewer をバインドする
私はFile
他の2つのクラスによって拡張されているクラスCopyFile
を持っていDeleteFile
ます.
今、これをテーブルビューアにバインドしようとしています:
CopyFile
file が のインスタンスである場合、null
またはのインスタンスである場合に、destinationPath を表示したいと考えてい""
ますDeleteFile
。
しかし、これを実行するとエラーがスローされます。
クラス File に名前が destinationPath のプロパティが見つかりませんでした
これを手伝って、継承の場合に DataBinding を実装する方法を教えてください。
eclipse-rcp - Eclipse RCP 4 - テーブルのバインディング列と iobservable 値
次の問題があります - 変化している IObservableValue があり、テーブルの最初の列に表示する必要があります。他の列の値はこの値に基づいています (他の各列では値が計算され、値は最初の列の値に依存します)。これはどのように行うことができますか?
eclipse - ViewerSupport.bind() を画像と組み合わせて使用できますか?
私の Eclipse RCP ビューでは、JFace データバインディングを使用してモデル データをorg.eclipse.jface.viewers.TreeViewer
. ViewerSupport.bind()
スニペットに示されているようにデータをバインドするために使用しましたが、問題なく動作します。
ここで、ノードにテキストとともに画像を表示したいと思います。LabelProvider
データバインディングがなければ、 aのメソッドをオーバーライドするだけgetImage(Object element)
ですが、コンテンツ + ラベル プロバイダー メソッドと の使用はViewerSupport
連携しません。ViewerSupport
APIで問題の解決策が見つかりません。おそらくorg.eclipse.core.databinding.property.value.IValueProperty
sを使用して解決策はありますか?
jface - ObservableMap を ListViewer または TableViewer にバインドする方法は?
ObservableSetContentProvider
またはを使用して Set または List を Viewer にバインドする方法については、多くの例がありますObservableListContentProvider
。ただし、インターフェースを実装ObservableMapContentProvider
する やビューアーを にバインドする方法については何も見つかりませんでした。HashMap
IObservableMap
使用例:
- `ListViewerでマップキーを表示するためのバインド
- キーが 1 つの列で、Value プロパティが他の列であるテーブル ビューアーにマップ エントリを表示するためのバインディング。
EMF では を使用してこれを行うことができることは知っていEMap
ますが、ObservableMap
.
誰かが私を正しい方向に向けることができますか?
java - コンパイル エラーを引き起こすデータバインディング リストの新しいジェネリック
現在、RCP プロジェクトを Neon にアップグレードしていますが、次の問題が発生しました。
JFace データバインディングにジェネリックが追加され、新しいメソッドシグネチャが作成されたようです。
以前はできました
メソッドが からに自動的にキャストすることをobserve
想定List<Object>
しているため、コンパイル エラーが発生します。modules
List<AbstractTestModule>
List<Object>
そのようなキャストを行う方法はありますか、または使用できる別の戦略はありますか?
data-binding - 検証エラーにより取り消しがブロックされる
EMF ベースの Eclipse アプリケーションに次の問題があります。
元に戻すは正常に機能します。検証は正常に機能します。ただし、GUI フィールドのデータに検証エラーがあると、元に戻すアクションの使用がブロックされます。たとえば、そのフィールドを有効な状態に戻すために元に戻すことはできません。
この図では、 undo を使用することはできません:
アプリケーションで使用されるツール:
- Eclipse データバインディング
UpdateValueStrategy
検証のためのバインディングに関するUndoAction
元に戻すは、を呼び出す標準を使用して実装されますCommandStack.undo
MessageManagerSupport
検証フレームワークを Eclipse Forms ベースの GUI に接続するクラス。
データ バインディングは次のようになります。
問題はこれです:
- 元に戻すシステムは、モデルを変更するコマンドで機能します。
- 検証システムは、検証エラーがある場合、更新がモデルに到達するのを停止します。
検証エラーが発生したときに元に戻すには、次のいずれかを実行できると思います。
- GUI 層で元に戻すシステムを動作させます。(これは大きな変更になるでしょう。これに EMF を使用することはおそらくまったく不可能です。)
- 有効なデータと同様に、モデル データを変更する GUI トリガー コマンドで無効なデータを作成します。(データがディスクに保存されない限り、これは問題ありません。しかし、これを行う方法が見つかりません。)
- のコンテンツ リスナーによってトリガーされる可能性がある、モデルで検証を直接機能させ
Resource
ます。(これは検証戦略の大きな変更です。この段階でソース GUI コントロールを追跡することはできないようです。)
これらの解決策は、不可能に見えるか、深刻な欠点があります。
検証エラーが発生した場合でも元に戻すにはどうすればよいですか?
注:Mad Mattsの回答は、彼らの提案が私の解決策につながるため、受け入れます。しかし、私はそれで満足しているわけではなく、もっと良いものがあればいいのにと思います。
誰かがより良い解決策を見つけた場合、現在の解決策ではなく、喜んでそれを受け入れることを検討します!
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 とそのアプローチはまったく異なります (階層は子から親へ、逆ではありません)。木はまだ空です。