<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <font face="Georgia">Figuring out what you really want seems like
      the first step...<br>
      <br>
      - if you save successive model states, rolling them back could
      obliterate (part of) someone else's work. Is this really a problem
      - do two people work on the same thing?<br>
      <br>
      - if you save deltas ("I added 2 to bucket 7", e.g.), then you
      could reverse that action leaving changes mage by others in place.
      But, did another user see what was in bucket 7 and make a big
      decision based on that? Perhaps in many applications, but not in
      some.<br>
      <br>
      - if you give a user a copy of the world to play with, how would
      you merge those changes back into the trunk if that were desired
      in the end?<br>
      <br>
      Maybe something like this would work:<br>
      <br>
      - keep a list of modifications as user1 makes them<br>
      - undo as many of the modifications as user1 wishes<br>
      - if user2 ever reads or writes something that user1 has modified,
      then user1's undo stack is truncated at that point. Nothing that
      user2 has seen may be reverted.<br>
      <br>
      Cheers,<br>
      Bob<br>
      <br>
    </font>
    <div class="moz-cite-prefix">On 12/12/13 5:38 PM, Paul DeBruicker
      wrote:<br>
    </div>
    <blockquote cite="mid:1386887919439-4729742.post@n4.nabble.com"
      type="cite">
      <pre wrap="">

Something like that.  I don't know where to find a definition I can point
to.  So to be less vague this is what I have in mind.  

As you both know the back button 'undoes' your navigation on regular links
but can't undo a form submission or ajax requests that change things in the
app.  I'd like to be able to offer a way to undo/redo those too, when
appropriate.  To make experimenting and mistakes less costly for a user.  So
that they do not have to remember what they changed, and when.    


Ideally the undo of the navigation and the undo of the app changes would be
tied either to the back button or just a button on the page.  One canonical
spot for 'undo-ing' things a user does. I know I can't undo things like
sending emails, but I'd like to be able to say: if you spend a half hour
experimenting on this you can get back to where you were exactly before you
started.  


If it were a single user app I could probably get away with keeping a stack
of model states for the user's whole model.  Since it is a  multi-user app
that seems really complicated.  User A's temporary changes may or may not
conflict with user B's permanent changes.  


Maybe, as a first step, what I need is to just let a user make a copy of
their whole model and pretend there is a playground/walled garden/simulator
where a they can do experiments, and then when they're done either let them
adopt the copy as their new model or keep it to mess with later.  


Anyway, if you have any ideas I'd love to hear them.  


Thanks

Paul



Bob Arning-2 wrote
</pre>
      <blockquote type="cite">
        <pre wrap="">maybe something like (from Gimp):


*Strong undo/redo*

By pressing Shift+Ctrl+Z / Shift+Ctrl+Y it is now possible to undo a 
bunch of actions at one time. This is good for experimenting on something!


On 12/12/13 4:05 PM, Philippe Marschall wrote:
</pre>
        <blockquote type="cite">
          <pre wrap="">On Thu, Dec 12, 2013 at 8:09 PM, Paul DeBruicker &amp;lt;
</pre>
        </blockquote>
      </blockquote>
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <pre wrap="">pdebruic@
</pre>
      </blockquote>
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <pre wrap="">&amp;gt; wrote:
</pre>
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">Does anyone have a strategy for implementing strong undo in a Seaside
app?
</pre>
          </blockquote>
          <pre wrap="">What is strong undo?

Cheers
Philippe
_______________________________________________
seaside mailing list

</pre>
        </blockquote>
      </blockquote>
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <pre wrap=""><a class="moz-txt-link-abbreviated" href="mailto:seaside@.squeakfoundation">seaside@.squeakfoundation</a>
</pre>
      </blockquote>
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap=""><a class="moz-txt-link-freetext" href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a>

</pre>
        </blockquote>
        <pre wrap="">

_______________________________________________
seaside mailing list
</pre>
      </blockquote>
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <pre wrap=""><a class="moz-txt-link-abbreviated" href="mailto:seaside@.squeakfoundation">seaside@.squeakfoundation</a>
</pre>
      </blockquote>
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <pre wrap=""><a class="moz-txt-link-freetext" href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a>
</pre>
      </blockquote>
      <pre wrap="">




--
View this message in context: <a class="moz-txt-link-freetext" href="http://forum.world.st/strong-undo-tp4729692p4729742.html">http://forum.world.st/strong-undo-tp4729692p4729742.html</a>
Sent from the Seaside General mailing list archive at Nabble.com.
_______________________________________________
seaside mailing list
<a class="moz-txt-link-abbreviated" href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a>
<a class="moz-txt-link-freetext" href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a>

</pre>
    </blockquote>
    <br>
  </body>
</html>