(function( $ ){ /** * OpenSeadragon ButtonGroup * * Manages events on groups of buttons. * * options {} * buttons - an array of buttons * **/ $.ButtonGroup = function( options ) { this.buttons = options.buttons; this.element = options.group || $.Utils.makeNeutralElement("span"); this.config = options.config; this.tracker = new $.MouseTracker( this.element, this.config.clickTimeThreshold, this.config.clickDistThreshold ); // copy the botton elements var buttons = this.buttons.concat([]), _this = this, i; this.element.style.display = "inline-block"; for ( i = 0; i < buttons.length; i++ ) { this.element.appendChild( buttons[ i ].get_element() ); } this.tracker.enter = options.enter || function() { var i; for ( i = 0; i < _this.buttons.length; i++) { _this.buttons[ i ].notifyGroupEnter(); } }; this.tracker.exit = options.exit || function() { var i, buttonDownElmt = arguments.length > 2 ? arguments[2] : null; if ( !buttonDownElmt ) { for ( i = 0; i < _this.buttons.length; i++ ) { _this.buttons[ i ].notifyGroupExit(); } } }; this.tracker.release = options.release || function() { var i, insideElmtRelease = arguments.length > 3 ? arguments[3] : null; if ( !insideElmtRelease ) { for ( i = 0; i < _this.buttons.length; i++ ) { _this.buttons[ i ].notifyGroupExit(); } } }; this.tracker.setTracking( true ); }; $.ButtonGroup.prototype = { emulateEnter: function() { this.tracker.enter(); }, emulateExit: function() { this.tracker.exit(); } }; }( OpenSeadragon ));