1

私は新しい Eclipse 4 RCP プラットフォームについて学んでいますが、興味深い問題に遭遇しました。

MPartApplication.e4xmi で定義された の Part クラスを設計しているとします。

public class SomePartView {
    private Text someText;
    private Button someButton;

    @PostConstruct
    public void createControls(Composite parent) {
        parent.setLayout(new GridLayout(3, false));
        someText = new Text(parent, SWT.BORDER);
        someButton = new Button(parent, SWT.NONE);
        someButton.setText("SomeButton");
    }

    @Focus
    private void setFocus(IEclipseContext context) {
        someText.setFocus();
    }

    // ... getters
}

WindowBuilder を使用して ui を作成していますが、動作コードがないようにしたいので、次のように相互作用を処理するクラスを作成します。

public class SomePartViewController {

    @PostConstruct
    public void addBehavior(SomePartView view) {
        view.getSomeButton().addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                // do something
            }
        });    
    }
}

これは良い習慣ですか、それともここで車輪を再発明していて、e4 にはすでにこれに対する解決策がありますか? そうでない場合、これらのクラスを一緒に配線するにはどうすればよいですか? Eclipse コンテキスト外でインスタンスを作成することは避けたいと考えています。公式の e4 ドキュメントはかなりまばらなので、答えを見つけることができる完全な本またはリファレンス マニュアルを誰かが私にリンクしてくれたら、それもいいでしょう。

4

1 に答える 1

0

本格的な回答ができるかどうかわかりませんが、ヒントや注意点を考えてみます。

まず、アプリケーション モデルによって参照されるクラスのみが依存性注入を取得します。したがってSomePartView、それぞれが@PostConstruct実行されます。ただし、アプリケーション モデルの外への直接接続SomePartViewControllerはないため、自動注入は行われません。

これを実現できる方法があります。たとえば、アプリケーション モデルの拡張で説明されているようにプロセッサ拡張機能を使用するか、依存関係をループしてSomePartViewそこから動作クラスをインスタンス化します。

あなたの質問が正しければ、これは、ビューと動作を分割するという主な実現目的に失敗します。

おそらく、 XWTはあなたが本当に探しているテクノロジーです。ここでは、UI は宣言的に定義され、イベント ハンドラーは引き続き Java クラスに実装されます。XWT の動作方法は、ユーザー インターフェイスを作成する Android プログラミング スタイルと比較できるため、すでに一種のベスト プラクティスであると思います。

于 2012-11-05T20:50:50.263 に答える