jsp页面
<input type="button"
value='<s:text name="msg.portalMS.category.ordetcategory"/>' id="button"
οnclick="javascript:NavTree.show();layerMaskShow();" title="<s:text name="msg.portalMS.category.ordetcategory"/>"/>
<s:hidden name="cloneCategory.terminalType" id="category_terminalType" value="1"></s:hidden>
exttree.js
var basePath = "http://localhost:8080/portalMS";
if(typeof(glbRootPath) != "undefined"){
basePath = glbRootPath;
}
// 扩展窗体
FormEditWin = function(){
var curFormWin;
return {
width : 600,
height : 400,
showAddDirWin : function(parentNode) {
// 显示添加子目录窗口
var number = parentNode.indexOf(parentNode.lastChild) + 1;
var editpage = 'resource/jsonData.action';
var window = this.createWin("windirnew",$CON.AIMDIRECTORY_NEWNODE, editpage, function() {
parentNode.reload();
});
window.show();
},
showAddLeafWin : function(parentNode) {
// 显示添加子叶子节点窗口
var number = parentNode.indexOf(parentNode.lastChild) + 1;
var editpage = basePath
+ "/treeAction!modifyNode.action?extTree.parentId="
+ parentNode.id + "&extTree.leaf=1&extTree.number=" + number;
var window = this.createWin("winleafnew", $CON.LEAF_NEWNODE, editpage, function() {
parentNode.reload();
});
window.show();
},
showEditDirWin : function(node) {
// 显示目录编辑窗口
var editpage = basePath
+ "/treeAction!modifyNode.action?extTree.id=" + node.id;
var window = this.createWin("win" + node.id, node.text, editpage, function() {
var nodeparent = node.parentNode;
var tree = node.getOwnerTree();
nodeparent.on("expand", function(pnode) {
tree.getNodeById(node.id).select();
}, this, {
single : true
});
node.parentNode.reload();
});
window.show();
},
showEditLeafWin : function(node) {
// 显示叶子节点编辑窗口
var editpage = basePath
+ "/treeAction!modifyNode.action?extTree.id=" + node.id;
var window = this.createWin("win" + node.id, node.text, editpage, function() {
var nodeparent = node.parentNode;
var tree = node.getOwnerTree();
nodeparent.on("expand", function(pnode) {
tree.getNodeById(node.id).select();
}, this, {
single : true
});
node.parentNode.reload();
});
window.show();
},
createWin : function(winId, winTitle, iframePage, closeFun) {
// 供各类型窗口创建时调用
var win = Ext.getCmp(winId);
if (!win) {
win = new Ext.Window({
id : winId,
title : $CON.MENU_EDIT + winTitle,
width : this.width,
height : this.height,
maximizable : true,
modal : true,
html : "<iframe width='100%' height='100%' frameborder='0' src='"
+ iframePage + "'></iframe>"
});
this.reloadNavNode = closeFun;
}
curFormWin = win;
return win;
},
reloadNavNode : function() {
},
close : function() {
if(curFormWin){
curFormWin.close();
}
}
}
}();
// 导航树
NavTree = function(){
var nav;
var formWindow;
var navEditor;
var leafMenu;
var dirMenu;
var loader;
var root;
var removeFlag = false;
var titleChangeFlag = false;
var nodeSelected;
var mgr;
var title;
var cateType;
var terminalType;
return {
init : function(){
if(!mgr){
Ext.Msg.alert($CON.WARM_TIP,$CON.CHECK_CONFIG+"NavTree.setMgr()"+CHECK_CONFIG_ONE+"mgr");
return;
}
if(!loader){
if(!Ext.get("cate_type"))
{
return;
}
if(!Ext.get("category_terminalType"))
{
return;
}
var siteId="";
if(Ext.get("siteId"))
{
siteId=Ext.get("siteId").dom.value;
}
terminalType = Ext.get("category_terminalType").dom.value;
cateType =Ext.get("cate_type").dom.value;
loader = new Ext.tree.TreeLoader({
url : '/portalMS/resource/jsonData.action?cateType='+cateType+'&terminalType='+terminalType+'&site.siteID='+siteId
});
loader.on('beforeload', function(treeloader, node) {
treeloader.baseParams = {
id : node.id
};
}, this);
}
if(!root){
if(Ext.get("category_firstNodeName")){
title=Ext.get("category_firstNodeName").dom.value;
}else{
title="";
}
root = new Ext.tree.AsyncTreeNode({
id : Ext.get("category_firstNodeId").dom.value,
text : title,
expanded: true
});
}
if(!nav){
nav = new Ext.tree.TreePanel({
width : 232,
height: 600,
autoScroll : true,
animate : true,
loader : loader,
root : root,
enableDD:true,
border:false,
listeners : {
'click' : function(node, event) {
if (node.isLeaf()) {
// 为叶子节点时,点击不进入链接
// event.stopEvent();
// alert(node.url);
// window.open('http://www.google.com');
}
}
}
});
// 添加右键菜单
// nav.on("contextmenu", this.showTreeMenu);
// 当节点文本改变时触发事件
nav.on("textchange", function(node, newText, oldText) {
if (!titleChangeFlag && newText != oldText) {
mgr.ajaxModifyTitle(node.id, newText, function(success) {
});
}
});
// 当节点移动时触发事件
nav.on("movenode", function(tree, node, oldParent, newParent, index) {
mgr.updateMoveNode(node.id, oldParent.id, newParent.id, index+1, cateType, getReslut);
});
function getReslut(data)
{
if(data == "error"){
Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOEXISTE);
}
if(data == "false"){
Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOCHANGE);
}
}
// 当节点移动前触发事件
nav.on("beforemovenode", function(tree, node, oldParent, newParent, index) {
if(oldParent!=newParent){
Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOCHANGE);
return false;
}
});
// 当节点删除时触发事件
nav.on("remove", function(tree, parentNode, node) {
if (removeFlag) {
mgr.ajaxRemoveParentById(node.id);
}
});
}
// if(!navEditor){
// navEditor = new Ext.tree.TreeEditor(nav, {
// allowBlank : false,
// ignoreNoChange : true,
// blankText : '标题不能为空',
// selectOnFocus : true
// });
// }
this.setLeafMenu();
this.setDirMenu();
},
setMgr : function(manager){
mgr = manager;
},
getMgr : function(){
return mgr;
},
setLeafMenu: function(){
// 设置叶子菜单
if(!leafMenu){
leafMenu = new Ext.menu.Menu({
items : [{
text : $CON.TITLE_EDIT,
handler : function() {
navEditor.triggerEdit(nodeSelected);
}
}, "-", {
text : $CON.EDIT,
handler : function() {
FormEditWin.showEditLeafWin(nodeSelected);
}
}, "-", {
text : $CON.DELETE_ONE,
handler : this.delTreeItemComfirm
}]
});
}
},
setDirMenu: function(){
// 设置目录菜单
if(!dirMenu){
dirMenu = new Ext.menu.Menu({
items : [{
text : $CON.TITLE_EDIT,
handler : function() {
navEditor.triggerEdit(nodeSelected);
}
}, "-", {
text : $CON.EDIT,
handler : function() {
FormEditWin.showEditDirWin(nodeSelected);
}
}, "-", {
text : $CON.LEAF_CHILDNODE_ADD,
handler : function() {
FormEditWin.showAddLeafWin(nodeSelected);
}
}, "-", {
text : $CON.AIMDIRECTORY_ADDNODE,
handler : function() {
FormEditWin.showAddDirWin(nodeSelected);
}
}, "-", {
text : $CON.DELETE_ONE,
handler : this.delTreeItemComfirm
}]
});
}
},
showTreeMenu : function(node, e){
nodeSelected = node;
nodeSelected.select();
if (node.isLeaf()) {
// 显示叶子节点菜单
leafMenu.showAt(e.getPoint());
} else {
// 显示目录节点菜单
dirMenu.showAt(e.getPoint());
}
},
delTreeItemComfirm : function(){
Ext.Msg.confirm($CON.DELETE_SURE, $CON.NODE_SUREDELETE, function(btn) {
if (btn == "yes") {
NavTree.delTreeItem();
}
});
},
delTreeItem : function(){
if (nodeSelected != nav.getRootNode()) {
removeFlag = true;
nodeSelected.remove();
removeFlag = false;
} else {
Ext.Msg.alert($CON.WARM, $CON.NODE_NODELETE);
}
},
show : function(){
formWindow = new Ext.Window({
modal:true,
layout:'fit',
width:250,
height: 400,
resizable:true,
closeAction:'hide',
shim:false, // 关键,设置此项为 false ,则最大化时 window不会撑破 tabPanel
autoScroll:true,
constrainHeader:true, // 关键,设置此项为 true ,指定此 window 不会超过 tabPanel 的上面和左边
style:"padding:0px;",
plain: true,
listeners:{
"hide":function(){
window.parent.lFrame.location.reload();
}},
items: [
nav
]
});
formWindow.on('beforeclose',function(){Ext.Msg('sa');})
formWindow.show();
nav.getRootNode().toggle();
}
}
}();
// 文档加载完毕执行
Ext.onReady(function(){
//Ext.BLANK_IMAGE_URL = "../scripts/ext/resources/images/default/s.gif";
if(typeof(TreeDWR)=="undefined"){
Ext.Msg.alert($CON.WARM_TIP,$CON.WRONG);
}else{
NavTree.setMgr(TreeDWR);
NavTree.init();
Text:$CON.LOADING;
}
});