Kamis, 08 Maret 2012

Event

Event adalah inti dari pemrograman GUI. GUI program tidak memiliki alur apa yang akan terjadi ketika program dijalankan, dalam arti langkah per langkah dari awal hingga akhir. Akan tetapi, program harus bisa bereaksi akan berbagai event (kejadian) yang bisa berasal dari mouse atau keyboard. User bisa menekan tombol keyboard apa saja, menggeser mouse, atau menekan tombol mouse. User bisa melakukannya kapan saja, dan komputer harus bisa bereaksi dengan tepat.
Dalam Java, event dilambangkan oleh objek. Ketika suatu event terjadi, sistem akan mengumpulkan informasi yang sesuai dengan even tersebut, kemudian membuat objek yang berisi informasi ini. Jenis even berbeda dilambangkan oleh objek dengan kelas yang berbeda pula. Setelah objek event dibuat, ia akan diberikan sebagai parameter pada subrutin yang ditugaskan untuk menangani event tersebut. Dengan menulis subrutin ini, programmer bisa memberi tahu apa yang harus dilakukan jika mouse diklik atau keyboard ditekan, misalnya.
Sebagai programmer Java, kita hanya melihat even dari sisi yang lebih umum. Banyak sekali hal yang terjadi antara tombol ditekan hingga subrutin yang kita buat melakukan tugasnya. Secara garis besar, dalam metode main() kita harus menuliskan perulangan dalam bentuk seperti :
ketika program masih berjalan:
    Tunggu hingga even berikutnya terjadi
    Panggil subrutin untuk menangai event tersebut
Perulangan ini disebut perulangan event. Pada SWT kita harus menulis sendiri perulangan event ini pada metode main() kita dalam bentuk
while (!shell.isDisposed())
    if (!display.readAndDispatch())
        display.sleep();
SWT memiliki dua jenis event, yaitu event tanpa tipe dan event bertipe.
Event tanpa tipe diwakili oleh kelas Event. Kelas ini menyimpan informasi yang berbeda-beda tergantung dari jenis. Akan tetapi secara umum semua event jenis apapun memiliki informasi berikut :
InformasiPenjelasan
displayDisplay di mana event ini terjadi
widgetWidget di mana event ini terjadi
typeJenis event yang terjadi
Jenis event yang terjadi beserta penjelasannya dirangkum dalam tabel berikut ini :
Jenis EventPenjelasan
SWT.KeyDownTombol ditekan
SWT.KeyUpTombol dilepaskan
SWT.MouseDownTombol mouse ditekan
SWT.MouseUpTombol mouse dilepaskan
SWT.MouseMoveMouse berpindah posisi
SWT.MouseEnterMouse masuk ke wilayah klien
SWT.MouseHoverMouse berada di sekitar klien
SWT.MouseExitMouse keluar dari wilayah klien
SWT.MouseDoubleClickMouse di-double click
SWT.PaintSuatu widget diberi perintah untuk menggambar dirinya
SWT.MovePosisi suatu widget berubah
SWT.ResizeUkuran widget berubah
SWT.DisposeWidget dihapus
SWT.SelectionSuatu aksi pemilihan dilakukan dalam widget (misalnya memilih item pada drop down list
SWT.DefaultSelectionAda pilihan awal pada suatu widget
SWT.FocusInWidget menerima fokus dari keyboard
SWT.FocusOutWidget kehilangan fokus dari keyboard
SWT.ExpandItem pada pohon dikembangkan
SWT.CollapseItem pada pohon ditutup
SWT.IconifyJendela Shell diminimasi
SWT.DeiconifyJendela Shell dibuka (restore)
SWT.CloseJendela Shell ditutup (dengan tombol X)
SWT.ShowWidget bisa dilihat
SWT.HideWidget disembunyikan
SWT.ModifyTeks berubah pada suatu kontrol
SWT.VerifyInput teks sedang diverifikasi
SWT.ActivateWidget sedang diaktifkan
SWT.DeactivateWidget dimatikan
SWT.HelpUser meminta pertolongan tentang suatu widget
SWT.DragDetectAksi drag-and-drop dideteksi
SWT.MenuDetectUser menekan tombol kik kanan untuk mengaktifkan menu konteks
SWT.ArmItem pada menu digambarkan
SWT.TraverseNavigasi pada keyboard dideteksi
SWT.HardKeyDownTombol pada hardware ditekan (untuk perangkat genggam)
SWT.HardKeyUpTombol pada hardware dilepas (untuk perangkat genggam)
Suatu event juga bisa memiliki tipe. Artinya event yang dihasilkan merupakan objek bertipe suatu kelas, misalnya MouseEvent, bukan hanya bertipe kelas Event yang jenisnya disimpan dalam variabel tertentu. Event bertipe mengikuti pola JavaBeans standar. Kelas-kelas ini terdapat dalam paket org.eclipse.swt.events
Tabel berikut menggambarkan perbandingan antara event bertipe dan jenis event dari event tanpa tipe.
;tr>
Event BertipeJenis Event Tanpa Tipe
ArmEventSWT.Arm
ControlEventSWT.Move
SWT.Resize
DisposeEventSWT.Dispose
FocusEventSWT.FocusIn
SWT.FocusOut
HelpEventSWT.Help
KeyEventSWT.KeyDown
SWT.KeyUp
MenuEventSWT.Hide
SWT.Show
ModifyEventSWT.Modify
MouseEventSWT.MouseDoubleClick
SWT.MouseDown
SWT.MouseUp
MouseEventSWT.MouseMove
MouseEventSWT.MouseEnter
SWT.MouseExit
SWT.MouseHover
PaintEventSWT.Paint
SelectionEventSWT.DefaultSelection
SWT.Selection
ShellEventSWT.Activate
SWT.Close
SWT.Deactivate
SWT.Iconify
SWT.Deiconify
TraverseEventSWT.Traverse
TreeEventSWT.Collapse
SWT.Expand
VerifyEventSWT.Verify
Pertanyannya kenapa ada dua jenis event yang berbeda?
Pada versi awal SWT, hanya ada satu jenis yaitu jenis tanpa tipe. Setelah diskusi yang cukup antar beberapa programmer Eclipse, komunitas user SWT dan developernya, maka akhirnya diputuskan untuk menambahkan jenis bertipe seperti pada JavaBeans. Alasannya adalah untuk memudahkan pemrograman SWT bagi programmer yang sudah terlanjur terbiasa dengan AWT/Swing. Jenis tanpa tipe masih tetap ada seperti biasa.

Tidak ada komentar:

Posting Komentar