3

たとえば、標準の GWT VerticalPanel を追加すると、GWT Designer を使用してウィジェットをドラッグ アンド ドロップすることで、このパネルにウィジェットを追加できます。GWT Designer は、VerticalPanel にウィジェットを追加していることを示す赤い線を提供します。

独自のパネルをゼロから作成したいが、標準の GWT パネルを拡張したくないとします。GWT Designer にパネルを認識させ、標準の gwt パネルを使用する場合と同じ機能を提供してもらいたいです。

私の知る限り、Ext-GWT などのフレームワークはウィジェット ライブラリをゼロから作成しましたが、GWT Designer と連携して動作します。この機能を実現するには、カスタム パネルに特定のメソッドを実装する必要がありますか? ガイダンスやアイデアは大歓迎です。

ありがとうございました

4

2 に答える 2

3

要約すると、新しいコンポーネントをサポートするには、このコンポーネントの特別なサポートを GWT Designer に追加する必要があります。VerticalPanel のように動作させたいが、実際にはタイプが composite であるカスタム コンポーネントがあるとします。

public class CustomPanel extends Composite implements HasWidgets{
    private VerticalPanel panel = new VerticalPanel();
    public CustomPanel() {
        initWidget(panel);
    }   
    @Override
    public void add(Widget w) {panel.add(w);}
    @Override
    public void clear() {panel.clear();}
    @Override
    public Iterator<Widget> iterator() {return panel.iterator();}
    @Override
    public boolean remove(Widget w) {return panel.remove(w);}
}

これは VerticalPanel として機能しますが、デザイナーの観点から見ると、これはまだコンポジットです。その結果、その中にウィジェットをドロップすることはできません。最も単純なケースでは、デザイナーが使いやすいようにするためにすべきことは、指定された名前の規則に従って、CustomPanel の同じパッケージに CustomPanel.wbp-component.xml を作成することです。ウィジェットの追加動作のようなフローを与える単純なものは、

<?xml version="1.0" encoding="UTF-8"?>
<component xmlns="http://www.eclipse.org/wb/WBPComponent">
    <description>This is a simple Composite acting like VerticalPanel</description>
    <!-- CREATION -->
    <creation>
        <source><![CDATA[new org.test.client.CustomPanel()]]></source>
    </creation>
    <parameters>
        <parameter name="flowContainer">true</parameter>
        <parameter name="flowContainer.horizontal">false</parameter>
        <parameter name="flowContainer.association">%parent%.add(%child%)</parameter>   
    </parameters>
</component>

このステップを追加した後、コンポジットは gwt デザイナーによって垂直パネル (サポート内にウィジェットをドロップ) のように扱われる必要があります。この XML だけでは不十分な場合、つまり、より複雑な性質の動作が必要な場合は、コンポーネントのカスタム動作を Designer に定義する Java モデル クラスの記述を開始し、<model>タグを使用してコンポーネント xml で参照する必要があります。この場合、モデルとポリシーをホストするプラグインを作成する必要があります。

この要約の参照先と役立つリンクは次のとおりです。

于 2011-09-21T21:07:16.743 に答える
0

GWT Designer のドキュメントには、カスタム コンポジットおよびパネルに関するページがありますが、これらは Swing および SWT コンポーネントに関連しています。GWT に関しては、ドキュメンテーションでは、移植性を最大限に高めるためにGWT のレイアウト マネージャーを使用することを推奨しています。

于 2011-08-12T11:08:14.757 に答える