2017-09-06 9 views
0

ConfirmDialogのタイトル「確認」を自分の言語のものに変更したいと思います。私はthisを見ましたが、私のvaadinアドオンのshowメソッドは静的メソッドであり、ファクトリから返されたダイアログを表示することは不可能なので、コードはわかりません。Vaadin ConfirmDialogタイトルを変更する

私は、ダイアログをラップするために、このコードを使用:

package com.xxx.dialog; 

import org.vaadin.dialogs.ConfirmDialog; 

import com.xxx.message.MessageByLocaleService; 
import com.vaadin.ui.Label; 
import com.vaadin.ui.UI; 

public class DeleteDialog { 
    private ConfirmDialog cd; 

    public DeleteDialog(MessageByLocaleService messageByLocaleService) { 
     cd = ConfirmDialog.getFactory() 
       .create(messageByLocaleService.getMessage("caption.confirm"), 
       "", "OK", "Cancel", ""); 
    } 

    public abstract static class MyListener { 
     public abstract void receive(); 
    } 

    public void show(UI ui, MessageByLocaleService messageByLocaleService, MyListener yes, MyListener cancel) { 
     //this.setCaption(messageByLocaleService.getMessage("caption.confirm")); 
     //this.setMessageLabel(new Label(messageByLocaleService.getMessage("caption.confirm"))); 
     cd.show(ui, messageByLocaleService.getMessage("confirm.delete"), 
       new ConfirmDialog.Listener() { 
        private static final long serialVersionUID = 1L; 

        public void onClose(ConfirmDialog dialog) { 
         if (dialog.isConfirmed()) { 
          // Confirmed to continue 
          yes.receive(); 
         } else { 
          // User did not confirm 
          cancel.receive(); 
         } 
        } 
       }); 
     } 
} 

私はしばらくの間extends ConfirmDialogとして、このclass DeleteDialogを持っていたコメントアウトされている私が作った試みのいくつかは意味を持たない理由、それはです。

+0

'messageByLocaleService.getMessage(" caption.confirm ")'がnullを返していないかどうかチェックしましたか? – nyg

+0

nullであってはなりません。翻訳は翻訳ファイルにあります。問題は 'show'は静的メソッドで、クラスメソッドが必要なことです。おそらく、アドオンのバージョンを静的でないメソッドにダウングレードすることになります。 – Adder

答えて

0

新しいデフォルト工場を設定して目標を達成することができました。

package com.xxx.dialog; 

import org.vaadin.dialogs.ConfirmDialog; 

import com.xxx.message.MessageByLocaleService; 
import com.vaadin.ui.UI; 

public class DeleteDialog { 
    ConfirmDialog.Factory oldFactory; 
    ConfirmDialog.Factory factory; 

    public DeleteDialog(MessageByLocaleService messageByLocaleService) { 
     oldFactory = ConfirmDialog.getFactory(); 
     factory = new ConfirmDialog.Factory() { 

      private static final long serialVersionUID = 1L; 

      @Override 
      public ConfirmDialog create(String arg0, String arg1, String arg2, String arg3, String arg4) { 
      ConfirmDialog cd = oldFactory.create(messageByLocaleService.getMessage("caption.confirm"), 
        "", messageByLocaleService.getMessage("message.ok"), 
         messageByLocaleService.getMessage("message.cancel"), null); 
      cd.setMessage(messageByLocaleService.getMessage("confirm.delete")); 
      return cd; 
      } 
     }; 
    } 

    public abstract static class MyListener { 
     public abstract void receive(); 
    } 

    public void show(UI ui, MessageByLocaleService messageByLocaleService, MyListener yes, MyListener cancel) { 

     ConfirmDialog.setFactory(factory); 
     ConfirmDialog.show(ui, messageByLocaleService.getMessage("confirm.delete"), 
       new ConfirmDialog.Listener() { 
        private static final long serialVersionUID = 1L; 

        public void onClose(ConfirmDialog dialog) { 
         if (dialog.isConfirmed()) { 
          // Confirmed to continue 
          yes.receive(); 
         } else { 
          // User did not confirm 
          cancel.receive(); 
         } 
        } 
       }); 
     } 
} 
関連する問題