Home | History | Annotate | Download | only in front-end
      1 /*
      2  * Copyright (C) 2008 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. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 WebInspector.PanelEnablerView = function(identifier, headingText, disclaimerText, buttonTitle)
     27 {
     28     WebInspector.View.call(this);
     29 
     30     this.element.addStyleClass("panel-enabler-view");
     31     this.element.addStyleClass(identifier);
     32 
     33     this.contentElement = document.createElement("div");
     34     this.contentElement.className = "panel-enabler-view-content";
     35     this.element.appendChild(this.contentElement);
     36 
     37     this.imageElement = document.createElement("img");
     38     this.contentElement.appendChild(this.imageElement);
     39 
     40     this.choicesForm = document.createElement("form");
     41     this.contentElement.appendChild(this.choicesForm);
     42 
     43     this.headerElement = document.createElement("h1");
     44     this.headerElement.textContent = headingText;
     45     this.choicesForm.appendChild(this.headerElement);
     46 
     47     var self = this;
     48     function enableOption(text, checked) {
     49         var label = document.createElement("label");
     50         var option = document.createElement("input");
     51         option.type = "radio";
     52         option.name = "enable-option";
     53         if (checked)
     54             option.checked = true;
     55         label.appendChild(option);
     56         label.appendChild(document.createTextNode(text));
     57         self.choicesForm.appendChild(label);
     58         return option;
     59     };
     60 
     61     this.enabledForSession = enableOption(WebInspector.UIString("Only enable for this session"), true);
     62     this.enabledAlways = enableOption(WebInspector.UIString("Always enable"));
     63 
     64     this.disclaimerElement = document.createElement("div");
     65     this.disclaimerElement.className = "panel-enabler-disclaimer";
     66     this.disclaimerElement.textContent = disclaimerText;
     67     this.choicesForm.appendChild(this.disclaimerElement);
     68 
     69     this.enableButton = document.createElement("button");
     70     this.enableButton.setAttribute("type", "button");
     71     this.enableButton.textContent = buttonTitle;
     72     this.enableButton.addEventListener("click", this._enableButtonCicked.bind(this), false);
     73     this.choicesForm.appendChild(this.enableButton);
     74 }
     75 
     76 WebInspector.PanelEnablerView.prototype = {
     77     _enableButtonCicked: function()
     78     {
     79         this.dispatchEventToListeners("enable clicked");
     80     },
     81 
     82     show: function(parentElement)
     83     {
     84         WebInspector.View.prototype.show.call(this, parentElement);
     85 
     86         setTimeout(this.resize.bind(this), 0);
     87     },
     88 
     89     resize: function()
     90     {
     91         this.imageElement.removeStyleClass("hidden");
     92 
     93         if (this.element.offsetWidth < (this.choicesForm.offsetWidth + this.imageElement.offsetWidth))
     94             this.imageElement.addStyleClass("hidden");
     95     },
     96 
     97     get alwaysEnabled() {
     98         return this.enabledAlways.checked;
     99     }
    100 }
    101 
    102 WebInspector.PanelEnablerView.prototype.__proto__ = WebInspector.View.prototype;
    103