Sto implementando un'app Java che include uno stack Annulla / Ripristina. Ho notato che alcune app (come TextEdit su Mac OS X) ti consentono di scegliere "Annulla digitazione" dal menu Modifica dopo aver digitato del testo. Vorrei implementare questo genere di cose anche nella mia app, ma sto davvero facendo fatica a trovare le linee guida su come dovrebbe comportarsi.
Con alcune prove ed errori, la mia ipotesi migliore su come si comporta Undo Typing di TextEdit è:
- Quando l'utente digita un nuovo carattere (o digita la chiave di eliminazione), uniscilo al precedente elemento di digitazione Annulla se uno è in cima allo stack Annulla, a meno che non si verifichi una delle seguenti situazioni
- Crea sempre un nuovo elemento Annulla digitazione dopo che l'utente continua a digitare dopo almeno 15 secondi di inattività
- Crea sempre un nuovo elemento Annulla digitazione dopo che l'utente ha digitato per un lungo periodo di tempo e sono soddisfatte alcune condizioni (non è stato possibile capire se si basava sul tempo o sul conteggio dei caratteri).
- Crea sempre un nuovo elemento Annulla digitazione quando viene selezionato qualsiasi testo e quindi eliminato o sovrascritto (selezionando il testo, non apportando una modifica, quindi tornare al punto di inserimento originale e continuare a digitare non lo attiva)
In pratica, la strategia di Apple sembra funzionare (almeno funziona per me quando scrivo), ma come notato dall'ultimo punto, non sono stato davvero in grado di capire le regole. Inoltre, sembra che altri programmi seguano regole diverse, come Microsoft Word. Google non ha creato un elenco definito di regole per l'implementazione di Annulla digitazione e non ho trovato alcuna best practice per come dovrebbe comportarsi. Quindi come dovrebbe comportarsi? O dipende solo dai capricci del programmatore?
EDIT: Solo per chiarire, non sono interessato ai dettagli di implementazione in questo momento. Sono particolarmente curioso di sapere se esiste un riferimento autorevole (ad es. Best practice o documento di interfaccia utente) che descriva questo o una descrizione di come viene implementato su più prodotti.
124<delete>3
, l'annullamento e la ripetizione comporta 123
. Immagino che il vantaggio sia che si traduce nello stato finale del testo dell'utente, un po 'come il suggerimento sopra.