2011-08-07 59 views
1

我想從頭開始構建一個DialogBox層次結構。首先,我得如何使用GWT UiBinder擴展/包含對話框?

  • 一個BaseDialog.java類:擴展對話框(GWT部件)

    public class BaseDialog extends DialogBox { 
    
        protected static BaseDialog2UiBinder uiBinder = GWT 
          .create(BaseDialog2UiBinder.class); 
    
        interface BaseDialog2UiBinder extends UiBinder<Widget, BaseDialog2> { 
        } 
    
        @UiField 
        protected FlowPanel contentPanel; 
    
        public BaseDialog() { 
         setWidget(uiBinder.createAndBindUi(this)); 
        } 
    } 
    
  • 一個BaseDialog.ui.xml

    一個簡單的對話框
    <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
    <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
        xmlns:g="urn:import:com.google.gwt.user.client.ui"> 
    
        <g:VerticalPanel width="200px" height="200px"> 
         <g:Label>Label principal</g:Label> 
         <g:FlowPanel ui:field="contentPanel" /> 
        </g:VerticalPanel> 
    
    </ui:UiBinder> 
    

由於y你可以看到,BaseDialog包含一個簡單的標籤和一個contentPanel(FlowPanel)。

我想擴展BaseDialog(例如ConfirmationDialog)。 ConfirmationDialog填充BaseDialog的contentPanel的內容。

我該怎麼做?

謝謝。

回答

3

好吧,我已經找到了解決辦法:

public class ConfirmationBox extends BaseDialog2 { 
    protected static ConfirmationBoxUiBinder uiBinder = GWT.create(ConfirmationBoxUiBinder.class); 

    interface ConfirmationBoxUiBinder extends UiBinder<Widget, ConfirmationBox> { 
    } 

    @UiField 
    Label helloLabel; 

    public ConfirmationBox() { 
    contentPanel.add(uiBinder.createAndBindUi(this)); 
    } 
} 

而且

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:my="urn:import:com.guardis.cortex.web.client.dialog"> 

    <g:FlowPanel> 
     <my:BaseDialog2> 
      <g:FlowPanel ui:field="contentPanel"> 
       <g:Label>test contentPanel from confirmationBox</g:Label> 
      </g:FlowPanel> 
     </my:BaseDialog2> 
     <g:Label ui:field="helloLabel">Hello world from confirmation box (outside of BaseDialog)</g:Label> 
    </g:FlowPanel> 
</ui:UiBinder> 
+0

在你的答案你BaseDialog2延伸,但是在這個問題你的類是BaseDialog。我猜他們是一樣的? 另外,你是否仍然這樣做,或者你找到了更好的方法? – Michael