2 * Copyright (C) 2010 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
14 * * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 * @extends {WebInspector.DialogDelegate}
34 * @param {!WebInspector.SourceFrame} sourceFrame
36 WebInspector
.GoToLineDialog = function(sourceFrame
)
38 WebInspector
.DialogDelegate
.call(this);
39 this.element
.classList
.add("go-to-line-dialog");
40 this.element
.createChild("label").textContent
= WebInspector
.UIString("Go to line: ");
42 this._input
= this.element
.createChild("input");
43 this._input
.setAttribute("type", "text");
44 this._input
.setAttribute("size", 6);
46 this._goButton
= this.element
.createChild("button");
47 this._goButton
.textContent
= WebInspector
.UIString("Go");
48 this._goButton
.addEventListener("click", this._onGoClick
.bind(this), false);
50 this._sourceFrame
= sourceFrame
;
54 * @param {!WebInspector.Panel} panel
55 * @param {function():?WebInspector.SourceFrame} sourceFrameGetter
57 WebInspector
.GoToLineDialog
.install = function(panel
, sourceFrameGetter
)
59 var goToLineShortcut
= WebInspector
.GoToLineDialog
.createShortcut();
60 panel
.registerShortcuts([goToLineShortcut
], WebInspector
.GoToLineDialog
._show
.bind(null, sourceFrameGetter
));
64 * @param {function():?WebInspector.SourceFrame} sourceFrameGetter
65 * @param {!Event=} event
68 WebInspector
.GoToLineDialog
._show = function(sourceFrameGetter
, event
)
70 var sourceFrame
= sourceFrameGetter();
73 WebInspector
.Dialog
.show(sourceFrame
.element
, new WebInspector
.GoToLineDialog(sourceFrame
));
78 * @return {!WebInspector.KeyboardShortcut.Descriptor}
80 WebInspector
.GoToLineDialog
.createShortcut = function()
82 return WebInspector
.KeyboardShortcut
.makeDescriptor("g", WebInspector
.KeyboardShortcut
.Modifiers
.Ctrl
);
85 WebInspector
.GoToLineDialog
.prototype = {
88 WebInspector
.setCurrentFocusElement(this._input
);
92 _onGoClick: function()
94 this._applyLineNumber();
95 WebInspector
.Dialog
.hide();
98 _applyLineNumber: function()
100 var value
= this._input
.value
;
101 var lineNumber
= parseInt(value
, 10) - 1;
102 if (!isNaN(lineNumber
) && lineNumber
>= 0)
103 this._sourceFrame
.revealPosition(lineNumber
, 0, true);
108 this._applyLineNumber();
111 __proto__
: WebInspector
.DialogDelegate
.prototype