// Double-Click Hack for List-based components
// Nov. 15, 2004 - Darron Schall
// create quick reference to ScrollSelectList's prototype
var sslp = _global.mx.controls.listclasses.ScrollSelectList.prototype;
// only run this code once.., make sure that $oldOnRowPress
is not
// defined to avoid inifinite recursion when onRowPress is called
if (!sslp.$oldOnRowPress) {
sslp.DOUBLE_CLICK_INTERVAL = 300;
// in milliseconds, how close two clicks must
// be received to register as a double click
// save a reference to the onRowPress function since we need to overwrite it
to add
// functionality, and we don't want to lose the original.
sslp.$oldOnRowPress = sslp.onRowPress;
// add doubleClick event to the ScrollSelectList class
sslp.onRowPress = function(rowIndex) {
// if the user pressed the samw row within the time
limit, fire off
if (getTimer()-this.lastPressedTime<this.DOUBLE_CLICK_INTERVAL &&
this.lastPressedRow == rowIndex) {
this.dispatchEvent({target:this, type:"doubleClick", row:rowIndex});
} else {
// not a double click - record their click time and
the row selected to prepare
// for double click
// only allow double clicks under the proper conditions
if (this.enabled && this.selectable) {
this.lastPressedTime = getTimer();
this.lastPressedRow = rowIndex;
} else {
// not really necessary, but just in case.. make sure
// doubleClick doesn't accidentally fire
this.lastPressedTime = 0;
this.lastPressedRow = -1;
}
// invoke the old method that we just overwrote -
using apply to get the scope correct
this.$oldOnRowPress.apply(this, [rowIndex]);
}
};
}
delete sslp; |