@qooxdoo/framework
Version:
The JS Framework for Coders
120 lines (95 loc) • 2.75 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2009 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Martin Wittemann (martinwittemann)
************************************************************************ */
/**
* Mixin handling the valid and required properties for the form widgets.
*/
qx.Mixin.define("qx.ui.form.MForm",
{
construct : function()
{
if (qx.core.Environment.get("qx.dynlocale")) {
qx.locale.Manager.getInstance().addListener("changeLocale", this.__onChangeLocale, this);
}
},
properties : {
/**
* Flag signaling if a widget is valid. If a widget is invalid, an invalid
* state will be set.
*/
valid : {
check : "Boolean",
init : true,
apply : "_applyValid",
event : "changeValid"
},
/**
* Flag signaling if a widget is required.
*/
required : {
check : "Boolean",
init : false,
event : "changeRequired"
},
/**
* Message which is shown in an invalid tooltip.
*/
invalidMessage : {
check : "String",
init: "",
event : "changeInvalidMessage"
},
/**
* Message which is shown in an invalid tooltip if the {@link #required} is
* set to true.
*/
requiredInvalidMessage : {
check : "String",
nullable : true,
event : "changeInvalidMessage"
}
},
members : {
// apply method
_applyValid: function(value, old) {
value ? this.removeState("invalid") : this.addState("invalid");
},
/**
* Locale change event handler
*
* @signature function(e)
* @param e {Event} the change event
*/
__onChangeLocale : qx.core.Environment.select("qx.dynlocale",
{
"true" : function(e)
{
// invalid message
var invalidMessage = this.getInvalidMessage();
if (invalidMessage && invalidMessage.translate) {
this.setInvalidMessage(invalidMessage.translate());
}
// required invalid message
var requiredInvalidMessage = this.getRequiredInvalidMessage();
if (requiredInvalidMessage && requiredInvalidMessage.translate) {
this.setRequiredInvalidMessage(requiredInvalidMessage.translate());
}
},
"false" : null
})
},
destruct : function()
{
if (qx.core.Environment.get("qx.dynlocale")) {
qx.locale.Manager.getInstance().removeListener("changeLocale", this.__onChangeLocale, this);
}
}
});