1/* 2 * Copyright (C) 2013 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26WebInspector.ToggleButtonNavigationItem = function(identifier, defaultToolTip, alternateToolTip, defaultImage, alternateImage, imageWidth, imageHeight, suppressEmboss) { 27 WebInspector.ButtonNavigationItem.call(this, identifier, defaultToolTip, defaultImage, imageWidth, imageHeight, suppressEmboss); 28 29 this._toggled = false; 30 this._defaultImage = defaultImage; 31 this._alternateImage = alternateImage; 32 this._defaultToolTip = defaultToolTip; 33 this._alternateToolTip = alternateToolTip || defaultToolTip; 34}; 35 36WebInspector.ToggleButtonNavigationItem.StyleClassName = "toggle"; 37 38WebInspector.ToggleButtonNavigationItem.prototype = { 39 constructor: WebInspector.ToggleButtonNavigationItem, 40 41 // Public 42 43 get defaultToolTip() 44 { 45 return this._defaultToolTip; 46 }, 47 48 get alternateToolTip() 49 { 50 return this._alternateToolTip; 51 }, 52 53 set alternateToolTip(toolTip) 54 { 55 this._alternateToolTip = toolTip; 56 57 if (this._toggled) 58 this.toolTip = this._alternateToolTip; 59 }, 60 61 get defaultImage() 62 { 63 return this._defaultImage; 64 }, 65 66 get alternateImage() 67 { 68 return this._alternateImage; 69 }, 70 71 set alternateImage(image) 72 { 73 this._alternateImage = image; 74 75 if (this._toggled) 76 this.image = this._alternateImage; 77 }, 78 79 get toggled() 80 { 81 return this._toggled; 82 }, 83 84 set toggled(flag) 85 { 86 flag = flag || false; 87 88 if (this._toggled === flag) 89 return; 90 91 this._toggled = flag; 92 93 if (this._toggled) { 94 this.toolTip = this._alternateToolTip; 95 this.image = this._alternateImage; 96 } else { 97 this.toolTip = this._defaultToolTip; 98 this.image = this._defaultImage; 99 } 100 }, 101 102 // Private 103 104 _additionalClassNames: [WebInspector.ToggleButtonNavigationItem.StyleClassName, WebInspector.ButtonNavigationItem.StyleClassName], 105 106 // The image isn't cacheable because it dynamically changes and the same canvas identifier is reused. 107 // FIXME: We could try overriding _canvasIdentifier() to return different identifiers. If we did that 108 // we would also need to override generateStyleText() to use the different identifiers. 109 _imageCacheable: false 110}; 111 112WebInspector.ToggleButtonNavigationItem.prototype.__proto__ = WebInspector.ButtonNavigationItem.prototype; 113