ボタンをクリックするたびにロード画面(この場合はポップアップパネル)を作成し、処理が完了したら画面を非表示にしようとしています。
しかし問題は、ロード画面が表示されないことです。
ロード画面を非表示にする行を削除すると:
//HIDES THE LOADING POPUP
closeLoadingFilter();
読み込み画面が表示されますが、すべての処理が完了するまでです。(ボタンをクリックした直後ではありません)。
画面に何かが表示される前に、ボタン ハンドラ内のすべての処理が完了している必要があると思います。そのため、処理が完了すると、ポップアップは画面に表示される前に非表示になります。
どうすればこの問題を解決できますか。ちなみに、処理に Async 呼び出しはありません。すべてがメモリ内処理であり、メモリ内情報を使用した Google ビジュアライゼーションの描画です。
皆さん、ありがとうございました
コードは次のとおりです。
buttonFilter.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
//SHOWS THE LOADING POPUP
showLoadingFilter();
//ALL THIS TAKES AROUND 4 SECONDS
//THERE IS NO ASYNC CALL
//EVERYTHING IS IN-MEMORY PROCESSING
//AND DRAWING OF GOOGLE VISUALIZATION
listValues.clear();
listFields.clear();
CreateListFiltersSingle();
GetFilterSingleOptions();
RunFilter(dashboardProductos);
DrawVisualizations2();
//HIDES THE LOADING POPUP
closeLoadingFilter();
}
})
public void showLoadingFilter() {
popupFilterLoading.clear();
popupFilterLoading.add(new Label("Please wait"));
popupFilterLoading.setGlassEnabled(true);
popupFilterLoading.center();
isFilterLoading = true;
popupFilterLoading.show();
}
public void closeLoadingFilter() {
if (isFilterLoading) {
popupFilterLoading.hide();
isFilterLoading = false;
}
}