Saya menerapkan aplikasi Java yang mencakup tumpukan Undo / Redo. Saya perhatikan bahwa beberapa aplikasi (seperti TextEdit di Mac OS X) memungkinkan Anda memilih "Undo Typing" dari Edit Menu setelah mengetik beberapa teks. Saya ingin menerapkan hal semacam itu ke dalam aplikasi saya juga, tetapi saya mengalami kesulitan menemukan pedoman tentang bagaimana seharusnya itu berlaku.
Dengan beberapa trial and error, tebakan terbaik saya tentang bagaimana perilaku Mengetik Undo TextEdit adalah:
- Saat pengguna mengetik karakter baru (atau mengetik tombol hapus), gabungkan ke dalam item Penguraian Penguraian sebelumnya jika ada di bagian atas tumpukan Batalkan, kecuali salah satu situasi berikut terjadi
- Selalu buat item Membatalkan Pengetikan baru setelah pengguna terus mengetik setelah setidaknya 15 detik tidak aktif
- Selalu buat item Membatalkan Pengetikan baru setelah pengguna mengetik untuk periode waktu yang lama dan beberapa kondisi terpenuhi (tidak dapat mengetahui apakah ini berdasarkan waktu atau berdasarkan jumlah karakter).
- Selalu buat item Membatalkan Pengetikan baru ketika teks apa pun dipilih dan kemudian dihapus atau ditimpa (memilih teks, tidak melakukan perubahan, kemudian kembali ke titik penyisipan asli dan melanjutkan mengetik tidak memicu ini)
Dalam praktiknya, strategi Apple tampaknya berhasil (setidaknya itu bekerja untuk saya ketika saya mengetik), tetapi seperti yang disebutkan pada poin terakhir, saya belum benar-benar bisa mengetahui aturannya. Selain itu, sepertinya program lain mengikuti aturan yang berbeda, seperti Microsoft Word. Google belum membuat daftar aturan yang ditetapkan untuk penerapan Undo Typing dan saya belum menemukan praktik terbaik apa pun tentang bagaimana seharusnya berperilaku. Jadi bagaimana seharusnya berperilaku? Atau hanya karena keinginan programmer?
EDIT: Hanya untuk memperjelas, saya tidak tertarik dengan detail implementasi sekarang. Saya sangat ingin tahu apakah ada referensi otoritatif (misalnya praktik terbaik atau dokumen antarmuka pengguna) yang menjelaskan hal ini atau deskripsi tentang cara penerapannya di berbagai produk.
124<delete>3
, lalu membatalkan dan mengulang hasilnya 123
. Saya kira keuntungannya adalah ini menghasilkan teks akhir dari pengguna, seperti saran di atas.