home *** CD-ROM | disk | FTP | other *** search
/ OpenStep (Enterprise) / OpenStepENTCD.toast / OEDEV / DEV.Z / Aspect.m < prev    next >
Text File  |  1996-04-17  |  2KB  |  90 lines

  1. /*
  2.         Aspect.m
  3.         TextSizingExample
  4.  
  5.         Author: Mike Ferris
  6.  
  7.     You may freely copy, distribute and reuse the code in this example.
  8.     NeXT disclaims any warranty of any kind, expressed or implied,
  9.     as to its fitness for any particular use.
  10. */
  11.  
  12. #import "Aspect.h"
  13. #import "Controller.h"
  14.  
  15. const float LargeNumberForText = 1.0e7;
  16.  
  17. @implementation Aspect
  18.  
  19. - (id)initWithController:(Controller *)controller {
  20.     self = [super init];
  21.     if (self) {
  22.         _controller = controller;
  23.     }
  24.     return self;
  25. }
  26.  
  27. + (id)aspectWithController:(Controller *)controller {
  28.     Aspect *aspect = [[self alloc] initWithController:controller];
  29.     return [aspect autorelease];
  30. }
  31.  
  32. - (id)init {
  33.     return [self initWithController:nil];
  34. }
  35.  
  36. - (void)dealloc {
  37.     if ([_controller currentAspect] == self) {
  38.         [_controller swapInAspectAtIndex:-1];
  39.     }
  40.     [view release];
  41.     [super dealloc];
  42. }
  43.  
  44. - (Controller *)controller {
  45.     return _controller;
  46. }
  47.  
  48. - (NSString *)aspectName {
  49.     return NSLocalizedString(@"Aspect", @"Default aspect name.");
  50. }
  51.  
  52. - (NSString *)aspectNibName {
  53.     // Aspects that only need the box and create the rest of their stuff programmatically, can just use the default nib.  Aspects with their own nibs should override.
  54.     return @"Aspect";
  55. }
  56.  
  57. - (void)loadNibIfNeeded {
  58.     if (!_nibLoaded) {
  59.         if ([NSBundle loadNibNamed:[self aspectNibName] owner:self]) {
  60.             // We don't want the window, only the view.  So we retain the view and remove it from the window.  Then we can release the window.
  61.             _nibLoaded = YES;
  62.             [view retain];
  63.             [view removeFromSuperview];
  64.             [view setAutoresizesSubviews:YES];
  65.             [view setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
  66.             [view setFrameOrigin:NSMakePoint(0.0, 0.0)];
  67.             [window release];
  68.             window = nil;
  69.             [self didLoadNib];
  70.         } else {
  71.             NSLog(@"Failed to load aspect nib %@.nib for class %@.", [self aspectName], [self class]);
  72.         }
  73.     }
  74. }
  75.  
  76. - (NSView *)aspectView {
  77.     [self loadNibIfNeeded];
  78.     return view;
  79. }
  80.  
  81. - (void)didLoadNib {
  82.     // For subclassers
  83. }
  84.  
  85. - (void)didSwapIn {
  86.     // For subclassers
  87. }
  88.  
  89. @end
  90.