Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<PUBLIC:HTC URN="shellctls">
//------------------------------------------------------------------------ // Public methods //------------------------------------------------------------------------
//------------------------------------------------------------------------ // Events //------------------------------------------------------------------------
//------------------------------------------------------------------------ // Attach to element events //------------------------------------------------------------------------
<ATTACH event="oncontentready" handler=_OnContentReady />
//------------------------------------------------------------------------ // The code... //------------------------------------------------------------------------
<SCRIPT language="javascript">
var _bLoading = true; // true if the behavior is still loading
var _idFor = null;
var _szText = null; var _ichAccel = 0; var _chAccel;
var c_szAccelStyle = "style = 'text-decoration:underline; accelerator:true'";
// This code is run when the behavior is instantiated... element.attachEvent("onerror", _OnError);
_GetPropertyDefaults();
// ********************************************************************** // PROPERTY GET/SET FUNCTIONS // **********************************************************************
// Property: forElem = idElem // // Sets the 'for' attribute of the inserted LABEL element // function get_forCtl() { return _idFor; } function put_forCtl(id) { if (_bLoading) return;
_idFor = id; }
// ********************************************************************** // EVENT HANDLERS // **********************************************************************
/*------------------------------------------------------------------------- Purpose: When the behavior is completely loaded, set the loading flag to false. To improve load time, we don't want the put methods on the properties to be called. We also need to keep events from getting fired while the behavior is loading. */ function _OnContentReady() { _bLoading = false; _ScanForAccelerator(); _CreateHTML(); }
// ********************************************************************** // HELPER FUNCTIONS // **********************************************************************
/*------------------------------------------------------------------------- Purpose: Called when the behavior is instantiated. Sets up the internal property values. */ function _GetPropertyDefaults() { if (element.forElem) _idFor = element.forElem; }
/*------------------------------------------------------------------------- Purpose: Walk thru the element's innertext and find which letter is tagged as the accelerator (as indicated by '&' -- Win32 style). */ function _ScanForAccelerator() { // Pick off first '&' var sz = element.innerText; _ichAccel = sz.indexOf('&'); _szText = sz.substring(0, _ichAccel);
if (_ichAccel < sz.length - 1) _szText = _szText + sz.substring(_ichAccel+1, sz.length);
if (0 <= _ichAccel) _chAccel = sz.charAt(_ichAccel+1); }
/*------------------------------------------------------------------------- Purpose: Adds the HTML code to the main document to display the accelerator.
Given this innertext: "Cl&ose", this behavior inserts text like the following:
<LABEL id=idxxxx for=idyyyyy accesskey="o"> Cl<SPAN class=Accelerator>o</SPAN>se </LABEL>
*/ function _CreateHTML() { // Construct the html
element.innerHTML = '<LABEL id=idLblAccel_' + uniqueID + ' for=' + _idFor + ' accesskey="' + _chAccel + '">' + _szText.substring(0, _ichAccel) + '<SPAN ' + c_szAccelStyle + '>' + _szText.substring(_ichAccel, _ichAccel+1) + '</SPAN>' + _szText.substring(_ichAccel+1, _szText.length) + '</LABEL>'; }
/*------------------------------------------------------------------------- Purpose: Handle the onerror event */ function _OnError(szMsg, szUrl, iLine) { // Prevent scripting errors from displaying ugly messages alert("An unexpected error occurred.\n\n" + szMsg + "\n" + szUrl + "\nLine: " + iLine); return true; // Suppress IE error messaging }
</SCRIPT>
//------------------------------------------------------------------------ // Properties //------------------------------------------------------------------------
<PROPERTY name="forElem" get=get_forCtl put=put_forCtl />
</PUBLIC:HTC>
|