天天看点

ext webwork+hibernate+spring crud ssh2 viewport布局文

吸纳百川为我所用。

1.ext_viewport.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="ww" uri="/webwork" %>

<html>  

<head>  

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  

<title>Ext viewport 要在服务器下测试</title>

  <link rel="stylesheet" type="text/css" href="../ext-2.2.1/resources/css/ext-all.css" target="_blank" rel="external nofollow" />

  <!-- GC -->

  <!-- LIBS -->

  <script type="text/javascript" src="../ext-2.2.1/adapter/ext/ext-base.js"></script>

  <!-- ENDLIBS -->

  <script type="text/javascript" src="../ext-2.2.1/ext-all.js"></script>

<!-- Common Styles for the examples -->

<!-- Custom CSS and Libs --> 

<link rel="stylesheet" type="text/css" href="extcss/main.css" target="_blank" rel="external nofollow" />

<script type="text/javascript">

Ext.BLANK_IMAGE_URL = 'img/s.gif';

</script>

<style> 

#actions li { 

     margin:.3em; 

#actions li a { 

     color:#666688; 

     text-decoration:none; 

.nav{

background:url(img/user.gif) no-repeat scroll left top;

}

</style>

</head>  

<body>  

<div id="loading-mask" style=""></div>

  <div id="loading">

    <div class="loading-indicator"><img src="img/extanim32.gif" width="32" height="32" style="margin-right:8px;" align="absmiddle"/>Loading...</div>

  </div>

<script type="text/javascript" src="extjs/ext_viewport.js"></script>   

<ul id="actions" class="x-hidden"> 

     <li> 

         <a id="use" href="#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >Use Existing Tab</a> 

     </li> 

     <li> 

         <a id="create" href="#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >Create New Tab</a> 

     </li>

</ul>

<div id="west"></div>

<div id="north"></div>  

<div id="south">

<div style="float:left;margin:5px;font:normal 12px tahoma, arial, sans-serif,宋体;">

    Power By: erick

</div>

    <div style="float:right;margin:5px;font:normal 12px tahoma, arial, sans-serif,宋体;"> 版本号V1.0Beta&nbsp;</div>

</div>  

<div id="tabs"></div>

</body>  

</html> 

2.ext_viewport.js

