2017-04-18 7 views
1

私はSmartGwtのメインエディタ領域を持つエディタアプリケーションを持っています。ネイティブイベントを処理します - キーボードショートカットとしてのキー押し。画面に1つ以上のウィンドウが表示されているときにこれらの実行を無効にしたい表示されているWindow子孫があるかどうかを検出する方法は? /私はブラウザウィンドウを意味するのではなく、SmartGwt Window子孫/ モーダルウィンドウを検出するのには完全に十分でしょう。 これを行うためのSmartGwt APIの方法はありますか、またはウィンドウを登録して可視状態を照会するための独自のシステムを作成する必要がありますか?SmartGWTウィンドウが画面に表示されているかどうかを知る方法は?

答えて

0

FYI - 私のウィンドウの共通の祖先を作成し、可視性の変更を追跡する以外にこれを行う方法は他にありません。 次に、必要に応じて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(); 
} 

}

関連する問題