home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Examples / AppKit / Draw / graphicsUndo.subproj / EndEditingGraphicsChange.m < prev    next >
Text File  |  1992-02-09  |  2KB  |  67 lines

  1. #import "drawundo.h"
  2.  
  3. /*
  4.  * This change is created when the user finishes editing a text
  5.  * graphic. Undoing this change inserts the re-inserts the text
  6.  * editing cursor in the text. More significantly, undoing this
  7.  * change swaps the contents of the TextGraphic back into the
  8.  * field editor so that it is ready to edit.
  9.  */
  10.  
  11. @interface EndEditingGraphicsChange(PrivateMethods)
  12.  
  13. @end
  14.  
  15. @implementation EndEditingGraphicsChange
  16.  
  17. - initGraphicView:aGraphicView graphic:aGraphic
  18. {
  19.     [super init];
  20.     graphicView = aGraphicView;
  21.     graphic = aGraphic;
  22.  
  23.     return self;
  24. }
  25.  
  26. - free
  27. {
  28.     if ([self hasBeenDone] && [graphic isEmpty])
  29.         [graphic free];
  30.     return [super free];
  31. }
  32.  
  33. - (const char *)changeName
  34. {
  35.     return NXLocalStringFromTable("Operations", "End Editing", NULL, "The operation of ending the editing process and proceding onto some other operation.");
  36. }
  37.  
  38. - undoChange
  39. {
  40.   " ([graphic isEmpty])
  41.     [graphicView insertGraphic:graphic];
  42.     [graphic prepareFieldEditor];    
  43.     [NXApp startEditMode];
  44.     return [super undoChange];
  45. }
  46.  
  47. - redoChange
  48. {
  49. /* 
  50.  * The order of the next two statements is important.
  51.  * If endEditMode were sent before resignFieldEditor 
  52.  * it would send resetCursor to the document which would
  53.  * make the window the first responder which would end
  54.  * up sending textDidEnd:endChar: to the TextGraphic.
  55.  * Then in the next line we'd send resignFieldEditor to
  56.  * the TextGraphic even though it had already resigned 
  57.  * the field editor.
  58.  */
  59.     [graphic resignFieldEditor];
  60.     [NXApp endEditMode];
  61.     if ([graphic isEmpty])
  62.     [graphicView removeGraphic:graphic];
  63.     return [super redoChange];
  64. }
  65.  
  66. @end
  67.