通过GWT示例MAIL学习GWT的客户端开发一:整体布局

来源:互联网 发布:桃源恋歌mmd镜头数据 编辑:程序博客网 时间:2024/05/16 18:25

为了更好的使用GWT,Google提供了一些参考应用程序,MAIL(http://gwt.google.com/samples/Mail/Mail.html)是其中比较经典的一个。首先它给我们演示了如何利用GWT提供的控件来从整体上设计一个结构清晰的客户端。

 

一、整体框架:

一般一个网页整体看都分成了几部分,比如csdn的这个当前页面就可以看成是5部分,顶部包括一个网站菜单栏和一个博客菜单栏,左边是导航栏,右边是相信内容,底部是网站的信息。在GWT中网页框架是建立在各式各样的Panel的基础上的。像这种整体的分布就可以通过DockPanel或着是DockLayoutPanel来实现。(Google给我们提供了DockPanel的使用示例:http://gwt.google.com/samples/Showcase/Showcase.html#!CwDockPanel)。在MAIL示例中使用的是DockLayoutPanel将页面整体上分为North和center两部分(在GWT中是通过东西南北中来分的,与地图的方向表示一致),而center又被分成west、north、center三部分参见Mail.ui.xml:

<ui:UiBinder
  xmlns:ui='urn:ui:com.google.gwt.uibinder'
  xmlns:g='urn:import:com.google.gwt.user.client.ui'
  xmlns:mail='urn:import:com.google.gwt.sample.mail.client'>

  <g:DockLayoutPanel unit='EM'>
    <g:north size='5'>
      <mail:TopPanel ui:field='topPanel' />
    </g:north>

    <g:center>
      <g:SplitLayoutPanel>
        <g:west size='192'>
          <mail:Shortcuts ui:field='shortcuts' />
        </g:west>

        <g:north size='200'>
          <mail:MailList ui:field='mailList' />
        </g:north>

        <g:center>
          <mail:MailDetail ui:field='mailDetail' />
        </g:center>
      </g:SplitLayoutPanel>
    </g:center>
  </g:DockLayoutPanel>

</ui:UiBinder>


二、North的实现

 

MAIL的顶部内容较少,结构比较简单,所以只需要使用div既可满足需要,但是因为div是html标签,所以不能直接将其放到DockLayoutPanel中,而只能放到HtmlPanel中,所以在顶部先是添加了一个HtmlPanel,然后在HtmlPanel内部添加了div,代码示例TopPanel.ui.xml:

<g:HTMLPanel>
    <div class='{style.logo}'/>

    <div class="{style.statusDiv}">
      <div>
        <b>Welcome back, foo@example.com</b>
      </div>

      <div class='{style.linksDiv}'>
        <g:Anchor href='javascript:;' ui:field='signOutLink'>Sign Out</g:Anchor>
        &nbsp;
        <g:Anchor href='javascript:;' ui:field='aboutLink'>About</g:Anchor>
      </div>
    </div>
</g:HTMLPanel>

 

三、center的west部分的实现

MAIL的左部是一个导航栏,其内部又分成了三部分,而且可以做到隐藏其中的两部分,所以采用了StackLayoutPanel(可以垂直叠放其子节点且每次只能显示其中的一个,通过点击其头部来显示),代码示例Shorcuts.ui.xml

<g:StackLayoutPanel styleName='{style.shortcuts}' unit='EM'>
    <g:stack>
      <g:header size='3'><div class='{style.stackHeader}'><div class='{style.mailboxesIcon}'/> Mailboxes</div></g:header>
      <mail:Mailboxes ui:field='mailboxes'/>
    </g:stack>

    <g:stack>
      <g:header size='3'><div class='{style.stackHeader}'><div class='{style.tasksIcon}'/> Tasks</div></g:header>
      <mail:Tasks ui:field='tasks'/>
    </g:stack>

    <g:stack>
      <g:header size='3'><div class='{style.stackHeader}'><div class='{style.contactsIcon}'/> Contacts</div></g:header>
      <mail:Contacts ui:field='contacts'/>
    </g:stack>
  </g:StackLayoutPanel>

 

四、center的North部分的实现

这一部分实现的是邮件列表的显示功能,而其列表的表头和表体又是分开来实现的(上下结构),所以这部分又使用了一个DockLayoutPanel(当然也可以使用一个verticalPanel),代码示例MailList.ui.xml:

 <g:DockLayoutPanel styleName='{style.outer}' unit='EM'>
    <g:north size='2'>
      <g:FlexTable ui:field='header' styleName='{style.header}' cellSpacing='0' cellPadding='0'/>
    </g:north>

    <g:center>
      <g:ScrollPanel>
        <g:FlexTable ui:field='table' styleName='{style.table}' cellSpacing='0' cellPadding='0'/>
      </g:ScrollPanel>
    </g:center>
  </g:DockLayoutPanel>
五、center的center部分的实现

因为内部又是一个上下结构,所以又使用了DockLayoutPanel,代码示例MailDetail.ui.xml:

<g:DockLayoutPanel unit='EM' styleName='{style.detail}'>
    <g:north size='6'>
      <g:HTMLPanel styleName='{style.header}'>
        <div class='{style.headerItem}' ui:field='subject'/>
        <div class='{style.headerItem}'><b>From:</b> <span ui:field='sender'/></div>
        <div class='{style.headerItem}'><b>To:</b> <span ui:field='recipient'/></div>
      </g:HTMLPanel>
    </g:north>

    <g:center>
      <g:ScrollPanel>
        <g:HTML styleName='{style.body}' ui:field='body' wordWrap='true'/>
      </g:ScrollPanel>
    </g:center>
  </g:DockLayoutPanel>

 

GWT给我们提供了各式各样的Panel(http://blog.csdn.net/fhm727/archive/2010/04/04/5449648.aspx),在实际的开发中,我们要根据具体的需求来选择适合的panel

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 分手了想和好怎么办说 2岁半宝宝胆小怎么办 1岁半宝宝胆小怎么办 分手了还是想他怎么办 两岁宝宝夜惊怎么办 孩子误吃了牙膏怎么办 孩子跳舞脸上的妆卸不掉怎么办 4周岁还不会说话怎么办 宝贝2岁多还不会说话怎么办 孩子20个月离婚怎么办 两个月宝宝闹夜怎么办 两个月宝宝闹瞌睡怎么办 2岁宝宝话特别多怎么办 宝宝3岁还不会说话怎么办 小儿3岁说话晚怎么办 1岁半了不会说话怎么办 宝宝2岁还说话晚怎么办 一岁宝宝不愿意学说话怎么办 2周岁宝宝不愿意学说话怎么办 三岁宝宝不爱说话应该怎么办 三岁宝宝不理人怎么办 两岁半宝宝不说话不连贯怎么办 宝宝三岁说话口齿不清怎么办 b超宝宝腿短怎么办 两岁宝宝学说话口吃怎么办 两岁宝宝说话少怎么办 三岁宝宝说话少怎么办 快4岁不会说话怎么办 宝宝2岁半不爱说话怎么办 两岁半宝宝注意力不集中怎么办 中国出生的外籍小孩怎么办签证 中国人入外籍后国内财产怎么办 中国人入外籍后国内资产怎么办 小孩去美国上小学怎么办 咳嗽震的胸口疼怎么办 高中孩子对手机着迷怎么办 小孩不肯读书沉迷游戏怎么办 小孩沉迷吃鸡游戏怎么办 高一数学成绩差怎么办 小孩子学数学用手指算怎么办 孩子d和b分不清怎么办