| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 * @extends {WebInspector.StatusBarItem} | 234 * @extends {WebInspector.StatusBarItem} |
| 235 * @param {string} title | 235 * @param {string} title |
| 236 * @param {string} className | 236 * @param {string} className |
| 237 * @param {number=} states | 237 * @param {number=} states |
| 238 */ | 238 */ |
| 239 WebInspector.StatusBarButton = function(title, className, states) | 239 WebInspector.StatusBarButton = function(title, className, states) |
| 240 { | 240 { |
| 241 WebInspector.StatusBarItem.call(this, "button"); | 241 WebInspector.StatusBarItem.call(this, "button"); |
| 242 this.element.className = className + " status-bar-item"; | 242 this.element.className = className + " status-bar-item"; |
| 243 this.element.addEventListener("click", this._clicked.bind(this), false); | 243 this.element.addEventListener("click", this._clicked.bind(this), false); |
| 244 this._longClickController = new WebInspector.LongClickController(this.elemen
t); |
| 245 this._longClickController.addEventListener(WebInspector.LongClickController.
Events.LongClick, this._onLongClick.bind(this)); |
| 246 this._longClickController.addEventListener(WebInspector.LongClickController.
Events.LongPress, this._onLongPress.bind(this)); |
| 244 | 247 |
| 245 this.glyph = this.element.createChild("div", "glyph"); | 248 this.glyph = this.element.createChild("div", "glyph"); |
| 246 this.glyphShadow = this.element.createChild("div", "glyph shadow"); | 249 this.glyphShadow = this.element.createChild("div", "glyph shadow"); |
| 247 | 250 |
| 248 this.states = states; | 251 this.states = states; |
| 249 if (!states) | 252 if (!states) |
| 250 this.states = 2; | 253 this.states = 2; |
| 251 | 254 |
| 252 if (states == 2) | 255 if (states == 2) |
| 253 this._state = false; | 256 this._state = false; |
| 254 else | 257 else |
| 255 this._state = 0; | 258 this._state = 0; |
| 256 | 259 |
| 257 this.title = title; | 260 this.title = title; |
| 258 this.className = className; | 261 this.className = className; |
| 259 } | 262 } |
| 260 | 263 |
| 261 WebInspector.StatusBarButton.prototype = { | 264 WebInspector.StatusBarButton.prototype = { |
| 265 /** |
| 266 * @param {!WebInspector.Event} event |
| 267 */ |
| 268 _onLongClick: function(event) |
| 269 { |
| 270 this.dispatchEventToListeners("longClickDown"); |
| 271 }, |
| 272 |
| 273 /** |
| 274 * @param {!WebInspector.Event} event |
| 275 */ |
| 276 _onLongPress: function(event) |
| 277 { |
| 278 this.dispatchEventToListeners("longPressDown"); |
| 279 }, |
| 280 |
| 262 _clicked: function() | 281 _clicked: function() |
| 263 { | 282 { |
| 264 this.dispatchEventToListeners("click"); | 283 this.dispatchEventToListeners("click"); |
| 265 if (this._longClickInterval) { | 284 this._longClickController.reset(); |
| 266 clearInterval(this._longClickInterval); | |
| 267 delete this._longClickInterval; | |
| 268 } | |
| 269 }, | 285 }, |
| 270 | 286 |
| 271 /** | 287 /** |
| 272 * @override | 288 * @override |
| 273 */ | 289 */ |
| 274 applyEnabledState: function() | 290 applyEnabledState: function() |
| 275 { | 291 { |
| 276 this.element.disabled = !this._enabled; | 292 this.element.disabled = !this._enabled; |
| 277 if (this._longClickInterval) { | 293 this._longClickController.reset(); |
| 278 clearInterval(this._longClickInterval); | |
| 279 delete this._longClickInterval; | |
| 280 } | |
| 281 }, | 294 }, |
| 282 | 295 |
| 283 /** | 296 /** |
| 284 * @return {boolean} | 297 * @return {boolean} |
| 285 */ | 298 */ |
| 286 enabled: function() | 299 enabled: function() |
| 287 { | 300 { |
| 288 return this._enabled; | 301 return this._enabled; |
| 289 }, | 302 }, |
| 290 | 303 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 | 343 |
| 331 set toggled(x) | 344 set toggled(x) |
| 332 { | 345 { |
| 333 if (this.states !== 2) | 346 if (this.states !== 2) |
| 334 throw("Only used toggled when there are 2 states, otherwise, use sta
te"); | 347 throw("Only used toggled when there are 2 states, otherwise, use sta
te"); |
| 335 this.state = x; | 348 this.state = x; |
| 336 }, | 349 }, |
| 337 | 350 |
| 338 makeLongClickEnabled: function() | 351 makeLongClickEnabled: function() |
| 339 { | 352 { |
| 340 var boundMouseDown = mouseDown.bind(this); | 353 this._longClickController.enable(); |
| 341 var boundMouseUp = mouseUp.bind(this); | |
| 342 | |
| 343 this.element.addEventListener("mousedown", boundMouseDown, false); | |
| 344 this.element.addEventListener("mouseout", boundMouseUp, false); | |
| 345 this.element.addEventListener("mouseup", boundMouseUp, false); | |
| 346 | |
| 347 var longClicks = 0; | |
| 348 | |
| 349 this._longClickData = { mouseUp: boundMouseUp, mouseDown: boundMouseDown
}; | |
| 350 | |
| 351 /** | |
| 352 * @param {!Event} e | |
| 353 * @this {WebInspector.StatusBarButton} | |
| 354 */ | |
| 355 function mouseDown(e) | |
| 356 { | |
| 357 if (e.which !== 1) | |
| 358 return; | |
| 359 longClicks = 0; | |
| 360 this._longClickInterval = setInterval(longClicked.bind(this), 200); | |
| 361 } | |
| 362 | |
| 363 /** | |
| 364 * @param {!Event} e | |
| 365 * @this {WebInspector.StatusBarButton} | |
| 366 */ | |
| 367 function mouseUp(e) | |
| 368 { | |
| 369 if (e.which !== 1) | |
| 370 return; | |
| 371 if (this._longClickInterval) { | |
| 372 clearInterval(this._longClickInterval); | |
| 373 delete this._longClickInterval; | |
| 374 } | |
| 375 } | |
| 376 | |
| 377 /** | |
| 378 * @this {WebInspector.StatusBarButton} | |
| 379 */ | |
| 380 function longClicked() | |
| 381 { | |
| 382 ++longClicks; | |
| 383 this.dispatchEventToListeners(longClicks === 1 ? "longClickDown" : "
longClickPress"); | |
| 384 } | |
| 385 }, | 354 }, |
| 386 | 355 |
| 387 unmakeLongClickEnabled: function() | 356 unmakeLongClickEnabled: function() |
| 388 { | 357 { |
| 389 if (!this._longClickData) | 358 this._longClickController.disable(); |
| 390 return; | |
| 391 this.element.removeEventListener("mousedown", this._longClickData.mouseD
own, false); | |
| 392 this.element.removeEventListener("mouseout", this._longClickData.mouseUp
, false); | |
| 393 this.element.removeEventListener("mouseup", this._longClickData.mouseUp,
false); | |
| 394 delete this._longClickData; | |
| 395 }, | 359 }, |
| 396 | 360 |
| 397 /** | 361 /** |
| 398 * @param {?function():!Array.<!WebInspector.StatusBarButton>} buttonsProvid
er | 362 * @param {?function():!Array.<!WebInspector.StatusBarButton>} buttonsProvid
er |
| 399 */ | 363 */ |
| 400 setLongClickOptionsEnabled: function(buttonsProvider) | 364 setLongClickOptionsEnabled: function(buttonsProvider) |
| 401 { | 365 { |
| 402 if (buttonsProvider) { | 366 if (buttonsProvider) { |
| 403 if (!this._longClickOptionsData) { | 367 if (!this._longClickOptionsData) { |
| 404 this.makeLongClickEnabled(); | 368 this.makeLongClickEnabled(); |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 var options = []; | 711 var options = []; |
| 748 for (var index = 0; index < this._states.length; index++) { | 712 for (var index = 0; index < this._states.length; index++) { |
| 749 if (this._states[index] !== this.state && this._states[index] !== th
is._currentState) | 713 if (this._states[index] !== this.state && this._states[index] !== th
is._currentState) |
| 750 options.push(this._buttons[index]); | 714 options.push(this._buttons[index]); |
| 751 } | 715 } |
| 752 return options; | 716 return options; |
| 753 }, | 717 }, |
| 754 | 718 |
| 755 __proto__: WebInspector.StatusBarButton.prototype | 719 __proto__: WebInspector.StatusBarButton.prototype |
| 756 } | 720 } |
| OLD | NEW |