diff options
Diffstat (limited to 'WebCore/inspector/front-end/DatabaseQueryView.js')
| -rw-r--r-- | WebCore/inspector/front-end/DatabaseQueryView.js | 199 | 
1 files changed, 0 insertions, 199 deletions
| diff --git a/WebCore/inspector/front-end/DatabaseQueryView.js b/WebCore/inspector/front-end/DatabaseQueryView.js deleted file mode 100644 index 6a91625..0000000 --- a/WebCore/inspector/front-end/DatabaseQueryView.js +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (C) 2008 Apple Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - *    notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - *    notice, this list of conditions and the following disclaimer in the - *    documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -WebInspector.DatabaseQueryView = function(database) -{ -    WebInspector.View.call(this); - -    this.database = database; - -    this.element.addStyleClass("database-view"); -    this.element.addStyleClass("query"); -    this.element.tabIndex = 0; - -    this.element.addEventListener("selectstart", this._selectStart.bind(this), false); - -    this.promptElement = document.createElement("div"); -    this.promptElement.className = "database-query-prompt"; -    this.promptElement.appendChild(document.createElement("br")); -    this.promptElement.handleKeyEvent = this._promptKeyDown.bind(this); -    this.element.appendChild(this.promptElement); - -    this.prompt = new WebInspector.TextPrompt(this.promptElement, this.completions.bind(this), " "); -} - -WebInspector.DatabaseQueryView.prototype = { -    show: function(parentElement) -    { -        WebInspector.View.prototype.show.call(this, parentElement); - -        function moveBackIfOutside() -        { -            if (!this.prompt.isCaretInsidePrompt() && window.getSelection().isCollapsed) -                this.prompt.moveCaretToEndOfPrompt(); -        } - -        setTimeout(moveBackIfOutside.bind(this), 0); -    }, - -    completions: function(wordRange, bestMatchOnly) -    { -        var prefix = wordRange.toString().toLowerCase(); -        if (!prefix.length) -            return; - -        var results = []; - -        function accumulateMatches(textArray) -        { -            if (bestMatchOnly && results.length) -                return; -            for (var i = 0; i < textArray.length; ++i) { -                var text = textArray[i].toLowerCase(); -                if (text.length < prefix.length) -                    continue; -                if (text.indexOf(prefix) !== 0) -                    continue; -                results.push(textArray[i]); -                if (bestMatchOnly) -                    return; -            } -        } - -        accumulateMatches(this.database.tableNames.map(function(name) { return name + " " })); -        accumulateMatches(["SELECT ", "FROM ", "WHERE ", "LIMIT ", "DELETE FROM ", "CREATE ", "DROP ", "TABLE ", "INDEX ", "UPDATE ", "INSERT INTO ", "VALUES ("]); - -        return results; -    }, - -    _promptKeyDown: function(event) -    { -        switch (event.keyIdentifier) { -            case "Enter": -                this._enterKeyPressed(event); -                return; -        } - -        this.prompt.handleKeyEvent(event); -    }, - -    _selectStart: function(event) -    { -        if (this._selectionTimeout) -            clearTimeout(this._selectionTimeout); - -        this.prompt.clearAutoComplete(); - -        function moveBackIfOutside() -        { -            delete this._selectionTimeout; -            if (!this.prompt.isCaretInsidePrompt() && window.getSelection().isCollapsed) -                this.prompt.moveCaretToEndOfPrompt(); -            this.prompt.autoCompleteSoon(); -        } - -        this._selectionTimeout = setTimeout(moveBackIfOutside.bind(this), 100); -    }, - -    _enterKeyPressed: function(event) -    { -        event.preventDefault(); -        event.stopPropagation(); - -        this.prompt.clearAutoComplete(true); - -        var query = this.prompt.text; -        if (!query.length) -            return; - -        this.prompt.history.push(query); -        this.prompt.historyOffset = 0; -        this.prompt.text = ""; - -        function queryTransaction(tx) -        { -            tx.executeSql(query, null, InspectorController.wrapCallback(this._queryFinished.bind(this, query)), InspectorController.wrapCallback(this._executeSqlError.bind(this, query))); -        } - -        this.database.database.transaction(InspectorController.wrapCallback(queryTransaction.bind(this)), InspectorController.wrapCallback(this._queryError.bind(this, query))); -    }, - -    _queryFinished: function(query, tx, result) -    { -        var dataGrid = WebInspector.panels.databases.dataGridForResult(result); -        dataGrid.element.addStyleClass("inline"); -        this._appendQueryResult(query, dataGrid.element); - -        if (query.match(/^create /i) || query.match(/^drop table /i)) -            WebInspector.panels.databases.updateDatabaseTables(this.database); -    }, - -    _queryError: function(query, error) -    { -        if (error.code == 1) -            var message = error.message; -        else if (error.code == 2) -            var message = WebInspector.UIString("Database no longer has expected version."); -        else -            var message = WebInspector.UIString("An unexpected error %s occured.", error.code); - -        this._appendQueryResult(query, message, "error"); -    }, - -    _executeSqlError: function(query, tx, error) -    { -        this._queryError(query, error); -    }, - -    _appendQueryResult: function(query, result, resultClassName) -    { -        var element = document.createElement("div"); -        element.className = "database-user-query"; - -        var commandTextElement = document.createElement("span"); -        commandTextElement.className = "database-query-text"; -        commandTextElement.textContent = query; -        element.appendChild(commandTextElement); - -        var resultElement = document.createElement("div"); -        resultElement.className = "database-query-result"; - -        if (resultClassName) -            resultElement.addStyleClass(resultClassName); - -        if (typeof result === "string" || result instanceof String) -            resultElement.textContent = result; -        else if (result && result.nodeName) -            resultElement.appendChild(result); - -        if (resultElement.childNodes.length) -            element.appendChild(resultElement); - -        this.element.insertBefore(element, this.promptElement); -        this.promptElement.scrollIntoView(false); -    } -} - -WebInspector.DatabaseQueryView.prototype.__proto__ = WebInspector.View.prototype; | 
