diff options
author | 2008-11-13 09:49:11 +0000 | |
---|---|---|
committer | 2008-11-13 09:49:11 +0000 | |
commit | e44a7e37b6c7b5961adaffc62b9042b8d442938e (patch) | |
tree | 95b67c356e93163467db2451f2b8cce84ed5d582 /includes/js/dijit/form/TextBox.js | |
parent | a62b9742ee5e28bcec6872d88f50f25b820914f6 (diff) | |
download | scuttle-e44a7e37b6c7b5961adaffc62b9042b8d442938e.tar.gz scuttle-e44a7e37b6c7b5961adaffc62b9042b8d442938e.zip |
New feature: basic Ajax suggestion for tags and implementation of Dojo toolkit
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@151 b3834d28-1941-0410-a4f8-b48e95affb8f
Diffstat (limited to 'includes/js/dijit/form/TextBox.js')
-rw-r--r-- | includes/js/dijit/form/TextBox.js | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/includes/js/dijit/form/TextBox.js b/includes/js/dijit/form/TextBox.js new file mode 100644 index 0000000..f36aff4 --- /dev/null +++ b/includes/js/dijit/form/TextBox.js @@ -0,0 +1,185 @@ +if(!dojo._hasResource["dijit.form.TextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dijit.form.TextBox"] = true; +dojo.provide("dijit.form.TextBox"); + +dojo.require("dijit.form._FormWidget"); + +dojo.declare( + "dijit.form.TextBox", + dijit.form._FormValueWidget, + { + // summary: + // A base class for textbox form inputs + // + // trim: Boolean + // Removes leading and trailing whitespace if true. Default is false. + trim: false, + + // uppercase: Boolean + // Converts all characters to uppercase if true. Default is false. + uppercase: false, + + // lowercase: Boolean + // Converts all characters to lowercase if true. Default is false. + lowercase: false, + + // propercase: Boolean + // Converts the first character of each word to uppercase if true. + propercase: false, + + // maxLength: String + // HTML INPUT tag maxLength declaration. + maxLength: "", + + templateString:"<input class=\"dijit dijitReset dijitLeft\" dojoAttachPoint='textbox,focusNode' name=\"${name}\"\n\tdojoAttachEvent='onmouseenter:_onMouse,onmouseleave:_onMouse,onfocus:_onMouse,onblur:_onMouse,onkeypress:_onKeyPress,onkeyup'\n\tautocomplete=\"off\" type=\"${type}\"\n\t/>\n", + baseClass: "dijitTextBox", + + attributeMap: dojo.mixin(dojo.clone(dijit.form._FormValueWidget.prototype.attributeMap), + {maxLength:"focusNode"}), + + getDisplayedValue: function(){ + // summary: + // Returns the formatted value that the user sees in the textbox, which may be different + // from the serialized value that's actually sent to the server (see dijit.form.ValidationTextBox.serialize) + return this.filter(this.textbox.value); + }, + + getValue: function(){ + return this.parse(this.getDisplayedValue(), this.constraints); + }, + + setValue: function(value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){ + // summary: + // Sets the value of the widget to "value" which can be of + // any type as determined by the widget. + // + // value: + // The visual element value is also set to a corresponding, + // but not necessarily the same, value. + // + // formattedValue: + // If specified, used to set the visual element value, + // otherwise a computed visual value is used. + // + // priorityChange: + // If true, an onChange event is fired immediately instead of + // waiting for the next blur event. + + var filteredValue = this.filter(value); + if((((typeof filteredValue == typeof value) && (value !== undefined/*#5317*/)) || (value === null/*#5329*/)) && (formattedValue == null || formattedValue == undefined)){ + formattedValue = this.format(filteredValue, this.constraints); + } + if(formattedValue != null && formattedValue != undefined){ + this.textbox.value = formattedValue; + } + dijit.form.TextBox.superclass.setValue.call(this, filteredValue, priorityChange); + }, + + setDisplayedValue: function(/*String*/value, /*Boolean?*/ priorityChange){ + // summary: + // Sets the value of the visual element to the string "value". + // The widget value is also set to a corresponding, + // but not necessarily the same, value. + // + // priorityChange: + // If true, an onChange event is fired immediately instead of + // waiting for the next blur event. + + this.textbox.value = value; + this.setValue(this.getValue(), priorityChange); + }, + + format: function(/* String */ value, /* Object */ constraints){ + // summary: + // Replacable function to convert a value to a properly formatted string + return ((value == null || value == undefined) ? "" : (value.toString ? value.toString() : value)); + }, + + parse: function(/* String */ value, /* Object */ constraints){ + // summary: + // Replacable function to convert a formatted string to a value + return value; + }, + + postCreate: function(){ + // setting the value here is needed since value="" in the template causes "undefined" + // and setting in the DOM (instead of the JS object) helps with form reset actions + this.textbox.setAttribute("value", this.getDisplayedValue()); + this.inherited(arguments); + + /*#5297:if(this.srcNodeRef){ + dojo.style(this.textbox, "cssText", this.style); + this.textbox.className += " " + this["class"]; + }*/ + this._layoutHack(); + }, + + filter: function(val){ + // summary: + // Apply specified filters to textbox value + if(val === null || val === undefined){ return ""; } + else if(typeof val != "string"){ return val; } + if(this.trim){ + val = dojo.trim(val); + } + if(this.uppercase){ + val = val.toUpperCase(); + } + if(this.lowercase){ + val = val.toLowerCase(); + } + if(this.propercase){ + val = val.replace(/[^\s]+/g, function(word){ + return word.substring(0,1).toUpperCase() + word.substring(1); + }); + } + return val; + }, + + _setBlurValue: function(){ + this.setValue(this.getValue(), (this.isValid ? this.isValid() : true)); + }, + + _onBlur: function(){ + this._setBlurValue(); + this.inherited(arguments); + }, + + onkeyup: function(){ + // summary: + // User replaceable keyup event handler + } + } +); + +dijit.selectInputText = function(/*DomNode*/element, /*Number?*/ start, /*Number?*/ stop){ + // summary: + // Select text in the input element argument, from start (default 0), to stop (default end). + + // TODO: use functions in _editor/selection.js? + var _window = dojo.global; + var _document = dojo.doc; + element = dojo.byId(element); + if(isNaN(start)){ start = 0; } + if(isNaN(stop)){ stop = element.value ? element.value.length : 0; } + element.focus(); + if(_document["selection"] && dojo.body()["createTextRange"]){ // IE + if(element.createTextRange){ + var range = element.createTextRange(); + with(range){ + collapse(true); + moveStart("character", start); + moveEnd("character", stop); + select(); + } + } + }else if(_window["getSelection"]){ + var selection = _window.getSelection(); + // FIXME: does this work on Safari? + if(element.setSelectionRange){ + element.setSelectionRange(start, stop); + } + } +} + +} |