Come registrare / memorizzare le modifiche?

0

In molti programmi e applicazioni web (incluso lo scambio di stack) il programma è in grado di tornare indietro alle modifiche apportate al pezzo. Il mio problema è simile: voglio essere in grado di memorizzare una "timeline" di modifiche, in cui l'utente può tornare indietro e vedere cosa hanno digitato in un momento specifico / quando le determinate parole digitate. Qual è il modo standard per farlo? Inoltre, in cose come google doc e altri programmi, automaticamente "raggruppano" le azioni insieme (come se cancellassi qualcosa colpendo lo spazio indietro 5 volte, sapesse che stavo cancellando una parola), qualche idea su come farlo?

    
posta sinθ 26.05.2013 - 02:19
fonte

1 risposta

1

in realtà è piuttosto semplice

per ogni azione che l'utente ti fa creare un annullabile con 3 metodi chiave

  • undo () e redo (): per l'annullamento e il ripristino attuali

  • combina (annullabile) che crea un nuovo annullabile del 2 combinato se possono essere combinati (altrimenti null)

    il codice sarà qualcosa come:

    public Undoable combine(Undoable other){
        if(other instanceof UndoType){
            return new UndoType(this.insertedString+((UndoType)other).insertedString),position);
        }
        return null;
    }
    

quindi quando aggiungi l'annullabile allo stack di annullamento controlli con combine dell'ultimo annullabile, se può essere combinato

    
risposta data 26.05.2013 - 03:01
fonte