Working on a stock market system, I've implemented a data grid that shows 
the open positions for a trader. That grid has a number of columns showing 
current price fluctuations which might change as many as 20 times a second. 
There is also a column containing a "close position" button pressing which 
causes the position to be closed. The smallest resolution GWT provides for 
grid update is redrawRow(int row). That's what I use to update the grid 
with live data. 

The problem I have is that redrawRow() sometimes cancels close button 
events. To put it more precisely, if a user presses and holds the close 
button pressed for a while, and then releases it, the event will be lost if 
redrawRow has been invoked for the same row. That is reported as "very 
annoying" by most users, and we are failing to come up with a workaround to 
solve it. Do you have any idea how to solve this issue?

Below is how we create the close button cell:

private static ButtonCell closeButton = new ButtonCell(){
        
        private String imageResource = new Image(FxResources.INSTANCE.
closePosition().getSafeUri()).toString();
        
        private SafeHtml html = SafeHtmlUtils.fromTrustedString(
                "<button type=\"button\" class=\"gwt-Button\">" + 
imageResource + "</button>");
                
        @Override
        public void render(
                final Context context,
                final SafeHtml data,
                final SafeHtmlBuilder sb) {
            sb.append(html);
        }
    };

Adding the button cell to a column and wiring it up:

final Column<MarketOrderDTO, String> closeColumn = new Column<MarketOrderDTO
, String>(closeButton) {
            
            @Override
            public String getValue(MarketOrderDTO mo) {
                return "";
            }
        };
        closeColumn.setCellStyleNames("closeButtonCell");
        closeColumn.setFieldUpdater(new FieldUpdater<MarketOrderDTO, String
>() {

            @Override
            public void update(int index, MarketOrderDTO mo, String value) {
                OrderProcessor.closeMarketOrder(mo);
            }
        });
        dataGrid.addColumn(closeColumn, "");



Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to