मैं एक जावा ऐप लागू कर रहा हूं जिसमें एक पूर्ववत करें / फिर से करें स्टैक शामिल है। मैंने देखा है कि कुछ एप्लिकेशन (जैसे कि मैक ओएस एक्स पर टेक्स्टएडिट) आपको कुछ टेक्स्ट टाइप करने के बाद एडिट मेनू से "पूर्ववत् टाइपिंग" चुनने देते हैं। मैं उस तरह की चीज़ को अपने ऐप में भी लागू करना चाहता हूं, लेकिन मुझे वास्तव में कठिन समय है कि दिशा-निर्देश मिलें कि यह कैसे व्यवहार करना चाहिए।
कुछ परीक्षण और त्रुटि के साथ, TextEdit के पूर्ववत् टाइपिंग के व्यवहार के बारे में मेरा सबसे अच्छा अनुमान है:
- जब उपयोगकर्ता एक नया वर्ण टाइप करता है (या डिलीट की को टाइप करता है), तो इसे पूर्ववर्ती टाइपिंग आइटम में मर्ज करें यदि कोई अंडरो स्टैक के शीर्ष पर है, जब तक कि निम्न में से कोई एक स्थिति उत्पन्न न हो।
- उपयोगकर्ता द्वारा कम से कम 15 सेकंड की निष्क्रियता के बाद भी टाइप करने के बाद हमेशा एक नया पूर्ववत टंकण आइटम बनाएं
- उपयोगकर्ता की एक विस्तारित अवधि के लिए टाइप करने के बाद हमेशा एक नया पूर्ववत टंकण आइटम बनाएं और कुछ शर्त पूरी की जाती है (यह पता नहीं लगा सकता था कि यह समय आधारित था या वर्ण गणना आधारित)।
- किसी भी पाठ का चयन करने और उसके बाद हटाए जाने या अधिलेखित होने पर (पाठ का चयन करते हुए, परिवर्तन नहीं करने पर, फिर मूल सम्मिलन बिंदु पर वापस लौटकर और इसे जारी रखने के लिए इसे ट्रिगर नहीं करता है) हमेशा एक नया टंकित आइटम बनाएं
व्यवहार में, Apple की रणनीति काम करने लगती है (कम से कम यह मेरे लिए काम करता है जब मैं टाइप करता हूं), लेकिन जैसा कि अंतिम बिंदु द्वारा उल्लेख किया गया है, मैं वास्तव में नियमों का पता लगाने में सक्षम नहीं हूं। इसके अलावा, ऐसा लगता है कि अन्य प्रोग्राम अलग-अलग नियमों का पालन करते हैं, जैसे कि माइक्रोसॉफ्ट वर्ड। Google ने पूर्ववत टंकण के किसी भी कार्यान्वयन के लिए नियमों की एक परिभाषित सूची नहीं दी है और मुझे यह व्यवहार करने के लिए किसी भी सर्वोत्तम व्यवहार में नहीं आया है। तो यह कैसे व्यवहार करना चाहिए? या यह सिर्फ प्रोग्रामर की सनक तक है?
संपादित करें: स्पष्ट करने के लिए, मैं अभी कार्यान्वयन विवरणों में दिलचस्पी नहीं रखता हूं। मैं विशेष रूप से इस बात के लिए उत्सुक हूं कि क्या एक आधिकारिक संदर्भ (जैसे सर्वोत्तम अभ्यास या उपयोगकर्ता इंटरफ़ेस दस्तावेज़) यह या यह वर्णन करता है कि यह कई उत्पादों में कैसे लागू किया गया है।
124<delete>3
, इसे पूर्ववत करना और फिर से करना इसके परिणामस्वरूप होता है 123
। मुझे लगता है कि इसका फायदा यह है कि यह उपयोगकर्ता के पाठ की अंतिम स्थिति में परिणाम करता है, कुछ हद तक उपरोक्त सुझाव जैसा है।