0

ボタンをクリックするたびにロード画面(この場合はポップアップパネル)を作成し、処理が完了したら画面を非表示にしようとしています。

しかし問題は、ロード画面が表示されないことです。

ロード画面を非表示にする行を削除すると:

   //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;

    }

}
4

1 に答える 1