5

JFace ダイアログを作成していて、モデル オブジェクトへのデータ接続を使用したいと考えています。

コードを見るとPojoProperties、バインディングの作成に が使用されている場合と、 が使用されている場合があることがわかりますPojoObservables

私が読むことができるJavadocを見る:

PojoObservables : getter と setter を持つオブジェクトのアイデアに準拠するが、変更時にプロパティ変更イベントを提供しない POJO (プレーンな古い Java オブジェクト)の監視可能なオブジェクトを作成するためのファクトリ。

PojoProperties : getter と setter を持つオブジェクトの概念に準拠するが、変更時にプロパティ変更イベントを提供しない POJO (プレーンな古い Java オブジェクト) のプロパティを作成するためのファクトリ。

同じ質問が、BeansObservablesBeansPropertiesの間に存在する違いにも当てはまります。

(明らかな) 違いは、observable がオブジェクトを観察できるようにし、properties がプロパティを観察できるようにすることですが、Pojo にはデータのゲッターとセッターがあるため、それらの違いは何ですか? そして、ダイアログにはどれを選択する必要がありますか?

以下にコードの抜粋を示します。

POJO:

public class DataObject {
  private String m_value;
  public String getValue() {
    return m_value;
  }
  public void setValue(String i_value) {
    m_value = i_value;
  }
}

ダイアログ(関連部分):

@Override
protected Control createDialogArea(Composite parent) {
    Composite container = (Composite) super.createDialogArea(parent);

    m_combo = new Combo(container, SWT.BORDER);
    m_comboViewer = new ComboViewer(container, SWT.NONE);

}

BINDING (関連部分):

    // using PojoObservable
    IObservableValue observeValue = PojoObservables.observeValue(m_dataObject, "value");
    IObservableValue observeWidget = SWTObservables.observeSelection(m_combo);

    // using PojoProperties
    IObservableValue observeValue = PojoProperties.value("value").observe(m_dataObject);
    IObservableValue observeWidget = ViewerProperties.singleSelection().observe(m_comboViewer);

ある時はコンボを使用し、別の時は を使用していることは理解していComboViewerますが、必要に応じてビューアからコンボを取得し、別の方法でバインドできます...

また、たとえば をobserveValueと一緒に使用するなど、2 つを混在させることはできViewerPropertiesますか?

    IObservableValue observeValue = PojoObservables.observeValue(m_dataObject, "value");
    IObservableValue observeWidget = ViewerProperties.singleSelection().observe(m_comboViewer);
4

2 に答える 2