All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mgnl-resources.messages.js.MessagesPanel.js Maven / Gradle / Ivy

/*
 * Ext JS Library 2.1
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * [email protected]
 * 
 * http://extjs.com/license
 */

MessagesPanel = function() {
	var ds = new Ext.data.SimpleStore( {
		fields : [ 'key', 'id' ],
		data :keys,
		id :0
	});

	var pn = this;

	var sm = new Ext.grid.RowSelectionModel( {
		singleSelect :true,
		listeners : {
			rowselect : function(selmodel, rowIndex, r) {
				pn.fireEvent('selectedKey', r.get('key'));
			}
		}
	});

	var cm = new Ext.grid.ColumnModel( [ {
		id :'key',
		header :"Message key",
		dataIndex :'key',
		editor :new Ext.form.TextField( {
			allowBlank :false
		})
	} ]);

	cm.defaultSortable = true;

	var removeButton = new Ext.Button( {
		text :"Remove selected"
	});

	var addButton = new Ext.Button( {
		text :"Add"
	});

	removeKey = function() {
		if (sm.getSelected() != null && confirm("Are you sure?")) {
			var r = sm.getSelected();
			var key = r.get('key');

			Ext.Ajax
					.request( {
						url :pageUrl,
						success : function(response, options) {
							eval(response.responseText);
							if (rootObj.value == "OK") {

								sm.selectNext();

								var r = ds.getById(key);
								/*
								 * remove key
								 */
								ds.remove(r);

								pn.getView().refresh();

							} else if (rootObj.value == "NOTFOUND") {
								alert("Can't remove key, beacuse it is not stored in messages module.");
							} else {
								alert("Can't remove key");
							}
						},
						failure : function() {
							alert('Error');
						},
						params : {
							command :'removekey',
							key :key
						}
					});
		}
	};

	addKey = function() {
		var key = prompt("Key name");
		if (key != null && key.length > 0) {
			var value = prompt(key + " value (EN)");

			if (value != null && value.length > 0) {
				/*
				 * make request
				 */
				Ext.Ajax.request( {
					url :pageUrl,
					success : function(response, options) {
						eval(response.responseText);
						if (rootObj.value == "OK") {

							var rcs = ds.reader.readRecords( [ [ key, '0' ] ]).records;

							/*
							 * add key to list
							 */
							ds.insert(0, rcs);

							/*
							 * fire event to focus on key
							 */
							sm.selectRow(ds.indexOfId(key));

							pn.getView().focusRow(ds.indexOfId(key));
						} else {
							alert("Can't add key");
						}
					},
					failure : function() {
						alert('Error');
					},
					params : {
						command :'savekey',
						key :key,
						locale :'en',
						text :value
					}
				});
			}
		}
	};

	MessagesPanel.superclass.constructor.call(this, {
		id :'feed-tree',
		region :'center',
		title :'Keys',
		margins :'0 0 0 0',
		cmargins :'0 0 0 0',
		store :ds,
		sm :sm,
		cm :cm,
		autoExpandColumn :'key',
		clicksToEdit :2,
		tbar : [ 'Filter: ', ' ', new Ext.app.FilterField( {
			store :ds
		}), {
			xtype :'tbfill'
		}, {
			text :'Add',
			handler :addKey
		}, {
			text :'Remove selected',
			handler :removeKey
		} ]
	});

	pn.on('validateedit', function(e) {

		e.cancel = true;

		var key = e.record.get(e.field);
		var newkey = e.value;

		Ext.Ajax.request( {
			url :pageUrl,
			success : function(response, options) {
				eval(response.responseText);
				if (rootObj.value == "OK") {

					e.record.data[e.field] = newkey;
					pn.stopEditing();

					var r = sm.getSelected();
					sm.clearSelections();
					sm.selectRecords( [ r ]);

					pn.getView().refresh();
				} else {
					alert("Can't rename key");
				}
			},
			failure : function() {
				alert('Error');
			},
			params : {
				command :'renamekey',
				key :key,
				newkey :newkey
			}
		});

	})

}

Ext.extend(MessagesPanel, Ext.grid.EditorGridPanel);

Ext.app.FilterField = Ext.extend(Ext.form.TriggerField, {
	initComponent : function() {
		Ext.app.FilterField.superclass.initComponent.call(this);
		this.on('keyup', function(f, e) {
			this.onTriggerClick();
		}, this);
	},

	enableKeyEvents :true,

	triggerClass :'x-form-search-trigger',

	onTriggerClick : function() {
		var v = this.getRawValue();
		this.store.filter('key', new RegExp(v), false, false);
	}
});




© 2015 - 2025 Weber Informatics LLC | Privacy Policy