You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.6 KiB
144 lines
4.6 KiB
|
|
/**
|
|
* OptionalParameterValueRow extends ParamterValueRow. This class displays a info message for 'undefined' value and
|
|
* clears the info message when its control get focus
|
|
*/
|
|
bobj.crv.params.newOptionalParameterValueRow = function(kwArgs) {
|
|
kwArgs = MochiKit.Base.update( {
|
|
noValueDisplayText :'',
|
|
isEmptyStringNoValue : true,
|
|
clearValuesCB : null
|
|
}, kwArgs);
|
|
|
|
var o = bobj.crv.params.newParameterValueRow(kwArgs);
|
|
bobj.extendClass(o, bobj.crv.params.OptionalParameterValueRow, bobj.crv.params.ParameterValueRow);
|
|
|
|
if (o.canChangeOnPanel) {
|
|
o._clearValueButton = newIconWidget(
|
|
o.id + '_clearBtn',
|
|
bobj.crvUri('images/clear_x.gif'),
|
|
o.clearValuesCB,
|
|
null, //text
|
|
L_bobj_crv_ParamsClearValues,//tooltip,
|
|
10, 10, 2, 2); //width, height, dx, dy, disDx, disDy, cancelEventPropagation
|
|
|
|
o._clearValueButton.setClasses("", "iconcheck", "", "iconcheckhover");
|
|
o._clearValueButton.margin = 2;
|
|
}
|
|
|
|
return o;
|
|
};
|
|
|
|
bobj.crv.params.OptionalParameterValueRow = {
|
|
/**
|
|
* Returns arguments required for creating new ValueWidget(TextField, TextCombo, RangeField)
|
|
*/
|
|
getNewValueWidgetArgs : function() {
|
|
var args = this.superClass.getNewValueWidgetArgs();
|
|
|
|
if (this.value == undefined) {
|
|
//If value is undefined, the valueWidget should display noValueDisplayText
|
|
args.cleanValue = this.noValueDisplayText;
|
|
args.foreColor = bobj.Colors.GRAY;
|
|
}
|
|
|
|
return args;
|
|
},
|
|
|
|
init : function () {
|
|
this.superClass.init();
|
|
if(this._clearValueButton) {
|
|
this._clearValueButton.init();
|
|
}
|
|
|
|
this.updateUI ();
|
|
},
|
|
|
|
getHTML : function () {
|
|
var rowHTML = this.superClass.getHTML();
|
|
if (this.canChangeOnPanel) {
|
|
var h = bobj.html;
|
|
rowHTML = h.DIV({style : {position : 'relative'}}, rowHTML , h.DIV({'class' : 'clearValueBtnCtn'},this._clearValueButton.getHTML()));
|
|
}
|
|
|
|
return rowHTML;
|
|
},
|
|
|
|
/**
|
|
* When receiving focus if noValueDisplayText is being displayed (happens when current value is undefined and param is editable on panel),
|
|
* it must be cleared so user can type something
|
|
*/
|
|
onFocus : function() {
|
|
this.superClass.onFocus();
|
|
if (this.canChangeOnPanel) {
|
|
if(this.value == undefined)
|
|
this._valueWidget.setValue('');
|
|
}
|
|
},
|
|
|
|
onBlur : function() {
|
|
this.superClass.onBlur();
|
|
|
|
if (this.canChangeOnPanel) {
|
|
if (this.value == undefined)
|
|
this._valueWidget.setValue(this.noValueDisplayText);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* When user changes value, value stored in OptionalParmeterUI gets updated and
|
|
*/
|
|
_onChange : function() {
|
|
this.value = this._valueWidget.getValue();
|
|
if(this.isEmptyStringNoValue && this.value != null && this.value.length == 0)
|
|
this.value = undefined;
|
|
|
|
this.updateUI();
|
|
if (this.changeCB)
|
|
this.changeCB();
|
|
|
|
},
|
|
|
|
updateUI: function() {
|
|
if (this._valueWidget) {
|
|
if(this.isReadOnlyParam) {
|
|
this._valueWidget.setForeColor(bobj.Colors.GRAY);
|
|
this._valueWidget.setTextItalic(false);
|
|
}
|
|
else {
|
|
if(this.value == undefined) {
|
|
this._valueWidget.setForeColor(bobj.Colors.GRAY);
|
|
if(this._clearValueButton)
|
|
this._clearValueButton.setDisplay(false);
|
|
}
|
|
else {
|
|
this._valueWidget.setForeColor(bobj.Colors.BLACK);
|
|
if(this._clearValueButton)
|
|
this._clearValueButton.setDisplay(true);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
getValueWidgetDisplayValue: function(value) {
|
|
return (value == undefined) ? this.noValueDisplayText : value;
|
|
},
|
|
|
|
setValue : function(value) {
|
|
this.value = value;
|
|
this._valueWidget.setValue(this.getValueWidgetDisplayValue(value));
|
|
this.updateUI();
|
|
|
|
this.setWarning(null); //Since value is set through parameterController it cannot contain any errors
|
|
},
|
|
|
|
reset : function(value) {
|
|
this.superClass.reset(value);
|
|
if(this._valueWidget) {
|
|
this._valueWidget.reset(this.getValueWidgetDisplayValue(value));
|
|
}
|
|
|
|
this.updateUI();
|
|
}
|
|
};
|