Total Tayangan

JavaS


I made this widget at MyFlashFetish.com.

Sabtu, 04 Desember 2010

Menggunakan Undo dan Redo


Model undo/redo.
Definisi undo dapat dipilah menjadi dua titik pandang yaitu dari titik pandang pengguna dan sistem. Dari titik pandang pengguna, undo bertujuan untuk mendapatkan kembali (recovery) situasi/dokumen masa lampau yang telah dilakukan pengguna. Sedangkan dari titik pandang sistem, undo adalah sebuah fungsi untuk melakukan “sesuatu”. Fungsi ini dipanggil oleh pengguna dengan beberapa cara yaitu melalui tombol mouse, function key atau menu pilihan. Jadi undo merupakan fasilitas yang disediakan oleh sistem untuk membantu pengguna untuk mendapatkan kembali situasi/dokumen masa lampau (Abowd dan Dix,1992).
Dari titik pandang sistem, model undo dibagi menjadi dua kategori yaitu model undo linier dan non-linier. Model undo linier jika hanya dimungkinkan perintah undo/redo sebelum dan sesudahnya. Model undo linier dibatasi oleh jumlah maksimum operasi yang diijinkan. Model undo non-linier memungkinkan pengguna melakukan aksi undo/redo sembarang atau tidak urut. Oleh karena itu, dalam aplikasi multi-pengguna dengan beberapa orang yang menggunakan aplikasi tertentu maka undo non-linier sangat diperlukan.
Pada bagian ini, akan dibahas beberapa model undo/redo yang telah dipublikasikan. Model-model tersebut adalah undo langkah-tunggal (Prakash dan Knister 1992), model undo linier (Teitelman 1978; Archer dan Conway 1981; Linxi dan Habermann 1986), model US&R (undo, skip & redo) yang dikenalkan oleh Vitter (1984), model sejarah undo (Stallman 1985).
2.1.  Model Undo Langkah-Tunggal (Single-step Undo)
Model undo langkah tunggal banyak ditemui dalam software aplikasi Macintosh dan Windows, misalnya editor vi. Model undo ini memungkinkan undo untuk langkah terakhir (Prakash dan Knister 1992). Sebagai contoh, diberikan daftar sejarah operasi yang dilakukan oleh pengguna software:
A    B    C    D    E
Model undo langkah-tunggal hanya dapat membatalkan langkah E dan tidak langkah D. Biasanya yang dapat di-redo pada langkah terakhir (seringkali diimplementasikan sebagai membatalkan langkah undo yang terakhir) sehingga dalam contoh diatas maka yang dapat di-redo adalah E.
Model Undo Linier dan US&R
Model undo linear telah digunakan dalam system Interlisp (Teitelman 1978), COPE (Archer dan Conway 1981) dan Aloe (Linxi dan Habermann 1986).  Model undo linear memungkinkan membatalkan rentetatan operasi yang dibuat dan menjaga penunjuk (pointer) pada langkah undo terakhir. Operasi ini diperlukan agar ketika menjalankan langkah redo tidak ada “sesuatu” yang hilang.

Sebagai contoh, diberikan daftar sejarah operasi yang dilakukan oleh pengguna software:
A    B    C    D    E
Operasi E dan D dapat di-undo, kemudian jika operasi baru misalnya F dilakukan dan operasi D dibuka kembali (redo operasi D), maka daftar sejarah yang baru adalah:


 




