2016-11-08 14 views
0

私は、ユーザーが記入する必要がある多くの異なるフィールドを含むGWTページを持っています。ユーザーがフォームの記入を完了すると、このページのボタンをクリックすると、入力した内容の要約を含むPopupPanelが開きます。ユーザーが入力したすべてのデータが正しいと判断した場合、このPopupPanelで「OK」ボタンをクリックするオプションがあります。私が達成したいのは、ユーザーがOKをクリックすると、PopupPanelが閉じられ、初期クラスのメソッド(および初期クラスの変数を使用)がトリガーされるということです。私は特定の拘束のためにEventBusを使用することができません。他のクラスの内部からGWTクラスのメソッドをトリガー

私はこのクリックハンドラー持って私の最初のクラスで

buttonAnle.addClickHandler(new ClickHandler() 
    { 

     @Override 
     public void onClick(ClickEvent event) 
     { 

      if (validateTimespan(subs) && validateSubumfeldTimespan(subs)) 
      { 
       summary(); 
      } 

     } 
    }); 

方法の概要は、()popuppanelを示しています

private void summary() 
{ 
    int subumfelderNr = subs.getRowCount(); 
    int werbeformenNr = kats.getRowCount(); 
    int days = (int) (datumBis.getValue().getTime() - datumVon.getValue().getTime())/86400000; 
    new SubprogramPopup(umfeldText.getTextBoxText(), subumfelderNr - 1, werbeformenNr - 1, days + 1).show(); 

} 

ポップアップが表示され、今私はOKボタンのための方法が必要ですクリックすると、私の初期クラスのメソッドがトリガされます。どんな助けでも大歓迎です。

+0

好奇心。 なぜGWTEventBusを使用できないのですか? – Knarf

+0

正直なところ、私は新入社員で、EventBusはオプションではないと言われていましたので、代替ソリューションを探しています。 – BadAyka

答えて

0

可能な解決策の1つは、SubprogramPopup内のインターフェイスを使用することです。 SubprogramPopupクラスにこのコードを追加します。

interface MyHandler { 
    void doSomething(); 
} 

とSubprogramPopupのコンストラクタに別のパラメータとしてMyHandlerという追加します。

SubprogramPopup(Textbox textbox, 
       int value01, 
       int value02, 
       int value03, 
       MyHandler handler) {} 

、あなたはあなたが必要な場合に実行されるべきものを、追加するハンドラを使用することができますSubprogramPopupを作成している場合。

new SubprogramPopup(umfeldText.getTextBoxText(), 
        subumfelderNr - 1, 
        werbeformenNr - 1, 
        days + 1, 
        new MyHandler() { 
         public void doSomething() { 
         // enter your code here ... 
         } 
        }).show(); 
関連する問題