home *** CD-ROM | disk | FTP | other *** search
/ OpenStep (Enterprise) / OpenStepENTCD.toast / OEDEV / DEV.Z / GridChange.m < prev    next >
Text File  |  1995-11-28  |  2KB  |  76 lines

  1. #import "drawundo.h"
  2.  
  3. @interface GridChange(PrivateMethods)
  4.  
  5. @end
  6.  
  7. @implementation GridChange
  8.  
  9. - initGraphicView:aGraphicView
  10. {
  11.     [super init];
  12.     graphicView = aGraphicView;
  13.  
  14.     return self;
  15. }
  16.  
  17. - (NSString *)changeName
  18. {
  19.     return GRID_OP;
  20. }
  21.  
  22. - (void)saveBeforeChange
  23. {
  24.     oldSpacing = [graphicView gridSpacing];
  25.     oldGray = [graphicView gridGray];
  26.     oldVisible = [graphicView gridIsVisible];
  27.     oldEnabled = [graphicView gridIsEnabled]; 
  28. }
  29.  
  30. - (void)undoChange
  31. {
  32.     newSpacing = [graphicView gridSpacing];
  33.     newGray = [graphicView gridGray];
  34.     newVisible = [graphicView gridIsVisible];
  35.     newEnabled = [graphicView gridIsEnabled];
  36.  
  37.     [[self changeManager] disableChanges:self];
  38.     [graphicView setGridSpacing:oldSpacing andGray:oldGray];
  39.     [graphicView setGridVisible:oldVisible];
  40.     [graphicView setGridEnabled:oldEnabled];
  41.     [[self changeManager] enableChanges:self];
  42.     [super undoChange]; 
  43. }
  44.  
  45. - (void)redoChange
  46. {
  47.     [[self changeManager] disableChanges:self];
  48.     [graphicView setGridSpacing:newSpacing andGray:newGray];
  49.     [graphicView setGridVisible:newVisible];
  50.     [graphicView setGridEnabled:newEnabled];
  51.     [[self changeManager] enableChanges:self];
  52.     [super redoChange]; 
  53. }
  54.  
  55. - (BOOL)subsumeChange:change
  56. /*
  57.  * ChangeManager will call subsumeChange: when we are the last 
  58.  * completed change and a new change has just begun. We override
  59.  * the subsumeChange: because we want to consolidate multiple
  60.  * grid changes into a single change. For example, if the user
  61.  * selects the menu item "Show Grid" and then selects the menu
  62.  * item "Turn Grid On", we'll only leave a single GridChange in
  63.  * the ChangeManager's list of changes.Both changes can then be
  64.  * be undone and redone in one action.
  65.  */
  66. {
  67.     if ([change isKindOfClass:[GridChange class]]) {
  68.         [self saveBeforeChange];
  69.         return YES;
  70.     } else {
  71.         return NO;
  72.     }
  73. }
  74.  
  75. @end
  76.