Bagaimana cara menutup dialog dalam kode?

Jadi saya membuat plugin gerhana dan membuat dialog sendiri dengan memperluas kelas dialog.

Dialog saya pada dasarnya mengisi tampilan pohon dengan data dari server. Terkadang data tidak dapat diisi (karena server sedang down) sehingga tampilan pohon saya kosong.

Saya telah memunculkan dialog lain yang melaporkan kesalahan jika saya tidak dapat terhubung ke server. Masalah saya adalah saya ingin menutup dialog awal ketika saya menekan ok di dialog kesalahan.

Saya belum dapat menemukan cara yang baik untuk melakukan ini. Saya telah mencoba menyetel setBlockOnOpen ke false. Saya telah mencoba menelepon cancelPressed. Tak satu pun dari mereka berhasil. Saya memanggil mereka di fungsi createDialogArea.

Adakah ide tentang bagaimana saya bisa mewujudkannya?


person Ramis    schedule 10.02.2014    source sumber
comment
Bisakah Anda memposting beberapa kode dialog khusus Anda?   -  person Haresh Chhelana    schedule 10.02.2014
comment
Saya tidak membawa kode terbaru. Namun di sini ada beberapa kode yang saya modifikasi, seharusnya mudah untuk memahami maksud saya. pastebin.com/gPKca2M7 Seperti yang Anda lihat jika pengecualian untuk Couldnotconnectoserver terjadi, ia mengembalikan null. Tiga baris komentar adalah tiga solusi berbeda yang saya coba tetapi tidak berhasil.   -  person Ramis    schedule 10.02.2014
comment
sudahkah Anda mencoba menggunakan metode ini pemberhentian() ...   -  person Haresh Chhelana    schedule 10.02.2014


Jawaban (2)


Anda perlu melakukan panggilan close setelah pembuatan dialog selesai. Anda dapat melakukannya dengan menggunakan kode ini:

parent.getDisplay().asyncExec(new Runnable()
  {
    @Override
    public void run()
    {
      close();
    }
  });

dalam metode createDialogArea Anda. Namun dialog tersebut mungkin muncul sebentar. Akan lebih baik untuk melakukan pemeriksaan sebelum membuat dialog.

person greg-449    schedule 10.02.2014
comment
terima kasih itu berhasil. (walaupun saya menggunakan cancelpressed() karena akan lebih baik) - person Ramis; 11.02.2014

Ini pada dasarnya adalah dialog pembatalan pengguna. Anda perlu memanggil cancelPressed() sehingga penanganannya akan konsisten jika Anda memiliki kode apa pun yang bergantung pada returnCode

if(noDataLoaded){
    Display.getDefault().asyncExec(new Runnable() {

     public void run() {
        cancelPressed():
    }
    });
}
person sambi reddy    schedule 10.02.2014