Penunjuk mengindikasikan bahwa operasi berikut untuk di-undo adalah D dan E adalah operasi berikut yang dapat di-redo. Perlu dicatat bahwa model ini yaitu langkah undo tidak secara nyata disimpan dalam daftar sejarah. Sehingga, jika jika pengguna ingin kembali pada rentetan operasi asli tanpa F maka ini tidak dimungkinkan. Membatalkan F dimungkinkan, namun kemudian operasi D dan E harus dilakukan secara manual. daripada model linier, model US&R menjaga pohon struktur data  untuk memelihara sejarah sehingga dengan model ini dimungkinkan kembali pada posisi awal dari setiap  titik dalam sejarah (tidak seperti model undo linier). dalam contoh di atas, F dapat disimpan pada cabang pohon yang berbeda dari rentetan D E, sehingga F dan di-undo dan kemudian D dan E dapat di-redo jika diinginkan oleh pengguna.
Model undo sejarah
Model undo sejarah digunakan dalam editor Gnu Emacs (Stallman 1985). Model ini juga dikembangkan oleh Pelaprat, E. & Shapiro, R. B (2002) dalam aplikasi desktop dan lingkungannya.
Model undo sejarah juga menawarkan membatalkan rentetan operasi. Namun model ini berbeda dengan model undo linier dan US&R. Model undo sejarah menambahkan operasi undo ke akhir daftar sejarah. Operasi undo dalam daftar sejarah diperlakukan sebagai sembarang operasi yang lain sehingga memungkinkan pengguna melakukan undo jika diinginkan oleh pengguna. Sebagai contoh, diberikan daftar sejarah:
A    B    C    D    E
Andaikan E di-undo. Maka dalam model sejarah undo, daftar sejarah akan menjadi seperti berikut, dengan  adalah operasi yang membalik efek E.


Jika pengguna ingin melakukan operasi berikutnya katakanlah F, maka daftar sejarah akan menjadi :


Pada titik ini, jika pengguna melakukan dua operasi undo akan menghasilkan daftar sejarah sebagai berikut:


Model sejarah undo mempunyai properti yang manis karena dimungkinkan untuk kembali ke kondisi asal dan tidak ada konflik (dalam aplikasi pengguna-tunggal) karena operasi tidak pernah dilompati.
3.  Desain undo/redo untuk aplikasi grafik dan CAD
Pada aplikasi grafik dan CAD, banyak langkah yang harus dilakukan oleh pengguna berarti banyak data yang terlibat didalamnya. Tantangan utama desain sembarang penyelesaian undo adalah bagaimana menghasilkan efek undo/redo yang benar dalam sembarang langkah (David Chen & Chengzheng Sun,  2001). Jadi, desain undo/redo harus dapat merecord semua langkah yang dilakukan pengguna sehingga jika pengguna ingin mendapatkan kembali dokumen “masa lalu” tidak ada “sesuatu” yang hilang. Besar berkas (data) untuk aplikasi grafik dan CAD biasanya besar (dapat mencapai 1 MB) sehingga tidak disimpan dalam memory (RAM) tetapi disimpan dalam hard-disk. Namun jika semua disimpan di hard-disk maka untuk mendapatkan kembali sejarah “langkah masa lalu” (recovery dokumen) akan cukup lama.
Dalam makalah ini, kita akan memaparkan desain pendekatan yang dibuat yaitu model LUR (Linear, Undo dan Redo). Model ini merupakan kombinasi antara model linier, model US&R dan model sejarah.
            Setiap langkah undo/redo direcord didalam linked-list, dan yang disimpan dalam memory (RAM) adalah kode kunci nama berkas yang unik, manakala data lainnya disimpan dalam hard-disk. Untuk mencapai data undo/redo pada pangkalan data (data base) adalah dengan memilih kode kunci yang sesuai. Kode kunci ini adalah nama berkas undo/redo sementara yang unik.
Katakan terdapat linked-list untuk undo/redo dengan penunjuk menunjuk pada E:


 


kemudian pengguna melakukan undo pada langkah operasi E dan D (penunjuk pada C). Selanjutnya, langkah operasi baru F dilakukan, dan kemudian undo dikerjakan, maka daftar sejarah langkah menjadi:


 

 dengan penunjuk menunjuk kepada langkah C. Jika dilakukan redo, maka penunjuk akan menunjuk kepada langkah F.  Pada sistem yang dikembangkan, yang direcord dalam linked-list adalah nama khusus yang unik sebagai “kode kunci”. Sebagai contoh, nama khusus tersebut adalah A = s3vvpf35.1.tmp; B = s3vvpf35.2.tmp; C = s3vvpf35.3.tmp; D = s3vvpf35.4.tmp; E = s3vvpf35.5.tmp; F = = s3vvpf35.6.tmp.

