TG.DomainStore = new Ext.data.DirectStore({
	autoSave: true,
	autoLoad: true,
	reader: new Ext.data.JsonReader({
		idProperty: 'virtualid',
		fields: ['virtualid', 'type', 'value']
	}),
	proxy: new Ext.data.DirectProxy({
		baseParams: {
			type: ''
		},
		api: {
			read: TG.Remoting.Domain.read,
			create: TG.Remoting.Domain.create,
			update: TG.Remoting.Domain.update,
			destroy: TG.Remoting.RiscRules.remove
		}
	}),
	writer: new Ext.data.JsonWriter({
		encode : false
	})
});

TG.Domain = Ext.extend(Ext.Window, {
	title: 'Domein',
	width: 350,
	height: 300,
	closeAction: 'hide',
	modal: true,
	setDomainType: function(type, title) {
		this.setTitle(title);
		TG.DomainStore.clearFilter();
		TG.DomainStore.filter('type', new RegExp('^'+type+'$'));
		this.items.get(0).type = type;
	},
	initComponent: function() {
		Ext.apply(this, {
			layout: 'fit',
			tbar: [{
				iconCls: 'x-icon-add',
				text: 'Toevoegen',
				handler: function() {
					Ext.MessageBox.prompt('Domein', 'Waarde:', function(btn, txt){
						var g = Ext.getCmp('domain-list');
						var Domain = g.getStore().recordType;

						var r = new Domain({
							virtualid: 9999,
							type: g.type,
							value: txt
						});
						var c = g.store.getTotalCount();
						if (c > 0) {
							g.store.insert(c-1, r);
						} else {
							g.store.add(r);
						}
					});
				}
			},{
				iconCls: 'x-icon-delete',
				text: 'Verwijderen',
				handler: function() {
					var g = Ext.getCmp('domain-list');
					if (g.getSelectionCount() > 0) {
						var r = g.getSelectedRecords();
						g.store.remove(r[0]);
					}
				}
			}],
			items: {
				id: 'domain-list',
				xtype: 'listview',
				singleSelect: true,
				store: TG.DomainStore,
				height: 200,
				columns: [{
					header: 'Waarde',
					dataIndex: 'value'
				}]				
			},
			buttons: [{
				text: 'Sluiten',
				handler: function(btn) {
					this.hide();
				}.createDelegate(this)
			}]
		});
		TG.Domain.superclass.initComponent.apply(this, arguments);
	}
});
