Kamis, 15 Desember 2011

Pengenalan Konsep Widget pada SWT


Secara tradisional, widget bisa dibayangkan seperti perangkat abstrak yang berguna untuk melakukan tugas tertentu. Istilah ini popules dalam bidan ekonomi. Para pembuat software meminjam istilah ini untuk menyebut suatu paket program pembuat GUI (grahical user interface). SWT adalah kepanjangan dari Standard Widget Toolkit karena widget merupakan dasar pembangun suatu aplikasi yang dibangun dengan menggunakan SWT.

Apa itu widget?

Widget adalah elemen GUI yang dapat berinteraksi dengan user. Widget mengatur dan menentukan kondisinya sendiri dengan memggunakan kombinasi beberapa operasi grafik. Dengan menggunakan mouse atau keyboard, user bisa mengubah kondisi suatu widget. Ketika kondisi suatu widget berubah, baik diubah oleh user ataupun diubah oleh suatu kode program, maka widget akan menggambar dirinya kembali untuk merefleksikan hasil perubahannya.

Siklus hidup widget

Widget memiliki siklus hidup sendiri. Widget dibuat oleh programmer dan dibuang ketika tidak lagi dibutuhkan. Karena siklus hidup suatu widget sangat penting untuk memahami SWT, maka kita akan bahas lebih jauh pada bagian ini.

1. Membuat Widget

Widget dibuat dengan menggunakan konstruktornya, atau dengan kata lain membuat instansi suatu kelas. Ketika widget dibuat, widget akan mengambil sumber daya komputer (memori, prosesor) dari sistem operasi. Artinya semua widget akan berada di level sistem operasi, sehingga unjuk kerja dan pengaturan memori akan lebih optimal.

Konstruktor akan mengambil argumen yang biasanya tidak akan bisa diubah setelah widget dibuat. Ada 4 kemungkinan konstruktor dari suatu jenis widget :

- Widget()

- Widget(Widget induk)

- Widget(Widget induk, int bitGaya)

- Widget(Widget induk, int bitGaya, int posisi)

- Widget tidak bisa dibuat tanpa induk.

Ini bisa dilihat dari pengenalan tentang widget di bagian sebelumnya bagaimana widget tersusun secara hirarkis. Jenis induknya tergantung dari jenis widgetnya. Misalnya, induk dari suatu menu harus berupa menu, dan tidak bisa berupa tombol. Kompiler akan mengecek apakah induk suatu widget sesuai dengan tipenya, jika tidak, kompiler akan menampilkan pesan kesalahan. (Pada beberapa platform, kita dibolehkan untuk mengubah induk suatu widget. Akan tetapi SWT tidak memiliki metode getParent() pada kelas-kelas Widgetnya. Ini disebabkan karena kompleksitasnya yang mengharuskan kita untuk melakukan type cast kepada tipe induk yang benar.)

Bit gaya (style) adalah nilai bit integer yang digunakan untuk mengatur perilaku dan tampilan suatu widget. Biasanya bit gaya hanya dibutuhkan pada saat widget dibuat, misalnya memilih jenis editor multi baris atau baris tunggal. Karena atribut ini tidak bisa diubah setelah widget dibuat, maka gaya suatu widget juga tidak bisa diubah setelah widget diinstansikan.

Semua gaya widget dikumpulkan sebagai konstanta pada kelas org.eclipse.swt.SWT. Kita bisa menggambungkan beberapa gaya dengan menggunakan operasi OR. Misalnya kode berikut akan membuat widget teks multi baris yang memiliki tepi serta scroll bar horizontal dan vertikal.
Text teks = new Text (induk, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
Gaya suatu widget bisa kita ambil setelah widget tersebut dibuat dengan menggunakan metode instansi getStyle(). Untuk mengujinya, kita bisa menggunakan operasi AND yang jika hasilnya tidak nol, maka widget tersebut memiliki gaya yang diuji. Misalnya, kode berikut menguji apakah suatu widget teks memiliki tepi, kemudian mencetak hasilnya pada konsol.
if ((teks.getStyle() & SWT.BORDER) != 0)
    System.out.println("teks memiliki tepi");
else
    System.out.println("teks tidak memiliki tepi");

Paremeter posisi memungkinkan kita membuat widget baru pada suatu induk di posisi tertentu. Jika tidak diberikan, maka secara otomatis widget baru akan ditempatkan di akhir posisi. Hal ini akan lebih memudahkan kita untuk membuat widget pada urutan tertentu, misalnya membuat menu dengan urutan tertentu.

2. Membuang widget

Ketika widget tidak lagi dibutuhkan, termasuk ketika program selesai, maka widget harus dihapus secara eksplisit dengan menggunakan metode instansi dispose(). Metode ini akan menyembunyikan widget, menghapus widget yang ditampungnya, dan membuat semua referensi di dalamnya menjadi null.

Jika metode dispose() tidak dipanggil setelah program selesai dijalankan, maka hal ini akan menyebabkan kebocoran memori, di mana memori pada sistem operasi lambat laun akan habis dipenuhi oleh widget yang tidak dihapus setelah program selesai.

Memanggil metode dispose() untuk widget yang sudah dibuang, akan melemparkan pengecualian SWTException. Untuk mengetahui apakah suatu widget sudah dihapus, kita bisa menggunakan metode instansi isDisposed().

Ada dua aturan yang penting untuk diingat :

- Jika Anda membuat widget, maka pastikan Anda menghapusnya. Atau dengan kata lain, semua widget yang Anda buat dengan konstruktor wajib dihapus. Akan tetapi jika Anda mendapatkan widget dari metode instansi suatu widget, misalnyaFont huruf = kontrol.getFont(), maka Anda tidak perlu menghapusnya

- Jika Anda menghapus suatu widget, maka semua widget di bawahnya akan dihapus juga. Atau dengan kata lain, jika Anda menghapus suatu Shell, maka isi seluruh Shell akan dihapus secara otomatis. Demikian juga halnya dengan menu, jika Anda menghapus menu utama, maka semua sub-menu akan otomatis dihapus.

Tidak ada komentar:

Posting Komentar