Hi,

I subclassed the AbstractGrid class to enable double-click to select a row instead of single-click, since it is handy to be able to click in a row to copy text etc, and then use double-click to select instead. Wouldn't this be a nice addition to the AbstractGrid class? Here is my quick/dirty implementation:

public class MyDataGrid extends DefaultDataGrid {
   /* Constructors */
   public MyDataGrid(String id, IModel model, List<IGridColumn> columns) {
       super(id, model, columns);
   }

public MyDataGrid(String id, IDataSource dataSource, List<IGridColumn> columns) {
       super(id, dataSource, columns);
   }

/* We want double-click to trigger ajax-call, not the default single-click */
   protected boolean disableRowClickNotifications() {
       return true;
   }

   /* Add ajax-behavior for double-click */
   protected void onRowPopulated(final WebMarkupContainer rowComponent) {
       super.onRowPopulated(rowComponent);

rowComponent.add(new AjaxFormSubmitBehavior(getForm(), "ondblclick") {
           private static final long serialVersionUID = 1L;
protected void onSubmit(AjaxRequestTarget target) {
           }

           protected void onError(AjaxRequestTarget target) {
           }

           protected void onEvent(AjaxRequestTarget target) {
               onRowDblClicked(target, rowComponent.getModel());
           }

           public CharSequence getCallbackUrl() {
               return super.getCallbackUrl() + "&column='+col+'";
           }

           protected IAjaxCallDecorator getAjaxCallDecorator() {
               return new AjaxCallDecorator() {
public CharSequence decorateScript(CharSequence script) { return super.decorateScript("if (InMethod.XTable.canSelectRow(event)) { " + "var col=(this.imxtClickedColumn || ''); this.imxtClickedColumn='';" + script
                               + " }");
                   }
               };
           }
       });

   }

   /* Override this to implement the double-click action */
protected void onRowDblClicked(AjaxRequestTarget target, IModel rowModel) {
   }
}

--
Med vennlig hilsen

Edvin Syse
Programutvikler

www.sysedata.no / [EMAIL PROTECTED]
Tlf: 333 49700  / Faks: 333 49701
Adresse: Møllegaten 12, 3111 Tønsberg

Syse Data AS -Profesjonelle IT-tjenester

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to