home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1995 August / NEBULA.bin / SourceCode / Starter / Source / MenuController.m < prev    next >
Encoding:
Text File  |  1994-10-12  |  3.5 KB  |  149 lines

  1.  
  2. /* MenuController.m - written by Robert Vasvari 6/94
  3.    this class is created solely for the purpose of dealing with
  4.    menus */
  5.  
  6. #import "MenuController.h"
  7.  
  8. @implementation MenuController
  9.  
  10.     
  11. - appDidInit:sender
  12. {
  13. id  matrix;
  14.  
  15.     [super appDidInit:sender];
  16.     
  17.     /* take care of the document menu */
  18.     matrix=[documentMenu itemList];
  19.     [[matrix cellAt:2 :0] //save
  20.         setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
  21.     [[matrix cellAt:3 :0] //saveAs
  22.         setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
  23.     [[matrix cellAt:4 :0] //SaveTo
  24.         setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
  25.     [[matrix cellAt:5 :0] //Revert
  26.         setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
  27.     [[matrix cellAt:6 :0] //Close
  28.         setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
  29.  
  30.     /* take care of the window menu */
  31.     [windowsMiniaturize setUpdateAction:
  32.          @selector(updateWindowsMiniaturize:) forMenu:[NXApp windowsMenu]];
  33.     [windowsClose setUpdateAction:
  34.          @selector(updateWindowsClose:) forMenu:[NXApp windowsMenu]];
  35.  
  36. /*    matrix=[toolsMenu itemList];
  37.     [[matrix cellAt:0 :0] setUpdateAction:
  38.          @selector(updateDocMenus:) forMenu:toolsMenu];
  39.     [[matrix cellAt:1 :0] setUpdateAction:
  40.          @selector(updateDocMenus:) forMenu:toolsMenu];
  41.     [[matrix cellAt:2 :0] setUpdateAction:
  42.          @selector(updateDocMenus:) forMenu:toolsMenu];
  43.     [[matrix cellAt:3 :0] setUpdateAction:
  44.          @selector(updateDocMenus:) forMenu:toolsMenu];
  45.     [[matrix cellAt:4 :0] setUpdateAction:
  46.          @selector(updateDocMenus:) forMenu:toolsMenu];
  47. */
  48.  
  49.  
  50.     /* this will fix all of the edit menus */
  51.     matrix=[editMenu itemList];
  52.     [[matrix cellAt:0 :0] setUpdateAction:
  53.          @selector(updateEditMenus:) forMenu:editMenu];
  54.     [[matrix cellAt:1 :0] setUpdateAction:
  55.          @selector(updateEditMenus:) forMenu:editMenu];
  56.     [[matrix cellAt:2 :0] setUpdateAction:
  57.          @selector(updateEditMenus:) forMenu:editMenu];
  58.     [[matrix cellAt:3 :0] setUpdateAction:
  59.          @selector(updateNoteEditMenus:) forMenu:editMenu];
  60.     [[matrix cellAt:4 :0] setUpdateAction:
  61.          @selector(updateNoteEditMenus:) forMenu:editMenu];
  62.  
  63.     return self;
  64. }
  65.  
  66.  
  67. /* menu update methods */
  68.  
  69. - (BOOL)updateDocMenus:aMenuCell
  70. {    if(currentDoc)
  71.      {     if(![aMenuCell isEnabled])
  72.           { [aMenuCell setEnabled:YES];
  73.             return YES;
  74.           }
  75.      }
  76.     else
  77.      {    if([aMenuCell isEnabled])
  78.           { [aMenuCell setEnabled:NO];
  79.             return YES;
  80.           }
  81.      }
  82.     return NO;
  83. }
  84.  
  85. - (BOOL)updateWindowsMiniaturize:aMenuCell
  86. {
  87.     id t;
  88.  
  89.     t = [NXApp calcTargetForAction:[aMenuCell action]];
  90.     if (!t || ([t buttonMask]&NX_MINIATURIZEBUTTONMASK)==0) {
  91.     if ([aMenuCell isEnabled]) {
  92.         [aMenuCell setEnabled:NO];
  93.         return YES;
  94.     }
  95.     }
  96.     else {
  97.     if (![aMenuCell isEnabled]) {
  98.         [aMenuCell setEnabled:YES];
  99.         return YES;
  100.     }
  101.     }
  102.     return NO;
  103. }
  104.  
  105. - (BOOL)updateWindowsClose:aMenuCell
  106. {
  107.     id t;
  108.  
  109.     t = [NXApp calcTargetForAction:[aMenuCell action]];
  110.     if (!t || ([t buttonMask]&NX_CLOSEBUTTONMASK)==0) {
  111.     if ([aMenuCell isEnabled]) {
  112.         [aMenuCell setEnabled:NO];
  113.         return YES;
  114.     }
  115.     }
  116.     else {
  117.     if (![aMenuCell isEnabled]) {
  118.         [aMenuCell setEnabled:YES];
  119.         return YES;
  120.     }
  121.     }
  122.     return NO;
  123. }
  124.  
  125. - (BOOL)updateEditMenus:aMenuCell
  126. {    
  127.     if([[[NXApp keyWindow] firstResponder] respondsTo:@selector(paste:)])
  128.          { if(![aMenuCell isEnabled]) 
  129.              { [aMenuCell setEnabled:YES];
  130.                return YES;
  131.              }
  132.          }
  133.     else
  134.          { if([aMenuCell isEnabled]) 
  135.              { [aMenuCell setEnabled:NO];
  136.                return YES;
  137.              }
  138.          } 
  139.       
  140.     return NO;
  141. }
  142.  
  143. - (BOOL)isDeleteEnabled
  144. {    return [editDelete isEnabled];
  145. }
  146.  
  147.  
  148. @end
  149.