1 <html><head><title>Roo/Editor.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
4 * Copyright(c) 2006-2007, Ext JS, LLC.
6 * Originally Released Under LGPL - original licence link has changed is not relivant.
9 * <script type="text/javascript">
14 * @extends Roo.Component
15 * A base editor field that handles displaying/hiding on demand and has some built-in sizing and event handling logic.
18 * @param {Roo.form.Field} field The Field object (or descendant)
19 * @param {Object} config The config object
21 </span><span class="jsdoc-var">Roo.Editor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">field</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
22 </span><span class="jsdoc-var">Roo.Editor.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
23 </span><span class="jsdoc-var">this.field </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">field</span><span class="jsdoc-syntax">;
24 </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
25 </span><span class="jsdoc-comment">/**
26 * @event beforestartedit
27 * Fires when editing is initiated, but before the value changes. Editing can be canceled by returning
28 * false from the handler of this event.
29 * @param {Editor} this
30 * @param {Roo.Element} boundEl The underlying element bound to this editor
31 * @param {Mixed} value The field value being set
33 </span><span class="jsdoc-string">"beforestartedit" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
34 </span><span class="jsdoc-comment">/**
36 * Fires when this editor is displayed
37 * @param {Roo.Element} boundEl The underlying element bound to this editor
38 * @param {Mixed} value The starting field value
40 </span><span class="jsdoc-string">"startedit" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
41 </span><span class="jsdoc-comment">/**
42 * @event beforecomplete
43 * Fires after a change has been made to the field, but before the change is reflected in the underlying
44 * field. Saving the change to the field can be canceled by returning false from the handler of this event.
45 * Note that if the value has not changed and ignoreNoChange = true, the editing will still end but this
46 * event will not fire since no edit actually occurred.
47 * @param {Editor} this
48 * @param {Mixed} value The current field value
49 * @param {Mixed} startValue The original field value
51 </span><span class="jsdoc-string">"beforecomplete" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
52 </span><span class="jsdoc-comment">/**
54 * Fires after editing is complete and any changed value has been written to the underlying field.
55 * @param {Editor} this
56 * @param {Mixed} value The current field value
57 * @param {Mixed} startValue The original field value
59 </span><span class="jsdoc-string">"complete" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
60 </span><span class="jsdoc-comment">/**
62 * Fires when any key related to navigation (arrows, tab, enter, esc, etc.) is pressed. You can check
63 * {@link Roo.EventObject#getKey} to determine which key was pressed.
64 * @param {Roo.form.Field} this
65 * @param {Roo.EventObject} e The event object
67 </span><span class="jsdoc-string">"specialkey" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
68 </span><span class="jsdoc-syntax">});
71 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.Editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.Component</span><span class="jsdoc-syntax">, {
72 </span><span class="jsdoc-comment">/**
73 * @cfg {Boolean/String} autosize
74 * True for the editor to automatically adopt the size of the underlying field, "width" to adopt the width only,
75 * or "height" to adopt the height only (defaults to false)
78 * @cfg {Boolean} revertInvalid
79 * True to automatically revert the field value and cancel the edit when the user completes an edit and the field
80 * validation fails (defaults to true)
83 * @cfg {Boolean} ignoreNoChange
84 * True to skip the the edit completion process (no save, no events fired) if the user completes an edit and
85 * the value has not changed (defaults to false). Applies only to string values - edits for other data types
86 * will never be ignored.
89 * @cfg {Boolean} hideEl
90 * False to keep the bound element visible while the editor is displayed (defaults to true)
94 * The data value of the underlying field (defaults to "")
96 </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">""</span><span class="jsdoc-syntax">,
97 </span><span class="jsdoc-comment">/**
98 * @cfg {String} alignment
99 * The position to align to (see {@link Roo.Element#alignTo} for more details, defaults to "c-c?").
101 </span><span class="jsdoc-var">alignment</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"c-c?"</span><span class="jsdoc-syntax">,
102 </span><span class="jsdoc-comment">/**
103 * @cfg {Boolean/String} shadow "sides" for sides/bottom only, "frame" for 4-way shadow, and "drop"
104 * for bottom-right shadow (defaults to "frame")
106 </span><span class="jsdoc-var">shadow </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"frame"</span><span class="jsdoc-syntax">,
107 </span><span class="jsdoc-comment">/**
108 * @cfg {Boolean} constrain True to constrain the editor to the viewport
110 </span><span class="jsdoc-var">constrain </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
111 </span><span class="jsdoc-comment">/**
112 * @cfg {Boolean} completeOnEnter True to complete the edit when the enter key is pressed (defaults to false)
114 </span><span class="jsdoc-var">completeOnEnter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
115 </span><span class="jsdoc-comment">/**
116 * @cfg {Boolean} cancelOnEsc True to cancel the edit when the escape key is pressed (defaults to false)
118 </span><span class="jsdoc-var">cancelOnEsc </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
119 </span><span class="jsdoc-comment">/**
120 * @cfg {Boolean} updateEl True to update the innerHTML of the bound element when the update completes (defaults to false)
122 </span><span class="jsdoc-var">updateEl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
124 </span><span class="jsdoc-comment">// private
125 </span><span class="jsdoc-var">onRender </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">){
126 </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Layer</span><span class="jsdoc-syntax">({
127 </span><span class="jsdoc-var">shadow</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.shadow</span><span class="jsdoc-syntax">,
128 </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"x-editor"</span><span class="jsdoc-syntax">,
129 </span><span class="jsdoc-var">parentEl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">,
130 </span><span class="jsdoc-var">shim </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.shim</span><span class="jsdoc-syntax">,
131 </span><span class="jsdoc-var">shadowOffset</span><span class="jsdoc-syntax">:4,
132 </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.id</span><span class="jsdoc-syntax">,
133 </span><span class="jsdoc-var">constrain</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.constrain
134 </span><span class="jsdoc-syntax">});
135 </span><span class="jsdoc-var">this.el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"overflow"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"auto" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"hidden"</span><span class="jsdoc-syntax">);
136 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.field.msgTarget </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'title'</span><span class="jsdoc-syntax">){
137 </span><span class="jsdoc-var">this.field.msgTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'qtip'</span><span class="jsdoc-syntax">;
139 </span><span class="jsdoc-var">this.field.render</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">);
140 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko</span><span class="jsdoc-syntax">){
141 </span><span class="jsdoc-var">this.field.el.dom.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'autocomplete'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'off'</span><span class="jsdoc-syntax">);
143 </span><span class="jsdoc-var">this.field.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"specialkey"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onSpecialKey</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
144 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.swallowKeys</span><span class="jsdoc-syntax">){
145 </span><span class="jsdoc-var">this.field.el.swallowEvent</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'keydown'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'keypress'</span><span class="jsdoc-syntax">]);
147 </span><span class="jsdoc-var">this.field.show</span><span class="jsdoc-syntax">();
148 </span><span class="jsdoc-var">this.field.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"blur"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onBlur</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
149 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.field.grow</span><span class="jsdoc-syntax">){
150 </span><span class="jsdoc-var">this.field.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"autosize"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.el.sync</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">, {</span><span class="jsdoc-var">delay</span><span class="jsdoc-syntax">:1});
154 </span><span class="jsdoc-var">onSpecialKey </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">field</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
156 </span><span class="jsdoc-comment">//Roo.log('editor onSpecialKey');
157 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.completeOnEnter </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-var">e.ENTER</span><span class="jsdoc-syntax">){
158 </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
159 </span><span class="jsdoc-var">this.completeEdit</span><span class="jsdoc-syntax">();
160 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
162 </span><span class="jsdoc-comment">// do not fire special key otherwise it might hide close the editor...
163 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-var">e.ENTER</span><span class="jsdoc-syntax">){
164 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
166 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.cancelOnEsc </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-var">e.ESC</span><span class="jsdoc-syntax">){
167 </span><span class="jsdoc-var">this.cancelEdit</span><span class="jsdoc-syntax">();
168 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
170 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'specialkey'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">field</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
174 </span><span class="jsdoc-comment">/**
175 * Starts the editing process and shows the editor.
176 * @param {String/HTMLElement/Element} el The element to edit
177 * @param {String} value (optional) A value to initialize the editor with. If a value is not provided, it defaults
178 * to the innerHTML of el.
180 </span><span class="jsdoc-var">startEdit </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
181 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editing</span><span class="jsdoc-syntax">){
182 </span><span class="jsdoc-var">this.completeEdit</span><span class="jsdoc-syntax">();
184 </span><span class="jsdoc-var">this.boundEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
185 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.boundEl.dom.innerHTML</span><span class="jsdoc-syntax">;
186 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.rendered</span><span class="jsdoc-syntax">){
187 </span><span class="jsdoc-var">this.render</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.parentEl </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">);
189 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"beforestartedit"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.boundEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
190 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
192 </span><span class="jsdoc-var">this.startValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
193 </span><span class="jsdoc-var">this.field.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
194 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.autoSize</span><span class="jsdoc-syntax">){
195 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sz </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.boundEl.getSize</span><span class="jsdoc-syntax">();
196 </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.autoSize</span><span class="jsdoc-syntax">){
197 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">"width"</span><span class="jsdoc-syntax">:
198 </span><span class="jsdoc-var">this.setSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sz.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">""</span><span class="jsdoc-syntax">);
199 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
200 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">"height"</span><span class="jsdoc-syntax">:
201 </span><span class="jsdoc-var">this.setSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">""</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sz.height</span><span class="jsdoc-syntax">);
202 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
203 </span><span class="jsdoc-keyword">default</span><span class="jsdoc-syntax">:
204 </span><span class="jsdoc-var">this.setSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sz.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sz.height</span><span class="jsdoc-syntax">);
207 </span><span class="jsdoc-var">this.el.alignTo</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.boundEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.alignment</span><span class="jsdoc-syntax">);
208 </span><span class="jsdoc-var">this.editing </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
209 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.QuickTips</span><span class="jsdoc-syntax">){
210 </span><span class="jsdoc-var">Roo.QuickTips.disable</span><span class="jsdoc-syntax">();
212 </span><span class="jsdoc-var">this.show</span><span class="jsdoc-syntax">();
215 </span><span class="jsdoc-comment">/**
216 * Sets the height and width of this editor.
217 * @param {Number} width The new width
218 * @param {Number} height The new height
220 </span><span class="jsdoc-var">setSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">){
221 </span><span class="jsdoc-var">this.field.setSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">);
222 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">){
223 </span><span class="jsdoc-var">this.el.sync</span><span class="jsdoc-syntax">();
227 </span><span class="jsdoc-comment">/**
228 * Realigns the editor to the bound field based on the current alignment config value.
230 </span><span class="jsdoc-var">realign </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
231 </span><span class="jsdoc-var">this.el.alignTo</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.boundEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.alignment</span><span class="jsdoc-syntax">);
234 </span><span class="jsdoc-comment">/**
235 * Ends the editing process, persists the changed value to the underlying field, and hides the editor.
236 * @param {Boolean} remainVisible Override the default behavior and keep the editor visible after edit (defaults to false)
238 </span><span class="jsdoc-var">completeEdit </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">remainVisible</span><span class="jsdoc-syntax">){
239 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.editing</span><span class="jsdoc-syntax">){
240 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
242 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getValue</span><span class="jsdoc-syntax">();
243 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.revertInvalid </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">this.field.isValid</span><span class="jsdoc-syntax">()){
244 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.startValue</span><span class="jsdoc-syntax">;
245 </span><span class="jsdoc-var">this.cancelEdit</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
247 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.startValue</span><span class="jsdoc-syntax">) && </span><span class="jsdoc-var">this.ignoreNoChange</span><span class="jsdoc-syntax">){
248 </span><span class="jsdoc-var">this.editing </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
249 </span><span class="jsdoc-var">this.hide</span><span class="jsdoc-syntax">();
250 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
252 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"beforecomplete"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.startValue</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
253 </span><span class="jsdoc-var">this.editing </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
254 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.updateEl </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.boundEl</span><span class="jsdoc-syntax">){
255 </span><span class="jsdoc-var">this.boundEl.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
257 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">remainVisible </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
258 </span><span class="jsdoc-var">this.hide</span><span class="jsdoc-syntax">();
260 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"complete"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.startValue</span><span class="jsdoc-syntax">);
264 </span><span class="jsdoc-comment">// private
265 </span><span class="jsdoc-var">onShow </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
266 </span><span class="jsdoc-var">this.el.show</span><span class="jsdoc-syntax">();
267 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.hideEl </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
268 </span><span class="jsdoc-var">this.boundEl.hide</span><span class="jsdoc-syntax">();
270 </span><span class="jsdoc-var">this.field.show</span><span class="jsdoc-syntax">();
271 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">this.fixIEFocus</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// IE has problems with focusing the first time
272 </span><span class="jsdoc-var">this.fixIEFocus </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
273 </span><span class="jsdoc-var">this.deferredFocus.defer</span><span class="jsdoc-syntax">(50, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
274 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
275 </span><span class="jsdoc-var">this.field.focus</span><span class="jsdoc-syntax">();
277 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"startedit"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.boundEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.startValue</span><span class="jsdoc-syntax">);
280 </span><span class="jsdoc-var">deferredFocus </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
281 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editing</span><span class="jsdoc-syntax">){
282 </span><span class="jsdoc-var">this.field.focus</span><span class="jsdoc-syntax">();
286 </span><span class="jsdoc-comment">/**
287 * Cancels the editing process and hides the editor without persisting any changes. The field value will be
288 * reverted to the original starting value.
289 * @param {Boolean} remainVisible Override the default behavior and keep the editor visible after
290 * cancel (defaults to false)
292 </span><span class="jsdoc-var">cancelEdit </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">remainVisible</span><span class="jsdoc-syntax">){
293 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editing</span><span class="jsdoc-syntax">){
294 </span><span class="jsdoc-var">this.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.startValue</span><span class="jsdoc-syntax">);
295 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">remainVisible </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
296 </span><span class="jsdoc-var">this.hide</span><span class="jsdoc-syntax">();
301 </span><span class="jsdoc-comment">// private
302 </span><span class="jsdoc-var">onBlur </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
303 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.allowBlur </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.editing</span><span class="jsdoc-syntax">){
304 </span><span class="jsdoc-var">this.completeEdit</span><span class="jsdoc-syntax">();
308 </span><span class="jsdoc-comment">// private
309 </span><span class="jsdoc-var">onHide </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
310 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editing</span><span class="jsdoc-syntax">){
311 </span><span class="jsdoc-var">this.completeEdit</span><span class="jsdoc-syntax">();
312 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
314 </span><span class="jsdoc-var">this.field.blur</span><span class="jsdoc-syntax">();
315 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.field.collapse</span><span class="jsdoc-syntax">){
316 </span><span class="jsdoc-var">this.field.collapse</span><span class="jsdoc-syntax">();
318 </span><span class="jsdoc-var">this.el.hide</span><span class="jsdoc-syntax">();
319 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.hideEl </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
320 </span><span class="jsdoc-var">this.boundEl.show</span><span class="jsdoc-syntax">();
322 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.QuickTips</span><span class="jsdoc-syntax">){
323 </span><span class="jsdoc-var">Roo.QuickTips.enable</span><span class="jsdoc-syntax">();
327 </span><span class="jsdoc-comment">/**
328 * Sets the data value of the editor
329 * @param {Mixed} value Any valid value supported by the underlying field
331 </span><span class="jsdoc-var">setValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">){
332 </span><span class="jsdoc-var">this.field.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
335 </span><span class="jsdoc-comment">/**
336 * Gets the data value of the editor
337 * @return {Mixed} The data value
339 </span><span class="jsdoc-var">getValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
340 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.field.getValue</span><span class="jsdoc-syntax">();
342 });</span></code></body></html>