Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    RecordDoubleClickEvent not firing if RecordClickEvent has server call

    Hi, i'm using smartgwtEE 2.5 and Internet Explorer 7

    I am attempting to apply a RecordClickHandler and a RecordDoubleClickHandler to a listgrid. Normally, both are called when I double click a record. However, there are some cases where the doubleclick event does not fire. This occurs when there is a server call, i.e. fetch, within the RecordClickHandler. The single-clickevent fires first, performs the server operation, and then for some reason stops the doubleclick event from firing. If the server call does not execute (e.g. if the results are already obtained), then the doubleclick event fires as expected.

    Is there any way to ensure the DoubleClick event fires? Even when there is a server operation?


    Code:
                    MyHandler hand = new MyHandler();
    
    		itemList.addRecordClickHandler(hand);
    
    		itemList.addRecordDoubleClickHandler(hand);
    Code:
    class MyHandler implements RecordClickHandler, RecordDoubleClickHandler{
    
    		@Override
    		public void onRecordClick(RecordClickEvent event) {
    			System.out.println("rec click");
    			
    			try{
    				Criteria criteria = new Criteria();
    				criteria.setAttribute("currGroupCode",  "X");
    			
    				currencyGroupMapSearchForm.itemListGrid.fetchData(criteria);
    
    			}
    			catch(Exception e){
    			}
    
    		}
    
    		@Override
    		public void onRecordDoubleClick(RecordDoubleClickEvent event) {
    			System.out.println("rec DOUBLE click");
    		}
    
    	}

    Code:
    rec click
    === 2011-11-15 16:37:10,383 [l0-1] INFO  RequestContext - URL: '/veyron/sc/IDACall', User-Agent: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; chromeframe/10.0.648.204; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E; .NET CLR 3.0.04506.30; MS-RTC LM 8; MS-RTC LM 8)': MSIE with Accept-Encoding header, ready for compressed JS
    === 2011-11-15 16:37:10,383 [l0-1] DEBUG XML - Parsed XML from (in memory stream): 0ms
    === 2011-11-15 16:37:10,399 [l0-1] DEBUG RPCManager - Processing 1 requests.
    === 2011-11-15 16:37:10,399 [l0-1] DEBUG RPCManager - Request #1 (DSRequest) payload: {
        criteria:{
            currGroupCode:"X"
        },
        operationConfig:{
            dataSource:"currencyGroupMapping",
            operationType:"fetch",
            textMatchStyle:"exact"
        },
        startRow:0,
        endRow:75,
        componentId:"isc_CommonListGrid_45",
        appID:"builtinApplication",
        operation:"currencyGroupMapping_fetch",
        oldValues:{
            currGroupCode:"X"
        }
    }
    === 2011-11-15 16:37:10,399 [l0-1] DEBUG AppBase - [builtinApplication.currencyGroupMapping_fetch] No userTypes defined, allowing anyone access to all operations for this application
    === 2011-11-15 16:37:10,399 [l0-1] DEBUG AppBase - [builtinApplication.currencyGroupMapping_fetch] No public zero-argument method named '_currencyGroupMapping_fetch' found, performing generic datasource operation
    query :select cgm.CURR_GROUP_CODE as currGroupCode, cgm.curr_code as currCode from CURRENCY_GROUP_MAP cgm, CURRENCY_GROUP cg  where cg.curr_group_code=cgm.curr_group_code and cgm.curr_group_code = ?  ~param  X
    Hibernate: select cgm.CURR_GROUP_CODE as currGroupCode, cgm.curr_code as currCode from CURRENCY_GROUP_MAP cgm, CURRENCY_GROUP cg  where cg.curr_group_code=cgm.curr_group_code and cgm.curr_group_code = ?
    size :3
    === 2011-11-15 16:37:10,461 [l0-1] INFO  DSResponse - [builtinApplication.currencyGroupMapping_fetch] DSResponse: List with 3 items
    === 2011-11-15 16:37:10,461 [l0-1] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
    === 2011-11-15 16:37:10,461 [l0-1] DEBUG RPCManager - non-DMI response, dropExtraFields: false
    === 2011-11-15 16:37:10,477 [l0-1] INFO  Compression - /veyron/sc/IDACall: 286 -> 165 bytes

    This happens when server operation is executed (sorry for the messy log, wasnt sure what you wanted to see)
    Code:
    16:35:40.760:TMR0:DEBUG:EventHandler:mousing over [GridBody ID:isc_CommonListGrid_44_body]
    16:35:42.682:MDN9:INFO:EventHandler:Target Canvas for event 'mousedown': [GridBody ID:isc_CommonListGrid_44_body]
    16:37:06.914:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[GridBody ID:isc_CommonListGrid_44_body]' has handler: Canvas.prepareForDragging()
    16:37:06.946:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[ListGrid ID:isc_CommonListGrid_44]' has handler: Canvas.prepareForDragging()
    16:37:06.961:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[VLayout ID:isc_VLayout_58]' has handler: Canvas.prepareForDragging()
    16:37:06.977:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ReferenceTabPane_6_paneContainer]' has handler: Canvas.prepareForDragging()
    16:37:06.993:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ReferenceTabPane_6]' has handler: Canvas.prepareForDragging()
    16:37:07.680:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[SectionStack ID:isc_SectionStack_18]' has handler: Canvas.prepareForDragging()
    16:37:07.711:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[HLayout ID:isc_CurrencyGroupTab_0]' has handler: Canvas.prepareForDragging()
    16:37:07.727:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_CurrencyTabSet_0_paneContainer]' has handler: Canvas.prepareForDragging()
    16:37:07.743:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_CurrencyTabSet_0]' has handler: Canvas.prepareForDragging()
    16:37:07.774:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ReferenceProcessTab_0_paneContainer]' has handler: Canvas.prepareForDragging()
    16:37:07.789:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ReferenceProcessTab_0]' has handler: Canvas.prepareForDragging()
    16:37:08.602:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ParentTabSet_0_paneContainer]' has handler: Canvas.prepareForDragging()
    16:37:08.633:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ParentTabSet_0]' has handler: Canvas.prepareForDragging()
    16:37:08.649:MDN9:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[HLayout ID:isc_ParentLayout_0]' has handler: Canvas.prepareForDragging()
    16:37:08.664:MDN9:DEBUG:EventHandler:Event 'prepareForDragging' bubbled to top
    16:37:08.774:MDN9:DEBUG:EventHandler:Event 'mouseDown' bubbled to top
    16:37:08.805:MDN9:DEBUG:EventHandler:Event 'mouseStillDown' bubbled to top
    16:37:09.680:MUP4:INFO:EventHandler:Target Canvas for event 'mouseup': [GridBody ID:isc_CommonListGrid_44_body]
    16:37:09.711:MUP4:DEBUG:EventHandler:Event 'mouseUp' bubbled to top
    16:37:10.289:MUP4:INFO:RPCManager:sendQueue[12]: 1 RPCRequest(s); transport: xmlHttpRequest; target: http://127.0.0.1:8888/veyron/sc/IDACall?isc_rpc=1&isc_v=SC_SNAPSHOT-2011-08-02&isc_xhr=1&isc_tnum=12
    16:37:10.321:MUP4:DEBUG:EventHandler:Event 'click' bubbled to top
    16:37:10.352:TMR6:DEBUG:EventHandler:mousing over [GridBody ID:isc_CommonListGrid_44_body]
    16:37:10.414:MUP1:INFO:EventHandler:Target Canvas for event 'mouseup': [ScreenSpan ID:isc_EH_screenSpan]
    16:37:10.836:MUP1:DEBUG:EventHandler:mouseUp cancelled by clickMask
    16:37:10.852:TMR4:DEBUG:EventHandler:mousing over [ScreenSpan ID:isc_EH_screenSpan]
    16:37:10.883:XRP8:INFO:RPCManager:transaction 12 arrived after 578ms
    16:37:10.883:XRP8:INFO:RPCManager:rpcResponse(currencyGroupMapping_fetch)[fetch]: result: 3 records[status=0]

    this happens when server operation is not executed and doubleclick event fires successfully
    Code:
    17:04:07.055:MDN7:INFO:EventHandler:Target Canvas for event 'mousedown': [GridBody ID:isc_CommonListGrid_44_body]
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[GridBody ID:isc_CommonListGrid_44_body]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[ListGrid ID:isc_CommonListGrid_44]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[VLayout ID:isc_VLayout_58]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ReferenceTabPane_6_paneContainer]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ReferenceTabPane_6]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[SectionStack ID:isc_SectionStack_18]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[HLayout ID:isc_CurrencyGroupTab_0]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_CurrencyTabSet_0_paneContainer]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_CurrencyTabSet_0]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ReferenceProcessTab_0_paneContainer]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ReferenceProcessTab_0]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ParentTabSet_0_paneContainer]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ParentTabSet_0]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[HLayout ID:isc_ParentLayout_0]' has handler: Canvas.prepareForDragging()
    17:04:07.055:MDN7:DEBUG:EventHandler:Event 'prepareForDragging' bubbled to top
    17:04:07.055:MDN7:DEBUG:EventHandler:Event 'mouseDown' bubbled to top
    17:04:07.055:MDN7:DEBUG:EventHandler:Event 'mouseStillDown' bubbled to top
    17:04:07.118:MUP8:INFO:EventHandler:Target Canvas for event 'mouseup': [GridBody ID:isc_CommonListGrid_44_body]
    17:04:07.118:MUP8:DEBUG:EventHandler:Event 'mouseUp' bubbled to top
    17:04:07.133:MUP8:DEBUG:EventHandler:Event 'click' bubbled to top
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[GridBody ID:isc_CommonListGrid_44_body]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[ListGrid ID:isc_CommonListGrid_44]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[VLayout ID:isc_VLayout_58]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ReferenceTabPane_6_paneContainer]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ReferenceTabPane_6]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[SectionStack ID:isc_SectionStack_18]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[HLayout ID:isc_CurrencyGroupTab_0]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_CurrencyTabSet_0_paneContainer]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_CurrencyTabSet_0]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ReferenceProcessTab_0_paneContainer]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ReferenceProcessTab_0]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[PaneContainer ID:isc_ParentTabSet_0_paneContainer]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[TabSet ID:isc_ParentTabSet_0]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Bubbling event 'prepareForDragging', target '[HLayout ID:isc_ParentLayout_0]' has handler: Canvas.prepareForDragging()
    17:04:07.258:MUP2:DEBUG:EventHandler:Event 'prepareForDragging' bubbled to top
    17:04:07.258:MUP2:DEBUG:EventHandler:Event 'mouseDown' bubbled to top
    17:04:07.258:MUP2:DEBUG:EventHandler:Event 'mouseStillDown' bubbled to top
    17:04:07.258:MUP2:INFO:EventHandler:Target Canvas for event 'mouseup': [GridBody ID:isc_CommonListGrid_44_body]
    17:04:07.274:MUP2:DEBUG:EventHandler:Event 'mouseUp' bubbled to top
    17:04:07.274:MUP2:DEBUG:EventHandler:Event 'doubleClick' bubbled to top
    17:04:09.211:TMR3:DEBUG:EventHandler:mousing out of [GridBody ID:isc_CommonListGrid_44_body]  mousing over [ImgTab ID:isc_Tab_57]
    any insight? Thanks a lot ...

    #2
    here is the fetch operation on the server side in case its relevant:

    Code:
    @Override
    	public DSResponse executeFetch(DSRequest req) throws Exception {
    		DSResponse dsResponse = new DSResponse();
    		dsResponse.setSuccess();
     
    		String query = "select cgm.CURR_GROUP_CODE as currGroupCode, cgm.curr_code as currCode from CURRENCY_GROUP_MAP cgm, CURRENCY_GROUP cg  where cg.curr_group_code=cgm.curr_group_code and cgm.curr_group_code = ?";
    
        	List params = new ArrayList();
        	params.add(req.getCriteria().get("currGroupCode"));
    
    ////
        	List<Object[]> dataList = new StaticReferenceDAO().findByQuery(null, query, params);
    ////
    
    
        	List<CurrencyGroupMapping> currGroupMappingList = new ArrayList<CurrencyGroupMapping>();
    
        	CurrencyGroupMapping cgm;
        	
        	for(Iterator i = dataList.iterator(); i.hasNext(); ){
        		Object[] array = (Object[]) i.next();
        		String currGroupCode;
        		String currCode;
        		String currGroupName;
        		
    			currGroupCode = (String) array[0];
    			currCode = (String) array[1];
    			//currGroupName = (String) array[2];
    			cgm = new CurrencyGroupMapping(currGroupCode,currCode,"Y");
    			currGroupMappingList.add(cgm);
        	}
        	
            dsResponse.setData(currGroupMappingList);
            return dsResponse;
    	}
    Code:
    public List<Object[]> findByQuery(Map<String, String> dataParams, String strQuery, List params) {
    		Query query = getSession().createSQLQuery(strQuery);
    		if(strQuery.indexOf("?") != -1)
    		{
    			for(int i = 0; i < params.size(); i++)
    			{
    				query.setParameter(i, params.get(i));
    			}
    		}
    		query.setCacheable(false);
    		return query.list();
    	}

    Comment


      #3
      any ideas?

      Is there any way to delay the server operation until after the doubleclick?

      Comment

      Working...
      X