Ext.onReady(function(){ 

Ext.QuickTips.init();//没查什么意思

//Ext.BLANK_IMAGE_URL = 'scripts/ext/resources/images/vista/s.gif';

    // 包含actions的菜单 

     var tabActions = new Ext.Panel({ 

         frame:true, 

         title: 'Actions', 

         collapsible:true, 

         contentEl:'actions', 

         titleCollapse: true 

     }); 

     // 保持actions菜单的父面板 

     var actionPanel = new Ext.Panel({ 

         id:'west-panel', 

         region:'west', 

         split:true, 

         collapsible: true, 

        // collapseMode: 'mini', 

         width:200, 

         //minWidth: 150, 

         minSize: 175, 

         maxSize: 400,

         margins:'0 5 0 0',

         border: true,

         layout:'accordion',//加了以后 菜单的border就占满了west region,样式,默认总有一个菜单总打开

         title:'system menu',

        layoutConfig:{

   animate:true

},//没看出变化

         //baseCls:'x-plain',//一个样式

         //items: [tabActions]

         items: [

    {

title:'系统管理',

border:false,//下面的tree里border:true;

html:'<div id="tree-div" style="overflow:auto;width:100%;height:100%;border:0px solid #c3daf9"></div>',

iconCls:'nav'//定义按钮等的图标的样式

    },{

title:'System',

border:false,

//iconCls:'settings',

html:'<div id="tree" style="overflow:auto;width:100%;height:100%"></div>'

    },{

title:'Sygetm',

border:false,

//iconCls:'settings',

html:'<div id="tree3" style="overflow:auto;width:100%;height:100%"></div>'

    }]

     }); 

     // 主面板(已有tab) 

     var tabPanel = new Ext.TabPanel({ 

         region:'center', 

         deferredRender:false, 

         autoScroll: true,  

         margins:'0 4 0 0', //up left down right

         resizeTabs:true, // turn on tab resizing

         minTabWidth: 85,

tabWidth:95,

enableTabScroll:true,//挤的时候能够滚动收缩

         activeTab:0, 

         //autoHeight:true,

         items:[{  //here is a define tab names "main",others will be add throught the tree click event

             id:'tab1', 

             contentEl:'tabs', 

             title: 'Main', 

             html:"<div id='welcome' style='margin:40px;font-size:16px;color:#15428B;text-align:center'><h2><img src='img/extanim32.gif' width='32' height='32' style='margin-right:8px;' align='absmiddle'/>Welcome to IT Dept</h2></div>",

             closable:true, 

             autoScroll:true 

         }],

          //下面是新增的关閉右键菜单代码

            listeners:{

                     //传进去的三个参数分别为:这个tabpanel(tabsDemo),当前标签页,事件对象e

                    "contextmenu":function(tdemo,myitem,e){

                               var menu=new Ext.menu.Menu([{

                                         text:"关闭当前页",

                                         handler:function(){

                                            tdemo.remove(myitem);

                                         }

                                },{

                                         text:"关闭其他所有页",

                                         handler:function(){

                                            //循环遍历

                                            tdemo.items.each(function(item){

                                                 if(item.closable&&item!=myitem)

                                                 {

                                                    //可以关闭的其他所有标签页全部关掉

                                                    tdemo.remove(item);

                                                 }

                                            });

                                         }

                                },{

                                         text:"新建标签页",

                                         handler:addTab

                                }]);

                                //显示在当前位置

                                menu.showAt(e.getPoint());

                     }

            }

     }); 

     //  配置视图viewport 

     viewport = new Ext.Viewport({ 

            layout:'border', 

            items:[

            new Ext.BoxComponent({

region:'north',

el: 'north',

height:30

}),new Ext.BoxComponent({

region:'south',

el: 'south',

height:55

}),

            actionPanel,tabPanel]}); 

      // 在中间的面板加入tab 

     function addTab(tabTitle, targetUrl){ 

         tabPanel.add({ 

         title: tabTitle, 

         iconCls: 'tabs', 

         autoLoad: {url: targetUrl, callback: this.initSearch, scope: this}, 

         closable:true 

     }).show(); 

     } 

     // 更新tab内容,如不存在就新建一个 

     function updateTab(tabId,title, url) { 

         var tab = tabPanel.getItem(tabId); 

         if(tab){ 

             tab.getUpdater().update(url); 

             tab.setTitle(title); 

         }else{ 

             tab = addTab(title,url); 

         } 

         tabPanel.setActiveTab(tab); 

     } 

     // 映射连接的id到函数 

     var count = 0; 

     var actions = { 

         'create' : function(){ 

             addTab("New Tab",'sample0.html'); 

         }, 

         'use' : function(){ 

             // 演示页之间的轮换 

             updateTab('tab1','替换' + count + ' 次','sample'+(count%2)+'.html'); 

             count++;                 

         } 

     }; 

     function doAction(e, t){ 

         e.stopEvent(); 

         actions[t.id](); 

     } 

     // body初始化后,viewport setup过后才能执行下面的代码 

     //actionPanel.body.on('mousedown', doAction, null, {delegate:'a'});  //改为tree.on('click',treeClick);  

     //my tree define ----tree1-------

     var Tree = Ext.tree;   

       //要在服务器下测试

        //定义根节点的Loader   

        var treeloader=new Tree.TreeLoader({

           baseParams:{fid:'0'},//default post a parameter fid to action

           dataUrl:'../extmenu.action'   //指定的URL  

           //dataUrl:'extMenusubmit.jsp'

        });   

        //根节点

    //var root=new Ext.tree.TreeNode({

    //TreeNode常用配置参数

//1.checked:false//true则在text前有个选中的复选框,false则text前有个未选中的复选框,默认没有任何框框

//2.expanded:fasle//展开,默认不展开

//3.href:"http:/www.cnblogs.com"//节点的链接地址

//4.hrefTarget:"mainFrame"//打开节点链接地址默认为blank,可以设置为iframe名称id,则在iframe中打开

//5.leaf:true//叶子节点,看情况设置

//6.qtip:"提示"//提示信息,不过要 Ext.QuickTips.init();下

//7.text:"节点文本"//节点文本

//8.singleClickExpand:true//用单击文本展开,默认为双击

//isteners:{//监听

          //"click":function(node,e){

                     // alert(node.text)

                 // }

         // }

        //id:"root",

        //text:"控制面板",

        //expanded:true

   //});

        //异步加载根节点   

        var root=new Tree.AsyncTreeNode({

      id:'0',    

            text:'root'   

        });   

        //var tree = new Tree.TreePanel('tree',{//ext 1.0

        var tree = new Tree.TreePanel({

            //renderTo:"tree_div",  

//如果使用renderTo,则不能使用setRootNode()方法,需要在TreePanel中设置root属性。   

            el:'tree-div',//ext 2.0

            //el:'west',

//root:root,        //填充区域   

            rootVisible:false,     //隐藏根节点   

            border:true,          //边框   

            animate:true,         //动画效果   

            autoScroll:true,      //自动滚动   

            enableDD:true,       //节点是否可以拖拽                

            containerScroll:true,

            //lines:true,//节点间的虚线条

            useArrows:true,//小箭头

            //root:rotnode,        //两种设置root节点的方法,  

//一种配置root,另一种就是setRootNode  

            loader:treeloader               

        });   

       //设置根节点   

       tree.setRootNode(root);   

       //响应事件,传递node参数   

       tree.render();              

      // root.expand(false,true); //展开一级树,第二级后不展开 

      root.expand();

    treeloader.on('beforeload',function(treeLoader,node){

  this.baseParams.fid=node.attributes.id;//传参数

  //Ext.Msg.alert('msg',this.baseParams.fid);

  },treeloader); 

  tree.on('click',treeClick);//tree leaf click event

  //tree1 end----------------------------------

  //tree2 start------------------------------------

    var root2=new Ext.tree.TreeNode({

    id:"root2",

    text:"tree root"

});

    var c1=new Ext.tree.TreeNode({

id:'c1',

icon:'img/im2.gif',

text:'infomation1'

});

    var c2=new Ext.tree.TreeNode({

id:'c2',

icon:'img/im2.gif',

//text:'<a href=\'1.jsp\' target=\'_self\'>infomation2</a>'

text:'information2',

leaf:true

});

    var c22=new Ext.tree.TreeNode({

id:'c22',

icon:'img/im2.gif',

text:'infomation3',

href:'1.jsp'

});

    var c3=new Ext.tree.TreeNode({

id:'c3',

icon:'img/im2.gif',

text:'infomation4'

});

    var c4=new Ext.tree.TreeNode({

id:'c4',

icon:'img/im2.gif',

text:'infomation5',

href:'output\/Ext.WindowGroup.html'

});

var c5=new Ext.tree.TreeNode({

id:'c5',

text:'infomation'

});

c1.appendChild(c2);

    c1.appendChild(c22);

root2.appendChild(c1);

    root2.appendChild(c3);

    root2.appendChild(c4);

   //root3.appendChild(c5);

var tree2=new Ext.tree.TreePanel({

renderTo:"tree",

root:root2,

animate:true,

enableDD:false,

border:false,

rootVisible:false,

containerScroll: true

});

tree2.on('click',treeClick);//没有效果,it seams the link should be add to the tree options directly by href property,i know why ,maybe the isleaf property is undefine

//tree2 end-------------------------------------------------------------------------

//set tree click events

function treeClick(node,e) {

//var Tree = Ext.tree;

if(node.isLeaf()){

e.stopEvent();

//Ext.Msg.alert("msgkkk",node.id);

//Ext.Msg.alert('mmm',node.ui.getAnchor());

var n = tabPanel.getComponent(node.id);

if (!n) {

var n = tabPanel.add({

'id' : node.id,

'title' : node.text,

closable:true,

autoScroll:true,

//autoLoad:"2.jsp"

//html: '<iframe src="'+node.ui.getAnchor()+'" width="100%" height="100%" />'

//只是不需要再载入ext的东西,其它代码结构完全相同,也是采用Ext.onReady方式,原因是<script>块中, 不能加入<!-- //--> 这一符号。否则Ext不能运行该页的javascript

//autoLoad:{url:'inventory_list.jsp',callback:this.initSearch,scope:this,script:true}//params: {TabId: tabIndex}

//autoLoad:{url:'../Inventory/ext_inventory_list.jsp',scripts:true,nocache: true}//leaf tree's id value must be a string not integer,otherwise "this.id.indexOf is not a function" errors will be happened

autoLoad:{url:'../Inventory/ext_stock_list.jsp',scripts:true,nocache: true}//leaf tree's id value must be a string not integer,otherwise "this.id.indexOf is not a function" errors will be happened

});

//alert(node.ui.getAnchor());

}

tabPanel.setActiveTab(n);

}

}

//end loading div in page

setTimeout(

function() {

Ext.get('loading').remove();

Ext.get('loading-mask').fadeOut({remove:true});

}, 250

  );

//这里放一些实例,仅供学习用,only for learning---------------------------------------

//1.messagebox

//Ext.MessageBox.show({

    //title:"标题",

    //msg:"内容的消息",

    //buttons:{"ok":"我不再显示OK了"},

    //fn:function(e){alert(e);},

    //animEl:"tree",

    //width:500,

    //icon:Ext.MessageBox.INFO,

    //closable:false,

    //progress:true,

    //wait:true,

    //progressText:"进度条"

    //wait:true,

    //waitConfig:{

    //interval:600,

    //duration:5000,

    //fn:function(){

      //Ext.MessageBox.hide();//让进度条消失或者用Ext.MessageBox.updateProgress(i,Math.round(100*i)+"% completed",i);

    //}},

   // prompt:true

   // multiline:true

   //});

   //2.带顶部,底部,脚部工具栏的panel

//var p=new Ext.Panel({

   //id:"panel1",

        //title:"标题",

        //collapsible:true,

        //renderTo:"container",

        //closable:true,

        //width:400,

        //height:300,

        //tbar:[{text:"按钮1"},{text:"按钮2"}], //顶部工具栏

        //bbar:[{text:"按钮1"},{text:"按钮2"}],  //底部工具栏

        //html:"内容",

        //buttons:[{text:"按钮1"},{text:"按钮2"}] //footer部工具栏

   //});

  // 我们已经在各种工具栏上添加了按钮,但是却没有激发事件,下面我们来添加按钮事件代码:

  //tbar:[{text:"按钮1",handler:function(){Ext.MessageBox.alert("我是按钮1","我是通过按钮1激发出来的弹出框!")}},{text:"按钮2"}],  

//3.嵌套了tabpanel的window

//var w=new Ext.Window({

           //contentEl:"win",

           //width:300,

           //height:200,

           //items:new Ext.TabPanel({

                      //activeTab:0,//当前标签为第1个tab(从0开始索引)

                     // border:false,

                     // items:[{title:"tab1",html:"tab1在windows窗口中"},{title:"tab2",html:"tab2在windows窗口中"}]//TabPanel中的标签页,以后再深入讨论

                // }),

          // plain:true,//true则主体背景透明,false则主体有小差别的背景色,默认为false

          // title:"标题"

       // });

       // w.show();

});