2017-09-06 7 views
0

ConfirmDialog의 제목 "Confirm"을 제 언어로 변경하고 싶습니다. this을 보았지만 내 vaadin addon의 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(); 
         } 
        } 
       }); 
     } 
}