乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何使用GWT-Ext 進(jìn)行RIA開發(fā) - GWT - AJAX - JavaEye論壇

       goldbomb 2007-11-14

      個人覺得,GWT的客戶端表現(xiàn)并不是Gwt這個項目最關(guān)心的方向,所以要做出表現(xiàn)豐富的界面,要花去不少心思,當(dāng)你為做一個“可排序的Grid”被搞得焦頭爛額時,想想EXT,DOJO,只有艷羨地分了。

      GWT-Extsanjiv.jivan為了豐富GWT的客戶端表現(xiàn)而貢獻(xiàn)的開源項目。項目結(jié)合了當(dāng)前客戶端表現(xiàn)和用戶體驗都相當(dāng)完善的Ext,提供了一種操作性很強(qiáng)的RIA開發(fā)方式。

      作者應(yīng)該花了不少心思在項目上,更新很頻繁,大概不到1個月就有新的版本問世,目前項目的版本為GWT-Ext 0.9.3,是 Ext 1.1.1 和 GWT 1.4 Final 的結(jié)合,在 Ext 方面實現(xiàn)了大多數(shù)常用的控件,如Grid、Tree、Form、TabPanel等等。具體實現(xiàn)效果可以查看項目中的 Showcase Demo

      以下結(jié)合一個例子來演示一下如何使用GWT-Ext 做實際開發(fā)。

      一定要認(rèn)真閱讀項目中的 GettingStarted ,下面起初的幾段其實就是該文的中文譯本。

      一、在Gwt項目中集成GWT-Ext

      1.下載gwtext-0.9.3.zip,之后解壓,將其中的 gwtext.jar 附加到當(dāng)前GWT項目(Tree)的BuildPath中。

      2.下載ext-1.1.1.zip (注意:暫時還不支持最新的2.0版本),將的ext-all.js、ext-core.js以及resources和adapter兩個目錄拷貝到module的public中的js/ext位置。對Ext熟悉的話,可以只拷貝需要的文件而不必載入所有的資源文件。

      3.修改GWT項目中module的html頁面,添加Ext資源,修改后的html頁面可能是這樣:

      html代碼
      1. <html>  
      2.     <head>  
      3.        
      4.         <title>Wrapper HTML for Treetitle>  
      5.   
      6.         <meta name='gwt:module' content='showcase.Tree'/>  
      7.   
      8.         <link type="text/css" rel='stylesheet' href='Tree.css'/>  
      9.            
      10.         <link rel="stylesheet" type="text/css" href="js/ext/resources/css/ext-all.css"/>  
      11.         <link rel="stylesheet" type="text/css" href="js/ext/resources/css/xtheme-aero.css" />  
      12.         <script type="text/javascript" src="js/ext/adapter/yui/yui-utilities.js">script>  
      13.         <script type="text/javascript" src="js/ext/adapter/yui/ext-yui-adapter.js">script>  
      14.         <script type="text/javascript" src="js/ext/ext-all.js">script>  
      15.            
      16.     head>  
      17.   
      18.     <body>  
      19.   
      20.         <script language="javascript" src="gwt.js">script>  
      21.   
      22.         <iframe id="__gwt_historyFrame" style="width:0;height:0;border:0">iframe>  
      23.   
      24.     body>  
      25. html>  

       

      4.編輯項目的Tree.gwt.xml文件,添加以下

      xml 代碼
      1. <inherits name='com.gwtext.GwtExt'/>  

      通過以上步驟,你就可以寫接近Ext功能的客戶端界面了,同時也具有了Gwt的各種開發(fā)優(yōu)勢了,比如Java方式開發(fā),清晰的RPC(這點尤其是在客戶端需要獲取服務(wù)器端數(shù)據(jù)信息時尤其方便)等等。

      二、實例

      下面我們就編寫Showcase Demo 中的Tree節(jié)點下的Two Trees Drag & Drop,例子實現(xiàn)的是兩個Tree中節(jié)點的任意拖放(再次感嘆Ext的豐富表現(xiàn))。

      Tree.java代碼如下,可直接拷貝到查看效果。

      java 代碼
      1. package showcase.client;   
      2.   
      3. import com.google.gwt.core.client.EntryPoint;   
      4. import com.google.gwt.user.client.ui.HorizontalPanel;   
      5. import com.google.gwt.user.client.ui.RootPanel;   
      6. import com.gwtext.client.widgets.tree.AsyncTreeNode;   
      7. import com.gwtext.client.widgets.tree.AsyncTreeNodeConfig;   
      8. import com.gwtext.client.widgets.tree.TreePanel;   
      9. import com.gwtext.client.widgets.tree.TreeNode;   
      10. import com.gwtext.client.widgets.tree.DropNodeCallback;   
      11. import com.gwtext.client.widgets.tree.TreePanelConfig;   
      12. import com.gwtext.client.widgets.tree.XMLTreeLoader;   
      13. import com.gwtext.client.widgets.tree.XMLTreeLoaderConfig;   
      14. import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;   
      15. import com.gwtext.client.dd.*;   
      16. /**  
      17.  * Entry point classes define onModuleLoad().  
      18.  */  
      19. public class Tree implements EntryPoint {   
      20.     public void onModuleLoad() {   
      21.         RootPanel rootPanel = RootPanel.get();   
      22.         HorizontalPanel horizontalPanel = new HorizontalPanel();   
      23.         rootPanel.add(horizontalPanel);   
      24. //      create source countried tree   
      25.         final TreePanel treePanel = new TreePanel("coutries-grouped"new TreePanelConfig() {   
      26.             {   
      27.                 setAnimate(true);   
      28.                 setEnableDD(true);   
      29.                 setContainerScroll(true);   
      30.                 setRootVisible(true);   
      31.             }   
      32.         });   
      33.   
      34.         final XMLTreeLoader loader = new XMLTreeLoader(new XMLTreeLoaderConfig() {   
      35.             {   
      36.                 setDataUrl("countries-grouped.xml");   
      37.                 setMethod("get");   
      38.                 setRootTag("countries");   
      39.                 setFolderTitleMapping("@title");   
      40.                 setFolderTag("continent");   
      41.                 setLeafTitleMapping("@title");   
      42.                 setLeafTag("country");   
      43.                 setQtipMapping("@qtip");   
      44.                 setIconMapping("@icon");   
      45.             }   
      46.         });   
      47.   
      48.         AsyncTreeNode root = new AsyncTreeNode("Countries"new AsyncTreeNodeConfig() {   
      49.             {   
      50.                 setLoader(loader);   
      51.             }   
      52.         });   
      53.   
      54.         treePanel.setRootNode(root);   
      55.         treePanel.render();   
      56.   
      57.         root.expand();   
      58.         treePanel.expandAll();   
      59.   
      60. //      create target vacation tree   
      61.         final TreePanel tripTreePanel = new TreePanel("vacation-tree"new TreePanelConfig() {   
      62.             {   
      63.                 setAnimate(true);   
      64.                 setEnableDD(true);   
      65.                 setContainerScroll(true);   
      66.                 setRootVisible(true);   
      67.             }   
      68.         });   
      69.   
      70.         final XMLTreeLoader tripLoader = new XMLTreeLoader(new XMLTreeLoaderConfig() {   
      71.             {   
      72.                 setDataUrl("trip.xml");   
      73.                 setMethod("get");   
      74.                 setRootTag("vacations");   
      75.                 setFolderIdMapping("@title");   
      76.                 setFolderTag("trip");   
      77.                 setQtipMapping("@qtip");   
      78.                 setIconMapping("@icon");   
      79.                 setAttributeMappings(new String[]{"@trip"});   
      80.             }   
      81.         });   
      82.   
      83.         AsyncTreeNode tripRoot = new AsyncTreeNode("Places to Visit"new AsyncTreeNodeConfig() {   
      84.             {   
      85.                 setLoader(tripLoader);   
      86.             }   
      87.         });   
      88.   
      89.         tripTreePanel.setRootNode(tripRoot);   
      90.         tripTreePanel.render();   
      91.   
      92.         tripRoot.expand();   
      93.         tripTreePanel.expandAll();   
      94.   
      95. //      add trip tree listener that handles move / copy logic   
      96.         tripTreePanel.addTreePanelListener(new TreePanelListenerAdapter() {   
      97.             public boolean doBeforeNodeDrop(TreePanel treePanel, TreeNode target, String point, DragDrop source, TreeNode dropNode, DropNodeCallback dropDropNodeCallback) {   
      98.                 if("true".equals(target.getAttribute("trip"))) {   
      99.                 }   
      100.                 return true;   
      101.             }   
      102.         });   
      103.         horizontalPanel.add(treePanel);   
      104.         horizontalPanel.add(tripTreePanel);   
      105.     }   
      106. }   

       注意:例子中需要的兩個數(shù)據(jù)文件需放置于public目錄,熟悉Ext的應(yīng)該很清楚。

       

      以上示例只是將該種開發(fā)方式的流程順了一下,窺一斑以示全貌,Ext各種豐富的表現(xiàn)都可以實現(xiàn)。閑下來,再寫一下將數(shù)據(jù)提供(其實就是一些多維數(shù)據(jù)而已)方式改為RPC,這樣開發(fā)流程就完整了。

      可以下載示例程序運(yùn)行一下,證明我沒騙你

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多