UIを初期化し、すべての要素をVerticalPanelに追加し、初期化の最後に、ユーザーパスワードの有効期限が切れているかどうかを確認します。有効期限が切れている場合は、警告付きのダイアログボックスを表示します。
このページの要素の1つは、DataGridを備えたTabPanelであり、すべてのデータはサーバーから非同期に取得されます。したがって、問題は、[パスワードの有効期限]ダイアログボックスが表示されたときに、DataGridの行の後ろにあることです。Chromeで要素を調べると、PopupGlassPanel-> DialogBox-> Table(コンテンツ付き)があることがわかります。ただし、画像は次のようになります。テーブル(コンテンツ付き)->PopupGlassPanel->DialogBox。
しかし、データを取得するためのサーバーへの非同期呼び出しでは何もできません。すべてのデータがサーバーから取得され、その後にのみダイヤロボックスが表示されるように、そのようなことを制御することは可能ですか?
初期化方法は次のようになります。
public void initUI() {
final VerticalPanel mainPanel = new VerticalPanel();
Panel outer = new VerticalPanel();
DataHolder dataHolder = new DataHolder(); //this class contains DataGrid and makes async calls to server for data
outer.add(dataHolder.getContent());
tabPanel.add(outer, "Important Data", true);
mainPanel.add(tabPanel);
checkPasswordExpiration(getPwdExpiring());
RootPanel.get().add(mainPanel);
}
//...........
private void checkPasswordExpiration(int days) {
//...
//Show dialog box
//...
}