`
qinya06
  • 浏览: 583196 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ext tree

阅读更多
MenuPanel = function() { 
MenuPanel.superclass.constructor.call(this, 
{ 
id:'menu-tree', 
region:'west', 
split:true, 
width: 280, 
minSize: 175, 
maxSize: 500, 
collapsible: true, 
margins:'0 0 5 5', 
cmargins:'0 0 0 0', 
rootVisible:false, 
lines:false, 
autoScroll:true, 
animCollapse:false, 
animate: false, 
collapseMode:'mini', 
loader: new Ext.tree.TreeLoader( 
{ 
dataUrl:'http://localhost:8081/pms/menu.do' 
} 
), 
root: new Ext.tree.AsyncTreeNode( 
{ 
text:'Ext JS', 
id:'root', 
expanded:true//, 
//children:[Docs.classData]//bevis:the data form 
} 
), 
collapseFirst:false 
}); 
    // no longer needed! 
    //new Ext.tree.TreeSorter(this, {folderSort:true,leafAttr:'isClass'}); 
    this.getSelectionModel().on('beforeselect', function(sm, node){return node.isLeaf(); }); 
    //added by bevis 
    //this.on('beforeload',function(node){alert(node.id);}); 
}; 
//此方法的目的是:选中对应的那个menuItem 
Ext.extend(MenuPanel, Ext.tree.TreePanel, { 
    selectClass : function(cls){ 
    //alert(cls); 
//cls=Ext.menu.DateMenu 
        if(cls){ 
            var parts = cls.split('.'); 
            var last = parts.length-1; 
            for(var i = 0; i < last; i++){ 
                var p = parts[i]; 
                var fc = p.charAt(0); 
                var staticCls = fc.toUpperCase() == fc; 
                if(p == 'Ext' || !staticCls){ 
                    parts[i] = 'pkg-'+p; 
                }else if(staticCls){ 
                    --last; 
                    parts.splice(i, 1); 
                } 
            } 
            parts[last] = cls; 
            this.selectPath('/root/000001/'+parts.join('/')); 
        } 
    } 
}); 


** 
* open a new table ,if you click a menuItem 
* @class PMSPanel 
* @extends Ext.Panel 
*/ 
PMSPanel = Ext.extend(Ext.Panel, 
{ 
    closable: true, 
    autoScroll:true, 
    initComponent : function(){ 
        var ps = this.cclass.split('.'); 
        this.title = ps[ps.length-1]; 
        PMSPanel.superclass.initComponent.call(this); 
        //tinit(); 
    }, 
    scrollToMember : function(member){ 
    var el = Ext.fly(this.cclass + '-' + member); 
    if(el){ 
    var top = (el.getOffsetsTo(this.body)[1]) + this.body.dom.scrollTop; 
    this.body.scrollTo('top', top-25, {duration:.75, callback: this.hlMember.createDelegate(this, [member])}); 
    } 
    }, 
    scrollToSection : function(id){ 
    var el = Ext.getDom(id); 
    if(el){ 
    var top = (Ext.fly(el).getOffsetsTo(this.body)[1]) + this.body.dom.scrollTop; 
    this.body.scrollTo('top', top-25, { 
    duration:.5, callback: function(){ 
    Ext.fly(el).next('h2').pause(.2).highlight('#8DB2E3', {attr:'color'}); 
    } 
    } 
    ); 
    } 
}, 
hlMember : function(member){ 
        var el = Ext.fly(this.cclass + '-' + member); 
        if(el){ 
            el.up('tr').highlight('#cadaf9'); 
        } 
    } 
}); 


MainPanel = function(){ 
this.searchStore = new Ext.data.Store({ 
        proxy: new Ext.data.ScriptTagProxy({ 
            url: 'http://extjs.com/playpen/api.php' 
        }), 
        reader: new Ext.data.JsonReader({root: 'data'}, 
['cls', 'member', 'type', 'doc'] 
), 
baseParams: {}, 
        listeners: { 
            'beforeload' : function(){ 
                this.baseParams.qt = Ext.getCmp('search-type').getValue(); 
            } 
        } 
    }); 

    MainPanel.superclass.constructor.call(this, { 
        id:'doc-body', 
        region:'center', 
        margins:'0 5 5 0', 
        resizeTabs: true, 
        minTabWidth: 135, 
        tabWidth: 135, 
        plugins: new Ext.ux.TabCloseMenu(), 
        enableTabScroll: true, 
        activeTab: 0, 
        items: { 
            id:'welcome-panel', 
            title: 'Main Home', 
            autoLoad: {url: PageInfo.base+'/member.do', callback:function(){}, scope: this}, 
            iconCls:'icon-docs', 
            autoScroll: true 
        } 
    }); 
}; 


Ext.extend(MainPanel, Ext.TabPanel, { 
    initEvents : function(){ 
        MainPanel.superclass.initEvents.call(this); 
        this.body.on('click', this.onClick, this); 
    }, 
    onClick: function(e, target){ 
        if(target = e.getTarget('a:not(.exi)', 3)){ 
            var cls = Ext.fly(target).getAttributeNS('ext', 'cls'); 
            e.stopEvent(); 
            if(cls){ 
                var member = Ext.fly(target).getAttributeNS('ext', 'member'); 
                this.loadClass(target.href, cls, member); 
            }else if(target.className == 'inner-link'){ 
                this.getActiveTab().scrollToSection(target.href.split('#')[1]); 
            }else{ 
                window.open(target.href); 
            } 
        }else if(target = e.getTarget('.micon', 2)){ 
            e.stopEvent(); 
            var tr = Ext.fly(target.parentNode); 
            if(tr.hasClass('expandable')){ 
                tr.toggleClass('expanded'); 
            } 
        } 
    }, 

    loadClass : function(href, cls, member){ 
        var id = 'docs-' + cls; 
        var tab = this.getComponent(id); 
        if(tab){ 
            this.setActiveTab(tab); 
            if(member){ 
                tab.scrollToMember(member); 
            } 
        }else{ 
            var autoLoad = {url: href}; 
            if(member){ 
                autoLoad.callback = function(){ 
                    Ext.getCmp(id).scrollToMember(member); 
                } 
            } 
            var p = this.add(new PMSPanel({ 
                id: id, 
                cclass : cls, 
                autoLoad: autoLoad//, 
            })); 
            this.setActiveTab(p); 
            //alert("parent init"); 
        } 
    } 
}); 

Ext.onReady(function(){ 
    Ext.QuickTips.init(); 
    var menuPanel = new MenuPanel(); 
    var mainPanel = new MainPanel(); 
    
    //当用户点选某一节点时就会激活此方法,但是当点选节点前面的"+-"号时不会激活此方法 
    menuPanel.on('click', function(node, e){ 
    if(node.isLeaf()){ 
            e.stopEvent(); 
            mainPanel.loadClass(node.attributes.href, node.id); 
         } 
//         else{ 
//         alert(node.text); 
//         } 
    }); 


mainPanel.on('tabchange', function(tp, tab){ 
    //alert(tab.cclass); 
        menuPanel.selectClass(tab.cclass); 
    }); 


var hd = new Ext.Panel({ 
        border: false, 
        layout:'anchor', 
        region:'north', 
        cls: 'docs-header', 
        height:60,//the head of height ,it can be change 
        items: [{ 
            xtype:'box', 
            el:'header', 
            border:false, 
            anchor: 'none -25' 
        }, 
        new Ext.Toolbar( 
        { 
        cls:'top-toolbar', 
        items:[ 
'->', 
new Ext.Toolbar.TextItem('用户名:Admin'+',登陆时间:'+new Date().getYear()+'/'+(new Date().getMonth()+1)+'/'+new Date().getDate()), 
            { 
                tooltip:'退出系统', 
                iconCls: 'icon-expand-members', 
                text:'退出系统', 
                enableToggle: true, 
                toggleHandler : function(b, pressed){ 
Ext.MessageBox.confirm('提示','是否退出此系统?',exitornotFun); 
function exitornotFun(data){ 
if(data=='yes'){ 
Ext.MessageBox.alert('message','you have exited the system'); 
return; 
} 
} 
            } 
            } 
] 
        }) 
        ] 
        
    }) 
    
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics