📄 deeptree.htc
字号:
<public:component>
<public:attach event="oncontentready" onevent="Init()" />
<public:attach event="onclick" onevent="Click()" />
<public:attach event="onmousedown" onevent="MouseDown()" />
<public:attach event="onmouseover" onevent="MouseOver()" />
<public:attach event="onmouseout" onevent="MouseOut()" />
<public:attach event="onmouseup" onevent="MouseUp()" />
<public:attach event="onselectstart" onevent="SelectStart()" />
<public:method name="movenext" />
<public:method name="moveprevious" />
<public:method name="Sync" />
<script language="JScript">
var objLI_Current = null;
var strRootPath = "";
var oConfig = null;
var strXSLSrc = "/library/shared/deeptree/xsl/deeptree.xsl";
objXSLDoc = new ActiveXObject("Microsoft.XMLDOM");
objXSLDoc.async = false;
objXSLDoc.load( strXSLSrc );
if (objXSLDoc.xml == "")
{
var objXslXMLHttp = new ActiveXObject("MSXML2.XMLHTTP");
objXslXMLHttp.open( "GET", strXSLSrc, false );
objXslXMLHttp.send();
objXSLDoc.loadXML( objXslXMLHttp.responseXml.xml );
}
var m_iMaxCalls = 1024;
var m_aoCalls = new Array();
var m_iLastCall = 0;
var m_iMasterIdx = null;
var m_bSyncFailed = false;
var m_sTempNodeStart = "<div class='clsItem' type='leaf'><span class='clsSpace' type='img'><span class='clsLeaf'>.</span></span><span class='clsLabel' type='label'><span class='clsUnavailable'>";
var m_sTempNodeEnd = "</span></span></div>";
var m_sUnavailableText = "Unavailable";
var m_sLoadingText = "Loading...";
//-----------------------------------------------
// GetXML(strXMLSrc, strXSLsrc)
//-----------------------------------------------
function GetXML( strXMLSrc , oEl , oElClass , oSync )
{
var aryXMLNodes;
var i = 0;
var strRetVal = "";
var iCall = fnAllocCall();
var objXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
objXMLDoc.async = true;
m_aoCalls[iCall] = new CallObject( objXMLDoc , oEl , oElClass , oSync , strXMLSrc);
objXMLDoc.onreadystatechange = Function( "fnLoadComplete( " + iCall + " );" );
objXMLDoc.load( strXMLSrc );
return iCall;
}
//-------------------------------------------------------------------------------------------------
// EVENT HANDLERS
//-------------------------------------------------------------------------------------------------
//-----------------------------------------------
// Init()
//-----------------------------------------------
function Init()
{
var strHTML;
var objLI;
// Set up global tree accessors.
// TODO:: check that these have not been overridden by
// another consuming application.
// TODO:: encapsulate global accessors in other functionality
// as well (dtbar,searchtab,contentbar should set themselves,
// rather than doing it here)
window.top.deeptree = element;
window.top.dtbar = top.frames.fraLeftFrame.frames.fraDTBar;
window.top.contentbar = top.frames.fraRightFrame.frames.fraContentBar;
window.top.content = top.frames.fraRightFrame.frames.fraContent;
window.top.searchtab = top.frames.fraLeftFrame.frames.fraSearchTab;
window.top.leftframe = top.frames.fraLeftFrame;
window.top.rightframe = top.frames.fraRightFrame;
window.top.mainframeset = top.document.all.fstMain;
oConfig = new Config
element.type = "container";
m_iMasterIdx = GetXML( oConfig.sTopXmlSrc , element , "deeptree" );
window.document.body.attachEvent("onkeydown",KeyDown);
}
//-----------------------------------------------
// Click()
//-----------------------------------------------
function Click()
{
var objUnknown;
var objLI;
objUnknown = window.event.srcElement;
window.event.cancelBubble = true;
window.event.returnValue = false;
window.document.body.focus();
if( objUnknown.tagName.toUpperCase() == "A" )
{
objLI = objUnknown.parentElement.parentElement;
SelectNode(objLI, false, false);
ToggleNode(objLI);
}
else if( null != objUnknown.parentElement && objUnknown.parentElement.type == "img" )
{
objLI = objUnknown.parentElement.parentElement;
if ( objLI.type == "leaf" )
{
SelectNode( objLI, false, false );
}
else
{
ToggleNode(objLI);
}
}
else if( objUnknown.type == "img" )
{
objLI = objUnknown.parentElement;
if ( objLI.type == "leaf" )
{
SelectNode( objLI, false, false );
}
else
{
ToggleNode(objLI);
}
}
else if( objUnknown.type == "label" )
{
objLI = objUnknown.parentElement;
SelectNode(objLI, false, false );
ToggleNode(objLI);
}
else
{
SelectNode(objLI_Current, true, false);
}
return false;
}
//-----------------------------------------------
// KeyDown()
//-----------------------------------------------
function KeyDown()
{
var blnRetVal = false
var objLI;
if (window.event.ctrlKey == false && window.event.altKey == false)
{
window.event.cancelBubble = true;
window.event.returnValue = false;
switch (window.event.keyCode)
{
case 9 : // tab key
if (window.event.shiftKey == true)
{
MovePrevious();
}
else
{
MoveNext();
}
break;
case 13 : // enter key
objLI = window.event.srcElement.parentElement;
LoadNodeContent(objLI);
break;
case 37 : // left key
MoveLeft()
break;
case 38 : // up key
MoveUp()
break;
case 39 : // right key
MoveRight()
break;
case 40 : // down key
MoveDown()
break;
case 188 : // "<" key
MovePrevious();
break;
case 190 : // ">" key
MoveNext();
break;
default :
window.event.cancelBubble = false;
window.event.returnValue = true;
blnRetVal = true;
break;
}
}
else
{
window.event.cancelBubble = false;
window.event.returnValue = true;
blnRetVal = true;
}
return blnRetVal;
}
//-----------------------------------------------
// MouseDown()
//-----------------------------------------------
function MouseDown()
{
var objUnknown;
objUnknown = window.event.srcElement;
if (objUnknown.tagName.toUpperCase() == "A")
{
objUnknown = objUnknown.parentElement;
}
if (objUnknown.type == "label")
{
objUnknown.className = 'clsMouseDown';
}
return true;
}
//-----------------------------------------------
// MouseOut()
//-----------------------------------------------
function MouseOut()
{
var objUnknown;
var objLI;
var i = 0;
objUnknown = window.event.srcElement;
if (objUnknown.tagName.toUpperCase() == "A")
{
objUnknown = objUnknown.parentElement;
}
if (objUnknown.type == "label" )
{
objUnknown.className = objUnknown.classType;
}
return true;
}
//-----------------------------------------------
// MouseOver()
//-----------------------------------------------
function MouseOver()
{
var objUnknown;
var strStatus;
objUnknown = window.event.srcElement;
if (objUnknown.tagName.toUpperCase() == "A")
{
objUnknown = objUnknown.parentElement;
}
if (objUnknown.type == "label")
{
objUnknown.className = 'clsMouseOver';
}
return true;
}
//-----------------------------------------------
// MouseUp()
//-----------------------------------------------
function MouseUp()
{
var objUnknown;
var objLI;
var i = 0;
objUnknown = window.event.srcElement;
if (objUnknown.tagName.toUpperCase() == "A")
{
objUnknown = objUnknown.parentElement;
}
if (objUnknown.type == "label")
{
objUnknown.className = 'clsMouseOver';
}
return true;
}
//-----------------------------------------------
// SelectStart()
//-----------------------------------------------
function SelectStart()
{
window.event.cancelBubble = true;
window.event.returnValue = false;
return false;
}
//-------------------------------------------------------------------------------------------------
// PUBLIC METHODS
//-------------------------------------------------------------------------------------------------
//-----------------------------------------------
// MoveNext()
//-----------------------------------------------
function MoveNext()
{
var objLI_Temp;
var objLI_New;
if( null == objLI_Current ) objLI_Current = GetHtmlElement( element , "div" );
if( null == objLI_Current ) return;
if ( objLI_Current.state == "shown")
{
objLI_New = GetFirstChild(objLI_Current);
if (objLI_New != null)
{
SelectNode(objLI_New, false, true);
}
}
else
{
if (objLI_Current.type != "leaf" )
{
var bLoad = ExpandNode(objLI_Current);
if( bLoad )
{
objLI_Current.selectChild = true;
}
else
{
objLI_New = GetFirstChild(objLI_Current);
if (objLI_New != null)
{
SelectNode(objLI_New, false, true);
}
}
}
else
{
objLI_Temp = objLI_Current;
objLI_New = GetNextSibling(objLI_Temp);
while (objLI_New == null)
{
objLI_Temp = GetParent(objLI_Temp);
if (objLI_Temp == null)
{
objLI_New = objLI_Current;
}
else
{
objLI_New = GetNextSibling(objLI_Temp);
}
}
SelectNode(objLI_New, false, true);
}
}
}
//-----------------------------------------------
// MovePrevious()
//-----------------------------------------------
function MovePrevious()
{
if( null == objLI_Current ) return;
if( null == objLI_Current ) objLI_Current = GetHtmlElement( element , "div" );
var objLI_New;
objLI_New = GetPreviousSibling(objLI_Current);
if (objLI_New != null)
{
SelectNode(objLI_New, false, true);
}
else
{
objLI_New = GetParent(objLI_Current);
if (objLI_New != null)
{
SelectNode(objLI_New, false, true);
}
}
}
//-----------------------------------------------
// MoveLeft()
//-----------------------------------------------
function MoveLeft()
{
var objLI_New;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -