2011-08-12 13 views
3

標準のGWT VerticalPanelをGWT Designerに追加すると、このパネルにウィジェットをドラッグアンドドロップして追加できます。 GWT Designerは、私がVerticalPanelにウィジェットを追加していることを示す赤い線を表示します。GWT Designerが認識可能な完全カスタムウィジェットを書くには?

自分のパネルを最初から作成したいと仮定し、標準のGWTパネルを拡張したくないとします。 GWT Designerでパネルを認識し、標準のgwtパネルを使用した場合と同じ機能を提供します。

Ext-GWTのようなフレームワークは、自分のウィジェットライブラリを一から書いていますが、GWT Designerと一貫して動作します。この機能を実現するにはカスタムパネルで特定のメソッドを実装する必要がありますか?どんな指導やアイデアも高く評価されます。

custom composites and panelsについてのページを持っているあなたに

答えて

0

GWT Designerのドキュメンテーションをありがとうございましたが、これらは、SwingとSWTコンポーネントに関係します。 GWTに関しては、移植性を最大限に高めるためにGWT's layout managersを使用することを推奨しています。

+0

ありがとうございましたが、残念ながら私は何を見つけることができません私はそれらのリンクを探しています。私はGWT VerticalPanelクラスとそのすべての親をWidgetクラスまで別のパッケージの別の名前でコピー貼り付けました。私はそれがVerticalPanelと同じ機能を持つことを期待しています。実際には同じ機能を持ちますが、デザイナーはパネルとして扱わないため、ウィジェットをドラッグ&ドロップすることはできません。ですから、GWT Designerはその違いをどのように知っていますか? – pistolPanties

3

要約すると、新しいコンポーネントのサポートでは、このコンポーネントをGWT Designerに特別に追加する必要があります。これはまだコンポジットであるあなたはデザイナーの視点から見ているとき

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として動作しますが、私は、私はそれがVerticalPanelのように行動したいカスタムコンポーネントを持っていますが、どのInfactは複合型であると仮定。その結果、内部にウィジェットをドロップすることはできません。最も単純なケースでは、デザイナーにやさしくするために何をすべきかは、指定された名前規則に従ってCustomPanelの同じパッケージにCustomPanel.wbp-component.xmlを作成することです。ウィジェットが動作を追加のような流れを与えるために簡単なものは、あなたの複合体は、同様GWT設計者(サポート内のウィジェットをドロップする)垂直パネルのように扱われるべきで、このステップを追加した後、

<?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> 

だろう。このXMLだけでは不十分な場合、より複雑な性質の動作が必要な場合は、コンポーネントのカスタム動作を定義するJavaモデルクラスを作成し、<model>タグを使用してコンポーネントxmlで参照する必要があります。この場合、モデルとポリシーをホストするプラグインを作成する必要があります。ここで

は、この概要と便利なリンクについては言及されている:

関連する問題