Proses undo/redo dilakukan dengan
1.    buat linked-list untuk undo/redo.
2.    lakukan undo
3.    lakukan redo
Langkah pertama, buat linked-list untuk undo/redo
i.      Dapatkan dokumen yang sedang aktif (digunakan)
ii.     Siapkan linked-list dengan penunjuk menunjuk pada posisi semasa
iii.   Bina kode kunci dari linked-list. Kode kuncinya adalah nama khusus yang unik
iv.   Sisipkan data dan record linked-list dalam memory
v.    Simpan dokumen yang sedang aktif (digunakan) kedalam “berkas sementara” (temporary file) dengan nama khusus pada (iii)
Proses diatas ditunjukkan oleh Algoritma 1.



 









Langkah kedua yaitu undo. Langkah ini dapat dilakukan jika dan hanya jika didalam linked-list penunjuk menunjukkan pada posisi pada B, C, D ataupun E


 



Kemudian lakukan langkah
i.        dapatkan posisi penunjuk sebelum posisi yang sedang aktif (digunakan)/current position.
ii.       dapatkan nama khusus yang ditunjukkan oleh penunjuk
iii.     hapus dokumen yang sedang aktif (digunakan)
iv.     baca “berkas sementara” yang namanya diperoleh pada (ii)
v.      displaykan
Proses tadi ditunjukkan oleh Algoritma 2.

Langkah ketiga yaitu redo. Langkah ini dapat dilakukan jika dan hanya jika dalam linked-list penunjuk menunjukkan pada posisi pada A, B, C atau D.


 


Kemudian lakukan langkah
i.        dapatkan nama khusus yang ditunjukkan oleh penunjuk
ii.       hapus dokumen yang sedang aktif (digunakan)/current document
iii.     baca “berkas sementara” yang namanya diperoleh pada (ii)
iv.     displaykan

Proses tadi ditunjukkan oleh Algoritma 3.
4.  Implementasi undo/redo untuk aplikasi grafik dan CAD
Model undo/redo LUR di atas diimplementasikan pada sistem yang disebut dengan S-Ray yaitu aplikasi photo-realistic untuk membuat objek 3D dari CAD software menjadi objek yang lebih menarik karena adanya beberapa fasilitas untuk membuatnya menjadi seperti foto. Sistem S-Ray dibangunkan dan dikembangkan dengan menggunakan compiler Microsoft Visual C++ v.6. Gambar 1 menunjukkan objek 3D asal (sebuah mesin). Gambar 2 menunjukkan pengguna melakukan manipulasi dengan memperbesar 2X objek 3D yaitu sebuah mesin (operasi 1, nama berkas sementaranya adalah s3vvj9g7..tmp). Kemudian Gambar 2 menunjukkan pengguna melakukan manipulasi putar 300 objek 3D pada sumbu Y (operasi 2, nama berkas sementaranya adalah s3vvj9g7.1.tmp). Selanjutnya pengguna melakukan manipulasi memindahkan objek 3D pada pojok kanan (operasi 3, nama berkas sementaranya adalah s3vvj9g7.2.tmp) lalu objek 3D dipindahkan lagi ke pojok kiri (operasi 4, nama berkas sementaranya adalah s3vvj9g7.3.tmp). Seterusnya, pengguna melakukan undo dua langkah dan redo satu langkah. Kemudian, pengguna melakukan manipulasi dengan memperkecil 0.5X objek 3D sehingga hasilnya adalah objek 3D seperti pada Gambar 4 dan (nama berkas sementaranya adalah s3vvj9g7.4.tmp).

Tidak ada komentar:

Posting Komentar

Komentar dengan baik ya...

Related Posts Plugin for WordPress, Blogger...

cute