home *** CD-ROM | disk | FTP | other *** search
/ Openstep 4.2 (Developer) / Openstep Developer 4.2.iso / NextDeveloper / Examples / AppKit / ToDo / ToDoCell.m < prev    next >
Encoding:
Text File  |  1996-03-29  |  2.2 KB  |  109 lines

  1. #import "ToDoCell.h"
  2.  
  3. @interface ToDoCell (PrivateMethods)
  4. - (void)_setImage:(ToDoButtonState)aState;
  5. @end
  6.  
  7. @implementation ToDoCell
  8.  
  9. - (id)init
  10. {
  11.     NSString *path;
  12.     [super initTextCell:@""];
  13.  
  14.     triState = notDone;
  15.     [self setButtonType:NSToggleButton];
  16.     [self setImagePosition:NSImageLeft];
  17.     [self setBezeled:YES];
  18.     [self setFont:[NSFont userFontOfSize:12]];
  19.     [self setAlignment:NSRightTextAlignment];
  20.     path = [[NSBundle mainBundle] pathForImageResource:@"X.tiff"];
  21.     doneImage = [[NSImage alloc] initByReferencingFile:path];
  22.     path = [[NSBundle mainBundle] pathForImageResource:@"checkMark.tiff"];
  23.     deferredImage = [[NSImage alloc] initByReferencingFile:path];
  24.  
  25.     return self;
  26. }
  27.  
  28. - (void)dealloc
  29. {
  30.     [doneImage release];
  31.     [deferredImage release];
  32.     if (timeDue) [timeDue release];
  33.  
  34.     [super dealloc];
  35. }
  36.    
  37. - (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView
  38. {
  39.     return YES;
  40. }
  41.  
  42. - (void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView:(NSView *)controlView mouseIsUp:(BOOL)flag
  43. {
  44.     if (flag == YES) {
  45.         [self setTriState:([self triState]+1)];
  46.     }
  47. }
  48.  
  49. - (void)setTriState:(ToDoButtonState)newState
  50. {
  51.     if (newState == deferred+1)
  52.         triState = notDone;
  53.     else
  54.         triState = newState;
  55.     [self _setImage:triState];
  56.  }
  57.  
  58.  
  59. - (void)_setImage:(ToDoButtonState)aState
  60. {
  61.     switch(aState) {
  62.        case notDone: {
  63.            [self setImage:nil];
  64.            break;
  65.        }
  66.        case done: {
  67.            [self setImage:doneImage];
  68.            break;
  69.        }
  70.        case deferred: {
  71.            [self setImage:deferredImage];
  72.            break;
  73.        }
  74.      }
  75.      [(NSControl *)[self controlView] updateCell:self];
  76. }
  77.  
  78. - (ToDoButtonState)triState {return triState;}
  79.  
  80. - (void)setState:(int)val
  81. {
  82. }
  83.  
  84.  
  85. - (int)state
  86. {
  87.     if (triState == deferred)
  88.         return done;
  89.     else
  90.         return (int)triState;
  91. }
  92.  
  93. - (void)setTimeDue:(NSDate *)newTime
  94. {
  95.     if (timeDue)
  96.         [timeDue autorelease];
  97.     if (newTime) {
  98.         timeDue = [newTime copy];
  99.         [self setTitle:[timeDue descriptionWithCalendarFormat:@"%I:%M%p" timeZone:[NSTimeZone localTimeZone] locale:nil]];
  100.     } else {
  101.         timeDue = nil;
  102.         [self setTitle:@"-->"];
  103.     }
  104. }
  105.  
  106. - (NSDate *)timeDue {return timeDue;}
  107.    
  108. @end
  109.