ฉันกำลังใช้งานแอป Java ที่มี Undo / Redo stack ฉันสังเกตเห็นว่าแอพบางตัว (เช่น TextEdit บน Mac OS X) ให้คุณเลือก "เลิกทำการพิมพ์" จากเมนูแก้ไขหลังจากพิมพ์ข้อความ ฉันต้องการนำสิ่งเหล่านั้นไปใช้ในแอพของฉันด้วย แต่ฉันมีแนวทางในการค้นหาเวลาที่ยากลำบากจริงๆเกี่ยวกับวิธีการทำงานของมัน
ด้วยการทดลองและข้อผิดพลาดการคาดเดาที่ดีที่สุดของฉันเกี่ยวกับวิธีการเลิกทำการพิมพ์ดีดของ TextEdit คือ:
- เมื่อผู้ใช้พิมพ์อักขระใหม่ (หรือพิมพ์คีย์ลบ) ให้รวมเข้าไปในรายการ Undo Typing ก่อนหน้าหากมีอักขระอยู่ที่ด้านบนสุดของ Undo stack ยกเว้นว่ามีเหตุการณ์ใดเหตุการณ์หนึ่งต่อไปนี้เกิดขึ้น
- สร้างรายการเลิกทำการพิมพ์ใหม่หลังจากผู้ใช้พิมพ์ต่อไปหลังจากไม่มีกิจกรรมใด ๆ เป็นเวลาอย่างน้อย 15 วินาที
- สร้างรายการ Undo Typing ใหม่ทุกครั้งหลังจากที่ผู้ใช้พิมพ์เป็นระยะเวลานานและเป็นไปตามเงื่อนไขบางประการ (ไม่ทราบว่าเป็นไปตามเวลาหรือตามจำนวนตัวอักษร)
- สร้างรายการเลิกทำพิมพ์ดีดใหม่เสมอเมื่อเลือกข้อความใด ๆ แล้วลบหรือเขียนทับ (เลือกข้อความไม่ทำการเปลี่ยนแปลงจากนั้นกลับไปที่จุดแทรกดั้งเดิมและพิมพ์ต่อเนื่องไม่ทำให้เกิดสิ่งนี้)
ในทางปฏิบัติกลยุทธ์ของ Apple ดูเหมือนจะใช้งานได้ (อย่างน้อยมันก็ใช้ได้กับฉันเมื่อฉันพิมพ์) แต่ตามที่ระบุไว้ในจุดสุดท้ายฉันไม่สามารถเข้าใจกฎได้อย่างแท้จริง ดูเหมือนว่าโปรแกรมอื่น ๆ จะปฏิบัติตามกฎที่แตกต่างกันเช่น Microsoft Word Google ยังไม่ได้เปิดรายการของกฎที่กำหนดไว้สำหรับการติดตั้ง Undo Typing และฉันไม่ได้พบวิธีปฏิบัติที่ดีที่สุดสำหรับวิธีการทำงานของมัน ดังนั้นมันควรทำอย่างไร? หรือมันขึ้นอยู่กับการแปรเปลี่ยนของโปรแกรมเมอร์?
แก้ไข: เพื่อชี้แจงฉันไม่สนใจรายละเอียดการใช้งานในตอนนี้ ฉันอยากรู้เป็นพิเศษว่าเอกสารอ้างอิงที่เชื่อถือได้ (เช่นแนวปฏิบัติที่ดีที่สุดหรือเอกสารส่วนต่อประสานผู้ใช้) มีอยู่เพื่ออธิบายหรืออธิบายถึงวิธีการนำไปใช้ในผลิตภัณฑ์ต่างๆ
124<delete>3
แล้วการยกเลิกและ redoing 123
ผลใน ฉันเดาว่าข้อดีของสิ่งนี้คือมันส่งผลให้สถานะสุดท้ายของข้อความค่อนข้างคล้ายกับข้อเสนอแนะด้านบน