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

  1. #import "drawundo.h"
  2.  
  3. @implementation PerformTextGraphicsChange
  4.  
  5. static id editText = nil;
  6. static id editWindow = nil;
  7.  
  8. - initGraphic:aGraphic view:aGraphicView
  9. {
  10.     [super init];
  11.  
  12.     if (editText == nil) {
  13.     editText = [[DrawSpellText alloc] initWithFrame:(NSRect){{0,0},{0,0}}];
  14.     [editText setRichText:YES];
  15.     }
  16.  
  17.     if (editWindow == nil) {
  18.     editWindow = [[NSWindow alloc] init];
  19.     }
  20.  
  21.     graphic = aGraphic;
  22.     graphicView = aGraphicView;
  23.     textChange = nil;
  24.  
  25.     return self;
  26. }
  27.  
  28. - (void)dealloc
  29. {
  30.    [textChange release];
  31.    [super dealloc];
  32. }
  33.  
  34. - (NSString *)changeName
  35. {
  36.     return [textChange changeName];
  37. }
  38.  
  39. - (void)undoChange
  40. {
  41.     NSRect bounds;
  42.  
  43.     [self loadGraphic];
  44.     [textChange undoChange];
  45.     [self unloadGraphic];
  46.     bounds = [graphic bounds];
  47.     [graphicView cache:bounds];
  48.     [[graphicView window] flushWindow];
  49.  
  50.     [super undoChange]; 
  51. }
  52.  
  53. - (void)redoChange
  54. {
  55.     NSRect bounds;
  56.  
  57.     [self loadGraphic];
  58.     [textChange redoChange];
  59.     [self unloadGraphic];
  60.     bounds = [graphic bounds];
  61.     [graphicView cache:bounds];
  62.     [[graphicView window] flushWindow];
  63.  
  64.     [super redoChange]; 
  65. }
  66.  
  67. - (BOOL)incorporateChange:aChange
  68. {
  69.     if (textChange == nil) {
  70.     textChange = aChange;
  71.     return YES;
  72.     } else {
  73.     return NO;
  74.     }
  75. }
  76.  
  77. - (void)loadGraphic
  78. {
  79.     NSRect graphicBounds;
  80.     [editText replaceCharactersInRange:NSMakeRange(0, [[editText string] length]) withRTF:[graphic richTextData]];
  81.     graphicBounds = [graphic bounds];
  82.     [editText setFrame:graphicBounds];
  83.     [editWindow setNextResponder:graphicView]; /* so changes can find our */
  84.                                                /* change manager          */
  85.     [[editWindow contentView] addSubview:editText];
  86.     [editText selectAll:self]; 
  87. }
  88.  
  89. - (void)unloadGraphic
  90. {
  91.     [editWindow setNextResponder:nil];
  92.     [editText removeFromSuperview];
  93.     [editText setSelectedRange:NSMakeRange(0, 0)];
  94.     [graphic setFont:[editText font]];
  95.     [graphic setRichTextData:[editText RTFFromRange:NSMakeRange(0, [[editText string] length])]]; 
  96. }
  97.  
  98. - (NSText *)editText
  99. {
  100.     return editText;
  101. }
  102.  
  103. @end
  104.