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