disabled: false,
hideHeaders: true,
+ monStoreErrors: false,
+
+ add_combobox_row: function(name, text, opts) {
+ var me = this;
+
+ opts = opts || {};
+ me.rows = me.rows || {};
+
+ me.rows[name] = {
+ required: true,
+ defaultValue: opts.defaultValue,
+ header: text,
+ renderer: opts.renderer,
+ editor: {
+ xtype: 'proxmoxWindowEdit',
+ subject: text,
+ fieldDefaults: {
+ labelWidth: opts.labelWidth || 100
+ },
+ items: {
+ xtype: 'proxmoxKVComboBox',
+ name: name,
+ comboItems: opts.comboItems,
+ value: opts.defaultValue,
+ deleteEmpty: opts.deleteEmpty ? true : false,
+ emptyText: opts.defaultValue,
+ labelWidth: Proxmox.Utils.compute_min_label_width(
+ text, opts.labelWidth),
+ fieldLabel: text
+ }
+ }
+ };
+ },
+
+ add_text_row: function(name, text, opts) {
+ var me = this;
+
+ opts = opts || {};
+ me.rows = me.rows || {};
+
+ me.rows[name] = {
+ required: true,
+ defaultValue: opts.defaultValue,
+ header: text,
+ renderer: opts.renderer,
+ editor: {
+ xtype: 'proxmoxWindowEdit',
+ subject: text,
+ fieldDefaults: {
+ labelWidth: opts.labelWidth || 100
+ },
+ items: {
+ xtype: 'proxmoxtextfield',
+ name: name,
+ deleteEmpty: opts.deleteEmpty ? true : false,
+ emptyText: opts.defaultValue,
+ labelWidth: Proxmox.Utils.compute_min_label_width(
+ text, opts.labelWidth),
+ vtype: opts.vtype,
+ fieldLabel: text
+ }
+ }
+ };
+ },
+
+ add_boolean_row: function(name, text, opts) {
+ var me = this;
+
+ opts = opts || {};
+ me.rows = me.rows || {};
+
+ me.rows[name] = {
+ required: true,
+ defaultValue: opts.defaultValue || 0,
+ header: text,
+ renderer: opts.renderer || Proxmox.Utils.format_boolean,
+ editor: {
+ xtype: 'proxmoxWindowEdit',
+ subject: text,
+ fieldDefaults: {
+ labelWidth: opts.labelWidth || 100
+ },
+ items: {
+ xtype: 'proxmoxcheckbox',
+ name: name,
+ uncheckedValue: 0,
+ defaultValue: opts.defaultValue || 0,
+ checked: opts.defaultValue ? true : false,
+ deleteDefaultValue: opts.deleteDefaultValue ? true : false,
+ labelWidth: Proxmox.Utils.compute_min_label_width(
+ text, opts.labelWidth),
+ fieldLabel: text
+ }
+ }
+ };
+ },
+
+ add_integer_row: function(name, text, opts) {
+ var me = this;
+
+ opts = opts || {}
+ me.rows = me.rows || {};
+
+ me.rows[name] = {
+ required: true,
+ defaultValue: opts.defaultValue,
+ header: text,
+ renderer: opts.renderer,
+ editor: {
+ xtype: 'proxmoxWindowEdit',
+ subject: text,
+ fieldDefaults: {
+ labelWidth: opts.labelWidth || 100
+ },
+ items: {
+ xtype: 'proxmoxintegerfield',
+ name: name,
+ minValue: opts.minValue,
+ maxValue: opts.maxValue,
+ emptyText: gettext('Default'),
+ deleteEmpty: opts.deleteEmpty ? true : false,
+ value: opts.defaultValue,
+ labelWidth: Proxmox.Utils.compute_min_label_width(
+ text, opts.labelWidth),
+ fieldLabel: text
+ }
+ }
+ };
+ },
+
+ editorConfig: {}, // default config passed to editor
+
+ run_editor: function() {
+ var me = this;
+
+ var sm = me.getSelectionModel();
+ var rec = sm.getSelection()[0];
+ if (!rec) {
+ return;
+ }
+
+ var rows = me.rows;
+ var rowdef = rows[rec.data.key];
+ if (!rowdef.editor) {
+ return;
+ }
+
+ var win;
+ var config;
+ if (Ext.isString(rowdef.editor)) {
+ config = Ext.apply({
+ confid: rec.data.key,
+ }, me.editorConfig);
+ win = Ext.create(rowdef.editor, config);
+ } else {
+ config = Ext.apply({
+ confid: rec.data.key,
+ }, me.editorConfig);
+ Ext.apply(config, rowdef.editor);
+ win = Ext.createWidget(rowdef.editor.xtype, config);
+ win.load();
+ }
+
+ win.show();
+ win.on('destroy', me.reload, me);
+ },
+
+ reload: function() {
+ var me = this;
+ me.rstore.load();
+ },
+
getObjectValue: function(key, defaultValue) {
var me = this;
var rec = me.store.getById(key);
return value;
},
+ listeners: {
+ itemkeydown: function(view, record, item, index, e) {
+ if (e.getKey() === e.ENTER) {
+ this.pressedIndex = index;
+ }
+ },
+ itemkeyup: function(view, record, item, index, e) {
+ if (e.getKey() === e.ENTER && index == this.pressedIndex) {
+ this.run_editor();
+ }
+
+ this.pressedIndex = undefined;
+ }
+ },
+
initComponent : function() {
var me = this;
});
me.callParent();
+
+ if (me.monStoreErrors) {
+ Proxmox.Utils.monStoreErrors(me, me.store);
+ }
}
});