PDA

View Full Version : Problem overriding functions of Ext.ux.form.ItemSelector in derived class



wasima
2 Nov 2012, 11:18 PM
Hi ,
i am working on Ext.ux.form.ItemSelector, using which a window appears and we have two panels, 'Available' and 'Selected' , any item in Available panel double clicked moves to Selected panel, but i want the item double clicked to move to Selected Panel as well as retained in original list of Available items for example if 'Available' Panel had two items 'a' and 'b' , if i double clicked 'a' , 'a' will be available in 'Selected' Panel but also retained in 'Available' panel, so i tried extending base class and override these methods as shown i code:


Ext.define('abcd.cm.monitoring.view.Common.MonitorSelector', {
extend: 'Ext.ux.form.ItemSelector',
alias: 'widget.monitorselector',
requires: [
'Ext.ux.form.ItemSelector'
],




initComponent: function() {
var me = this;
me.callParent();
}
,


onAddBtnClick : function() {
var me = this,
fromList = me.fromField.boundList,
selected = this.getSelections(fromList);


fromList.getStore().remove(selected);
this.toField.boundList.getStore().add(selected);
},
onRemoveBtnClick : function() {
var me = this,
toList = me.toField.boundList,
selected = this.getSelections(toList);


toList.getStore().remove(selected);
// this.fromField.boundList.getStore().add(selected);
},
onItemDblClick : function(view) {
var me = this;
if (view == me.toField.boundList){
me.onRemoveBtnClick();
}
else if (view == me.fromField.boundList) {
me.onAddBtnClick();
}
}
});



I am not able to get desired result.can anybody help me .
thanks in advance

mitchellsimoens
5 Nov 2012, 6:49 AM
Why not just override the moveRec method? It's where onItemDblClick, onAddBtnClick and all them go to.

wasima
5 Nov 2012, 10:03 AM
Thanks Michelle,


but there is no function called 'moveRec' in base class or derived class , which function are u talking about ?
and how do i override a method in derived class ?

mitchellsimoens
5 Nov 2012, 10:41 AM
My name isn't "Michelle".

I'm guessing you are using an older version? The latest public release (4.1.1) has this moveRec method in it.

wasima
6 Nov 2012, 6:02 AM
Thanks Mitchell Simoens.

I am using 4.1.1 only this is code i tried overriding 'moveRec' function you told but couldn't get desired results.


Ext.define('abcd.cm.monitoring.view.Common.MonitorSelector', {
extend: 'Ext.ux.form.ItemSelector',
alias: 'widget.monitorselector',
requires: [
'Ext.ux.form.ItemSelector'
],


initComponent: function() {
var me = this;
me.callParent();
}
,
moveRec: function(add, recs) {
var me = this,
fromField = me.fromField,
toField = me.toField,
fromStore = add ? fromField.store : toField.store,
toStore = add ? toField.store : fromField.store;


fromStore.suspendEvents();
toStore.suspendEvents();
// fromStore.remove(recs);
toStore.add(recs);
fromStore.resumeEvents();
toStore.resumeEvents();


fromField.boundList.refresh();
toField.boundList.refresh();


me.syncValue();
}
});

wasima
13 Nov 2012, 10:18 PM
Thanks Mitchell Simoens..
i tried overrding method 'moveRec' and it worked but issue i am facing now is :

In 'Available ' list if i have items a b c and d and i double click on 'a' , a copy of 'a' is sent to 'Selected ' list and 'a' is retained in 'Available' list as well as i wanted , but when i double click on 'a' of 'Available' list again the items in the 'Selected' list must be 'a' and 'a' that is 2 copies of 'a' in Selected list but that's not happening .It(Selected list) just conatins only one copy of 'a' now but i need 2 copies of 'a' here.
Here is code:


Ext.define('abcd.cm.monitoring.view.Common.MonitorSelector', {
extend: 'Ext.ux.form.ItemSelector',
alias: 'widget.monitorselector',
requires: [
'Ext.ux.form.ItemSelector'
],


initComponent: function() {
var me = this;
me.callParent();
} ,
onAddBtnClick : function() {
var me = this,
selected = me.getSelections(me.fromField.boundList);


me.moveRec(true, selected);
me.toField.boundList.getSelectionModel().select(selected);
}


, moveRec: function(add, recs) {
var me = this,
fromField = me.fromField,
toField = me.toField,
fromStore = add ? fromField.store : toField.store,
toStore = add ? toField.store : fromField.store;


fromStore.suspendEvents();
toStore.suspendEvents();
// fromStore.remove(recs);
toStore.add(recs);
fromStore.resumeEvents();
toStore.resumeEvents();


fromField.boundList.refresh();
toField.boundList.refresh();


me.syncValue();
}