for my use case "block all in the application" i created the class ApplicationMask



ApplicationMask.java:

PHP Code:

package com
.mycompany.myapplication.client.gui.components;

import com.extjs.gxt.ui.client.core.El;
import com.extjs.gxt.ui.client.core.XDOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Event.NativePreviewEvent;
import com.google.gwt.user.client.Event.NativePreviewHandler;

/**
 *
 * A Class to block the full application and the Mouse and Keyevents
 *
 * @author Arno Nyhm
 */
public class ApplicationMask {

    private static 
boolean disableEvents false;
    private final static 
NativePreviewHandler handler = new NativePreviewHandler() {

        @
Override
        
public void onPreviewNativeEvent(NativePreviewEvent event) {
            if (
disableEvents) {
                
event.cancel();
            }

        }
    };

    static {
        
Event.addNativePreviewHandler(handler);
    }

    private 
ApplicationMask() {
    }

    
/**
     * Puts a mask over this element to disable user interaction.
     *
     * @return the mask element
     */
    
public static El mask() {
        return 
mask(nullnull);
    }

    
/**
     * Puts a mask over this element to disable user interaction.
     *
     * @param message a message to display in the mask
     * @return the mask element
     */
    
public static El mask(String message) {
        return 
mask(messagenull);
    }

    
/**
     * Puts a mask over this element to disable user interaction.
     *
     * @param message a message to display in the mask
     * @param messageStyleName a CSS style name to be applied to the message text
     * @return the mask element
     */
    
public static El mask(String messageString messageStyleName) {
        
disableEvents true;
        return 
XDOM.getBodyEl().mask(messagemessageStyleName);
    }

    
/**
     * Removes a previously applied mask.
     *
     * @return the mask element
     */
    
public static El unmask() {
        
disableEvents false;
        return 
XDOM.getBodyEl().unmask();
    }

additional css:


PHP Code:
.ext-el-mask {
    
z-index100000;
    
cursor:wait;
}
.
ext-el-mask-msg {
    
z-index100001;
    
cursor:wait;

example usage:

(dont forget to include the additional css! to place the mask over all elements)


PHP Code:
package com.mycompany.myapplication.client.customer.test;

import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.data.BaseModel;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.user.client.Timer;
import com.mycompany.myapplication.client.gui.components.ApplicationMask;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Arno Nyhm
 */
public class LayoutClass7ApplicationMaskSample extends Window {

    public 
LayoutClass7ApplicationMaskSample() {
        
createWindow();
    }

    private 
void createWindow() {
        
setHeading("Header");
        
setWidth(600);


        List<
ColumnConfigconfigs = new ArrayList<ColumnConfig>() {

            {
                
add(new ColumnConfig() {

                    {
                        
setHeader("ID");
                        
setId("id");
                        
setWidth(20);
                    }
                });
                
add(new ColumnConfig() {

                    {
                        
setHeader("Name");
                        
setId("name");
                    }
                });
            }
        };

        
ColumnModel cm = new ColumnModel(configs);

        
ListStore<Pairstore = new ListStore<Pair>();
        
store.add(getPairs());

        final 
Grid<Pairgrid = new Grid<Pair>(storecm);
        
grid.setAutoExpandColumn("name");
        
grid.setBorders(true);
        
grid.setStripeRows(true);

        
ContentPanel cp = new ContentPanel();
        
cp.setBodyBorder(false);
        
cp.setHeading("Basic Grid");
        
cp.setButtonAlign(HorizontalAlignment.CENTER);
        
cp.setLayout(new FitLayout());
        
cp.setSize(600300);
        
cp.add(grid);

        
setLayout(new FitLayout());
        
add(cp);



        
grid.addListener(Events.CellDoubleClick, new Listener<BaseEvent>() {

            public 
void handleEvent(BaseEvent be) {

                
// Test for masking content on a modal window.

                
GridEvent ge = (GridEventbe;
                
Info.display("Grid""Doubleclick on " ge.getRowIndex() + "/" ge.getColIndex());
                new 
InfoWindow() {

                    {
                        
setModal(true);
                        
show();
                    }
                };

            }
        });

        
grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

        
grid.getSelectionModel().addSelectionChangedListener(new SelectionChangedListener<Pair>() {

            @
Override
            
public void selectionChanged(SelectionChangedEvent<Pairse) {

                
Info.display("Grid""selection change selected " se.getSelection().size() + " item " + (se.getSelectedItem() == null "none" se.getSelectedItem().toString()));

                
ApplicationMask.mask("a very long text to see it :-)");

                
Timer timer = new Timer() {

                    @
Override
                    
public void run() {
                        
Info.display("Grid""mask removed");

                        
ApplicationMask.unmask();
                    }
                };
                
timer.schedule(2000);
            }
        });




    }

    public List<
PairgetPairs() {
        List<
Pairpairs = new ArrayList<Pair>();
        for (
int i 120i++) {
            
pairs.add(new Pair("" i, new Character((char) (64)).toString()));

        }
        return 
pairs;

    }

    public class 
Pair extends BaseModel {

        private static final 
long serialVersionUID 1L;

        public 
Pair(String idString name) {
            
setId(id);
            
setName(name);
        }

        public 
void setId(String id) {
            
set("id"id);
        }

        public 
String getId() {
            return 
get("id");
        }

        public 
void setName(String name) {
            
set("name"name);
        }

        public 
String getName() {
            return 
get("name");
        }

        @
Override
        
public String toString() {
            return 
getName();
        }
    }

    public class 
InfoWindow extends Window {

        public 
InfoWindow() {

            
add(new Text("Hello!"));

        }
    }