META-INF.resources.org.richfaces.inplaceInput.js Maven / Gradle / Ivy
(function ($, rf) {
rf.ui = rf.ui || {};
rf.ui.InplaceInput = function(id, options) {
var mergedOptions = $.extend({}, defaultOptions, options);
$super.constructor.call(this, id, mergedOptions);
this.label = $(document.getElementById(id + "Label"));
var labelText = this.label.text();
var inputLabel = this.__getValue();
this.initialLabel = (labelText == inputLabel) ? labelText : "";
this.useDefaultLabel = labelText != inputLabel
this.saveOnBlur = mergedOptions.saveOnBlur;
this.showControls = mergedOptions.showControls;
this.getInput().bind("focus", $.proxy(this.__editHandler, this));
if (this.showControls) {
var btnContainer = document.getElementById(id + "Btn");
if (btnContainer) {
btnContainer.tabIndex = -1;
}
this.okbtn = $(document.getElementById(id + "Okbtn"));
this.cancelbtn = $(document.getElementById(id + "Cancelbtn"));
this.okbtn.bind("mousedown", $.proxy(this.__saveBtnHandler, this));
this.cancelbtn.bind("mousedown", $.proxy(this.__cancelBtnHandler, this));
}
};
rf.ui.InplaceBase.extend(rf.ui.InplaceInput);
var $super = rf.ui.InplaceInput.$super;
var defaultOptions = {
defaultLabel: "",
saveOnBlur: true,
showControl: true,
noneCss: "rf-ii-none",
readyCss: "rf-ii",
editCss: "rf-ii-act",
changedCss: "rf-ii-chng"
};
$.extend(rf.ui.InplaceInput.prototype, ( function () {
return {
name : "inplaceInput",
defaultLabelClass : "rf-ii-dflt-lbl",
getName: function() {
return this.name;
},
getNamespace: function() {
return this.namespace;
},
__keydownHandler: function(e) {
this.tabBlur = false;
switch (e.keyCode || e.which) {
case rf.KEYS.ESC:
e.preventDefault();
this.cancel();
this.onblur(e);
break;
case rf.KEYS.RETURN:
e.preventDefault();
this.save();
this.onblur(e);
break;
case rf.KEYS.TAB:
this.tabBlur = true;
break;
}
},
__blurHandler: function(e) {
this.onblur(e);
},
__isSaveOnBlur: function() {
return this.saveOnBlur;
},
__setInputFocus: function() {
this.getInput().unbind("focus", this.__editHandler);
this.getInput().focus();
},
__saveBtnHandler: function(e) {
this.cancelButton = false;
this.save();
this.onblur(e);
},
__cancelBtnHandler: function(e) {
this.cancelButton = true;
this.cancel();
this.onblur(e);
},
__editHandler: function(e) {
$super.__editHandler.call(this, e);
this.onfocus(e);
},
getLabel: function() {
return this.label.text();
},
setLabel: function(value) {
this.label.text(value);
if (value == this.defaultLabel) {
this.label.addClass(this.defaultLabelClass);
} else {
this.label.removeClass(this.defaultLabelClass);
}
},
isValueChanged: function () {
return (this.__getValue() != this.initialLabel);
},
onshow: function() {
this.__setInputFocus();
},
onhide: function() {
if (this.tabBlur) {
this.tabBlur = false;
} else {
this.getInput().focus();
}
},
onfocus: function(e) {
if (!this.__isFocused()) {
this.__setFocused(true);
this.focusValue = this.__getValue();
this.invokeEvent.call(this, "focus", document.getElementById(this.id), e);
}
},
onblur: function(e) {
if (this.__isFocused()) {
this.__setFocused(false);
this.invokeEvent.call(this, "blur", document.getElementById(this.id), e);
if (this.isValueSaved() || this.__isSaveOnBlur()) {
this.save();
} else {
this.cancel();
}
this.__hide();
if (!this.cancelButton) {
if (this.__isValueChanged()) {
this.invokeEvent.call(this, "change", document.getElementById(this.id), e);
}
}
var _this = this;
window.setTimeout(function() {
_this.getInput().bind("focus", $.proxy(_this.__editHandler, _this));
}, 1);
}
},
__isValueChanged: function() {
return (this.focusValue != this.__getValue());
},
__setFocused: function(focused) {
this.focused = focused;
},
__isFocused: function() {
return this.focused;
},
setValue: function(value) {
this.__setValue(value);
this.save();
}
}
})());
})(RichFaces.jQuery, window.RichFaces);
© 2015 - 2024 Weber Informatics LLC | Privacy Policy