src/macosx/native/sun/awt/CMenuBar.m

Print this page




  46 + (void) addDefaultHelpMenu;
  47 @end
  48 
  49 @implementation CMenuBar
  50 
  51 + (void)clearMenuBarExcludingAppleMenu_OnAppKitThread:(BOOL) excludingAppleMenu {
  52     AWT_ASSERT_APPKIT_THREAD;
  53     // Remove all Java menus from the main bar.
  54     NSMenu *theMainMenu = [NSApp mainMenu];
  55     NSUInteger i, menuCount = [theMainMenu numberOfItems];
  56 
  57     for (i = menuCount; i > 1; i--) {
  58         NSUInteger index = i-1;
  59 
  60         NSMenuItem *currItem = [theMainMenu itemAtIndex:index];
  61         NSMenu *currMenu = [currItem submenu];
  62 
  63         if (excludingAppleMenu && ![currMenu isJavaMenu]) {
  64             continue;
  65         }
  66 
  67         [theMainMenu removeItemAtIndex:index];
  68     }
  69 
  70     [CMenuBar addDefaultHelpMenu];
  71 }
  72 
  73 + (BOOL) isActiveMenuBar:(CMenuBar *)inMenuBar {
  74     return (sActiveMenuBar == inMenuBar);
  75 }
  76 
  77 - (id) initWithPeer:(jobject)peer {
  78     AWT_ASSERT_APPKIT_THREAD;
  79     self = [super initWithPeer: peer];
  80     if (self) {
  81         fMenuList = [[NSMutableArray alloc] init];
  82     }
  83     return self;
  84 }
  85 
  86 -(void) dealloc {


 137                 NSMenu *menuToAdd = [newMenu menu];
 138                 if ([theMainMenu indexOfItemWithSubmenu:menuToAdd] == -1) {
 139                     [[NSNotificationCenter defaultCenter] postNotificationName:CMenuBarDidReuseItemNotification object:theMainMenu];
 140 
 141                     [currItem setSubmenu:menuToAdd];
 142                     [currItem setTitle:[menuToAdd title]];
 143                     cmenuIndex++;
 144                 }
 145 
 146                 BOOL newEnabledState = [newMenu isEnabled] && !menubar->fModallyDisabled;
 147                 [currItem setEnabled:newEnabledState];
 148             } else {
 149                 [removedMenuArray addObject:[NSNumber numberWithInteger:menuIndex]];
 150             }
 151         }
 152     }
 153 
 154     // Clean up extra items
 155     NSUInteger removedIndex, removedCount = [removedMenuArray count];
 156     for (removedIndex=removedCount; removedIndex > 0; removedIndex--) {
 157         [theMainMenu removeItemAtIndex:[[removedMenuArray objectAtIndex:(removedIndex-1)] integerValue]];



 158     }
 159 
 160     i = cmenuIndex;
 161 
 162     // Add all of the menus in the menu list.
 163     for (; i < newMenuListSize; i++) {
 164         CMenu *newMenu = (CMenu *)[menubar->fMenuList objectAtIndex:i];
 165 
 166         if (newMenu != menubar->fHelpMenu) {
 167             NSArray *args = [NSArray arrayWithObjects:newMenu, [NSNumber numberWithInt:-1], nil];
 168             [menubar nativeAddMenuAtIndex_OnAppKitThread:args];
 169         }
 170     }
 171 
 172     // Add the help menu last.
 173     if (menubar->fHelpMenu) {
 174         NSArray *args = [NSArray arrayWithObjects:menubar->fHelpMenu, [NSNumber numberWithInt:-1], nil];
 175         [menubar nativeAddMenuAtIndex_OnAppKitThread:args];
 176     } else {
 177         [CMenuBar addDefaultHelpMenu];




  46 + (void) addDefaultHelpMenu;
  47 @end
  48 
  49 @implementation CMenuBar
  50 
  51 + (void)clearMenuBarExcludingAppleMenu_OnAppKitThread:(BOOL) excludingAppleMenu {
  52     AWT_ASSERT_APPKIT_THREAD;
  53     // Remove all Java menus from the main bar.
  54     NSMenu *theMainMenu = [NSApp mainMenu];
  55     NSUInteger i, menuCount = [theMainMenu numberOfItems];
  56 
  57     for (i = menuCount; i > 1; i--) {
  58         NSUInteger index = i-1;
  59 
  60         NSMenuItem *currItem = [theMainMenu itemAtIndex:index];
  61         NSMenu *currMenu = [currItem submenu];
  62 
  63         if (excludingAppleMenu && ![currMenu isJavaMenu]) {
  64             continue;
  65         }
  66         [currItem setSubmenu:nil];
  67         [theMainMenu removeItemAtIndex:index];
  68     }
  69 
  70     [CMenuBar addDefaultHelpMenu];
  71 }
  72 
  73 + (BOOL) isActiveMenuBar:(CMenuBar *)inMenuBar {
  74     return (sActiveMenuBar == inMenuBar);
  75 }
  76 
  77 - (id) initWithPeer:(jobject)peer {
  78     AWT_ASSERT_APPKIT_THREAD;
  79     self = [super initWithPeer: peer];
  80     if (self) {
  81         fMenuList = [[NSMutableArray alloc] init];
  82     }
  83     return self;
  84 }
  85 
  86 -(void) dealloc {


 137                 NSMenu *menuToAdd = [newMenu menu];
 138                 if ([theMainMenu indexOfItemWithSubmenu:menuToAdd] == -1) {
 139                     [[NSNotificationCenter defaultCenter] postNotificationName:CMenuBarDidReuseItemNotification object:theMainMenu];
 140 
 141                     [currItem setSubmenu:menuToAdd];
 142                     [currItem setTitle:[menuToAdd title]];
 143                     cmenuIndex++;
 144                 }
 145 
 146                 BOOL newEnabledState = [newMenu isEnabled] && !menubar->fModallyDisabled;
 147                 [currItem setEnabled:newEnabledState];
 148             } else {
 149                 [removedMenuArray addObject:[NSNumber numberWithInteger:menuIndex]];
 150             }
 151         }
 152     }
 153 
 154     // Clean up extra items
 155     NSUInteger removedIndex, removedCount = [removedMenuArray count];
 156     for (removedIndex=removedCount; removedIndex > 0; removedIndex--) {
 157         NSUInteger index = [[removedMenuArray objectAtIndex:(removedIndex-1)] integerValue];
 158         NSMenuItem *currItem = [theMainMenu itemAtIndex:index];
 159         [currItem setSubmenu:nil];
 160         [theMainMenu removeItemAtIndex:index];
 161     }
 162 
 163     i = cmenuIndex;
 164 
 165     // Add all of the menus in the menu list.
 166     for (; i < newMenuListSize; i++) {
 167         CMenu *newMenu = (CMenu *)[menubar->fMenuList objectAtIndex:i];
 168 
 169         if (newMenu != menubar->fHelpMenu) {
 170             NSArray *args = [NSArray arrayWithObjects:newMenu, [NSNumber numberWithInt:-1], nil];
 171             [menubar nativeAddMenuAtIndex_OnAppKitThread:args];
 172         }
 173     }
 174 
 175     // Add the help menu last.
 176     if (menubar->fHelpMenu) {
 177         NSArray *args = [NSArray arrayWithObjects:menubar->fHelpMenu, [NSNumber numberWithInt:-1], nil];
 178         [menubar nativeAddMenuAtIndex_OnAppKitThread:args];
 179     } else {
 180         [CMenuBar addDefaultHelpMenu];