📄 tree.js
字号:
} else {
// windowed version
return false;
}
}
function showTree(doc, nodeId) {
if (nodeId != null) {
setCurrentFolder(nodeId);
if ((tree.nodes[nodeId] != null) && (tree.nodes[nodeId].childs == null)) {
tree.nodes[nodeId].childs = new Array();
}
}
doc.open();
doc.write(treeHeadHtml1);
doc.write(vr.encoding);
doc.write(treeHeadHtml2);
dfsTree(doc, tree.root, 0, false, new Array());
doc.writeln(treeFootHtml);
doc.close();
}
function showLoadedNodes(doc, id) {
if (vr.actDirId == null) {
setCurrentFolder(id);
}
if (! tree.nodes[id].open) {
toggleNode(doc, id);
} else {
saveScroll(doc);
showTree(doc);
restoreScroll(doc, vr.scrollTop);
}
}
function setNoChilds(nodeId) {
var node = tree.nodes[nodeId];
if (node != null) {
tree.nodes[nodeId].childs = new Array();
}
}
// returns the node id from a given name
function getNodeIdByName(nodeName) {
var result = "";
var node = tree.root;
if (nodeName != "/") {
while ((node != null) && (result != nodeName)) {
result += "/";
var subnode = null;
var childs = node.childs;
if (childs != null) {
for (i=0; i<childs.length; i++) {
subnode = tree.nodes[childs[i]];
var subname = result + subnode.name;
if ((subnode != null) && ((nodeName == subname) || (nodeName.indexOf(subname + "/") == 0))) {
result = result + subnode.name;
i = childs.length;
}
}
}
node = subnode;
}
}
if (node != null) {
return node.id;
} else {
return null;
}
}
// returns the node name from a given id
function getNodeNameById(nodeId) {
var node = tree.nodes[nodeId];
var result = "";
if (node != null) {
if (node.id == tree.root.id) {
return "/";
} else {
var isFolder = (node.folder);
do {
result = ("/" + node.name + result);
node = tree.nodes[node.parentId];
} while ((node != null) && (node != tree.root));
if (isFolder && result.charAt(result.length-1) != '/') {
result += "/";
}
return result;
}
} else {
return null;
}
}
function aC(name, type, folder, id, parentId, state, grey) {
var theParent = tree.nodes[parentId];
var oldNode = tree.nodes[id];
if (oldNode == null) {
// the node is not already present in the tree, so insert it
if (theParent == null) {
// this is the "root" node
tree.nodes[id] = new nodeObject(name, type, folder, id, null, state, grey, false);
tree.root = tree.nodes[id];
} else {
// this is a regular subnode
tree.nodes[id] = new nodeObject(name, type, folder, id, parentId, state, grey, false);
if (theParent.childs == null) {
theParent.childs = new Array();
}
theParent.childs[theParent.childs.length] = id;
}
} else {
// the node is already part of the tree, so just update it
newNode = new nodeObject(name, type, folder, id, parentId, oldNode.state, oldNode.grey, oldNode.open);
newNode.childs = oldNode.childs;
tree.nodes[id] = newNode;
// the parents "child node list" must have been cleared before adding new nodes
theParent.childs[theParent.childs.length] = id;
}
}
var m_includeFiles = false;
function includeFiles() {
return m_includeFiles;
}
function setIncludeFiles(value) {
m_includeFiles = value;
}
var m_projectAware = true;
function isProjectAware() {
return m_projectAware;
}
function setProjectAware(value) {
m_projectAware = value;
}
var m_treeType = null;
function getTreeType() {
return m_treeType;
}
function setTreeType(value) {
m_treeType = value;
}
var m_sitePrefix = null;
function getSitePrefix() {
return m_sitePrefix;
}
function setSitePrefix(value) {
m_sitePrefix = value;
}
var m_rootFolder = null;
function getRootFolder() {
if (m_rootFolder == null) {
return "/";
} else {
return m_rootFolder;
}
}
function setRootFolder(value) {
m_rootFolder = value;
}
// called if the folder name is clicked in the tree
function doAction(doc, nodeId) {
if (inExplorer()) {
doActionFolderOpen(doc, nodeId);
} else {
doActionInsertSelected(doc, nodeId);
doActionFolderOpen(doc, nodeId);
}
}
function doActionFolderOpen(doc, nodeId) {
setCurrentFolder(nodeId);
nodeId = vr.actDirId;
var params = "";
if (includeFiles()) {
params += "&includefiles=true"
}
if (!isProjectAware()) {
params += "&projectaware=false"
}
if (tree.nodes[nodeId].childs != null) {
setNoChilds(nodeId);
}
var nodeName = "";
if (tree.nodes[nodeId].id == tree.root.id) {
nodeName = "/";
params += "&rootloaded=true";
} else {
nodeName = getNodeNameById(nodeId);
}
if (getTreeType() != null) {
params += "&type=" + getTreeType();
}
if (m_rootFolder != null) {
nodeName = m_rootFolder + nodeName.substring(1);
}
var target = "views/explorer/tree_files.jsp?resource=" + nodeName + params;
tree_files.location.href = vr.contextPath + vr.workplacePath + target;
if (inExplorer()) {
top.cancelNextOpen = false;
top.openFolder(nodeName);
}
}
function doActionInsertSelected(doc, nodeId) {
var filePrefix = "";
if (getSitePrefix() != null) {
filePrefix = getSitePrefix();
}
window.opener.setFormValue(filePrefix + getNodeNameById(nodeId));
}
// called if a new folder is loded from the explorer file list
function updateCurrentFolder(doc, folderName) {
if ((folderName != "/") && (folderName.charAt(folderName.length-1) == '/')) {
folderName = folderName.substring(0, folderName.length-1);
}
if (m_rootFolder != null) {
folderName = folderName.substring(m_rootFolder.length-1);
}
var nodeId = getNodeIdByName(folderName);
var nodeName = null;
var params = null;
if (nodeId != null) {
// node was already loaded, update it
if (vr.actDirId != nodeId) {
setCurrentFolder(nodeId);
params = "&rootloaded=true";
}
} else {
// node not loaded (or invalid), check last node that is loaded
vr.actDirId = null;
var lastKnown = folderName;
var known = false;
var lastKnownId = null;
while (!known && (lastKnown != null) && !("/" == lastKnown)) {
lastKnown = lastKnown.substring(0, lastKnown.lastIndexOf("/"));
if (lastKnown == "") {
lastKnown = "/";
}
lastKnownId = getNodeIdByName(lastKnown);
known = (lastKnownId != null);
}
nodeId = lastKnownId;
nodeName = folderName;
params = "&lastknown=" + lastKnown;
}
if (params != null) {
addNodeToLoad(nodeId, nodeName);
loadNodeList(doc, params);
}
}
function addNodeToLoad(nodeId, nodeName) {
if (nodeName == null) {
nodeName = getNodeNameById(nodeId);
} else if (nodeId == null) {
if ((nodeName != "/") && (nodeName.charAt(nodeName.length-1) == '/')) {
nodeName = nodeName.substring(0, nodeName.length-1);
}
nodeId = getNodeIdByName(nodeName);
}
if (nodeName.charAt(nodeName.length-1) != '/') {
nodeName += "/";
}
if (m_rootFolder != null) {
nodeName = m_rootFolder + nodeName.substring(1);
}
node = new nodeToLoad(nodeId, nodeName);
if (nodeListToLoad == null) {
nodeListToLoad = new Array();
}
nodeListToLoad[nodeListToLoad.length] = node;
}
function loadNodeList(doc, params) {
if (nodeListToLoad.length <= 0) {
return;
}
if (params == null) {
params = "";
}
if (includeFiles()) {
params += "&includefiles=true"
}
if (!isProjectAware()) {
params += "&projectaware=false"
}
if (getTreeType() != null) {
params += "&type=" + getTreeType();
}
var nodeNames = "";
for (i=0; i < nodeListToLoad.length; i++) {
node = nodeListToLoad[i];
if ((node.id != null) && (tree.nodes[node.id].childs != null)) {
setNoChilds(node.id);
}
nodeNames += node.name;
if (i < nodeListToLoad.length-1) {
nodeNames += "|";
}
}
nodeListToLoad = null;
var target = "views/explorer/tree_files.jsp?resource=" + nodeNames + params;
tree_files.location.href = vr.contextPath + vr.workplacePath + target;
}
// called if a +/- is clicked in the tree, or from updateCurrentFolder
function loadNode(doc, nodeId, nodeName, params) {
addNodeToLoad(nodeId, nodeName);
loadNodeList(doc, params);
}
// ensures that all folders up to the current folder are open
function setCurrentFolder(nodeId) {
node = tree.nodes[nodeId];
if ((node != null) && (! node.folder) && (node.parentId != null)) {
// if a file is selected set it's parent folder
node = tree.nodes[node.parentId];
}
if (node != null) {
vr.actDirId = node.id;
while ((node != null) && (node.id != tree.root.id)) {
node.open = true;
node = tree.nodes[node.parentId];
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -