2017-04-18 39 views
1

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

回答

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(); 
} 

}

相关问题