SmartGWT如何知道屏幕上是否有任何窗口可见?

时间:2017-04-18 15:35:25

标签: gwt smartgwt

我在SmartGwt中有一个主编辑器区域的编辑器应用程序。我处理一些原生事件 - 按键作为键盘快捷键。我想在屏幕上显示一个或多个窗口时禁用执行这些操作。如何检测是否显示任何Window后代? /我不是指浏览器窗口,而是SmartGwt Window后代/ 检测模态窗口就足够了。 是否有SmartGwt API这样做,或者我必须创建自己的系统来注册我的窗口并查询其可见状态?

1 个答案:

答案 0 :(得分:0)

仅供参考 - 除了为我的窗口创建一个共同的祖先并跟踪可见性变化外,似乎没有别的方法可以做到这一点。 然后在需要时调用getVisibleCount()。

public class WindowBase extends Window {
private static ArrayList<Window> visibleWindows = new ArrayList<Window>();
VisibilityChangedHandler handlervc = new VisibilityChangedHandler() {

public void onVisibilityChanged(com.smartgwt.client.widgets.events.VisibilityChangedEvent event) {
    if ( event.getIsVisible() ) {
        if ( !visibleWindows.contains( event.getSource() ) )
            visibleWindows.add( (Window)event.getSource() );
    }   else 
        visibleWindows.remove( event.getSource() );
}
};

@Override 
public void show() {
    if ( !visibleWindows.contains( this ) )
        visibleWindows.add( this );
    addVisibilityChangedHandler( handlervc );
    super.show();
}

public static int getVisibleCount() {
    return visibleWindows.size();
}

}