gwt - In GXT 3 how to access another field in same row during handling of onCompleteEdit event -


i have gridinlineediting object gxt 3.0 grid. works expected - can capture user editing events , find out row, column , model/change-record event.

what have not figured out how best access control in row.

specifically, have column model:

    private void initializecolumnmodel() {      // create configurations each column in grid     list<columnconfig<reminder, ?>> ccs = new linkedlist<columnconfig<reminder, ?>>();     typecolumnconfig        = new columnconfig<reminder,string>(    properties.name(),          120,    "type"      );     completedcolumnconfig   = getdatecellcolumn(                    properties.completed_(),    200,    "completed" );      duecolumnconfig         = getdatecellcolumn(                    properties.due_(),          200,    "due"       );      applicablecolumnconfig  = new columnconfig<reminder,boolean>(   properties.applicable(),    140,    "applicable");      // add column configurations columnmodel.     ccs.add(typecolumnconfig);     ccs.add(completedcolumnconfig);     ccs.add(duecolumnconfig);     ccs.add(applicablecolumnconfig);     applicablecolumnconfig.setalignment(hashorizontalalignment.align_center);     typecolumnconfig.setalignment(hashorizontalalignment.align_center);     remindercolumnmodel = new columnmodel<reminder>(ccs); } 

and attempting intercept change 'completed date' value , programmatically operate 'due date' control (adding fixed number of years if user did it).

here's how capture event:

    @override public widget aswidget() {     if(!gridinitialized){         editing = new gridinlineediting<reminder>(grid);          datefield duedatefield          = getdatefield();         datefield completeddatefield    = getdatefield();          editing.addeditor(duecolumnconfig,          duedatefield);         editing.addeditor(completedcolumnconfig,    completeddatefield);         editing.addeditor(applicablecolumnconfig,   new checkbox());          editing.addcompleteedithandler(new completeedithandler<reminder>(){             @override             public void oncompleteedit(completeeditevent<reminder> event) {                 gridcell cell = event.geteditcell();                 int row = cell.getrow();                 int col = cell.getcol();                 reminder rem = reminderstore.get(row);                 store<reminder>.record rec = reminderstore.getrecord(rem);                 //system.out.println("row:"+row+", col:"+col+", applic:"+rem.getapplicable());                 //system.out.println("rec:"+rec.tostring());                 change<reminder, boolean> applicchange  = rec.getchange(properties.applicable());                 change<reminder, date>      duechange   = rec.getchange(properties.due_());                 change<reminder, date>      comchange   = rec.getchange(properties.completed_());                 system.err.print("row "+(row+1)+" changed: ");                 if(applicchange!=null){                     boolean applicvalue = applicchange.getvalue();                     system.out.println("applicable changed "+applicvalue);                 }                 if(duechange!=null){                     date duevalue = duechange.getvalue();                     system.out.println("due changed to: "+simpledate.convertfromdate(duevalue));                 }                 if(comchange!=null){                     date comvalue = comchange.getvalue();                     system.out.println("com changed to: "+simpledate.convertfromdate(comvalue));                     try{                         fixduedate(row,comvalue, rem);                     }                     catch(exception e){                         //boo.                         system.err.println("could not update due date completion date change.");                     }                 }             }         });         gridinitialized=true;     }     // initialize revert changes button.     revert.addselecthandler(new selecthandler(){         @override         public void onselect(selectevent event) {             reminderstore.rejectchanges();         }     });      return widget; } 

the method 'fixduedate' hope place logic adjusts other column control (another datefield):

    private void fixduedate(int row, date completeddate, reminder rem) throws invaliddateformatexception, invaliddateexception{     simpledate newcompdate = new simpledate(completeddate);     simpledate duedate = newcompdate.addyears(rem.getrenewalyears());       //rem.setdue(duedate.getformatteddate());     //reminderstore.update(rem); } 

thanks.

this works:

    private void fixduedate(int row, date completeddate, reminder rem, store<reminder>.record rec )          throws invaliddateformatexception, invaliddateexception{     simpledate newcompdate = new simpledate(completeddate);     simpledate duedate = newcompdate.addyears(rem.getrenewalyears());      rec.addchange(duecolumnconfig.getvalueprovider(), duedate.todate());  } 

and modified field marks appear on both user modified field , field modified rec.addchange call above.


Comments

Popular posts from this blog

user interface - How to replace the Python logo in a Tkinter-based Python GUI app? -

objective c - Greedy NSProgressIndicator Allocation -

how to set an OCR language in Google Drive -