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.DatabaseTableView = function(database, tableName)
     27 {
     28     WebInspector.View.call(this);
     29 
     30     this.database = database;
     31     this.tableName = tableName;
     32 
     33     this.element.addStyleClass("storage-view");
     34     this.element.addStyleClass("table");
     35 
     36     this.refreshButton = new WebInspector.StatusBarButton(WebInspector.UIString("Refresh"), "refresh-storage-status-bar-item");
     37     this.refreshButton.addEventListener("click", this._refreshButtonClicked.bind(this), false);
     38 }
     39 
     40 WebInspector.DatabaseTableView.prototype = {
     41     show: function(parentElement)
     42     {
     43         WebInspector.View.prototype.show.call(this, parentElement);
     44         this.update();
     45     },
     46 
     47     get statusBarItems()
     48     {
     49         return [this.refreshButton.element];
     50     },
     51 
     52     update: function()
     53     {
     54         this.database.executeSql("SELECT * FROM " + this.tableName, this._queryFinished.bind(this), this._queryError.bind(this));
     55     },
     56 
     57     _queryFinished: function(columnNames, values)
     58     {
     59         this.element.removeChildren();
     60 
     61         var dataGrid = WebInspector.panels.resources.dataGridForResult(columnNames, values);
     62         if (!dataGrid) {
     63             var emptyMsgElement = document.createElement("div");
     64             emptyMsgElement.className = "storage-empty-view";
     65             emptyMsgElement.textContent = WebInspector.UIString("The %s\ntable is empty.", this.tableName);
     66             this.element.appendChild(emptyMsgElement);
     67             return;
     68         }
     69 
     70         this.element.appendChild(dataGrid.element);
     71         dataGrid.autoSizeColumns(5);
     72     },
     73 
     74     _queryError: function(error)
     75     {
     76         this.element.removeChildren();
     77 
     78         var errorMsgElement = document.createElement("div");
     79         errorMsgElement.className = "storage-table-error";
     80         errorMsgElement.textContent = WebInspector.UIString("An error occurred trying to\nread the %s table.", this.tableName);
     81         this.element.appendChild(errorMsgElement);
     82     },
     83 
     84     _refreshButtonClicked: function(event)
     85     {
     86         this.update();
     87     }
     88 }
     89 
     90 WebInspector.DatabaseTableView.prototype.__proto__ = WebInspector.View.prototype;
     91