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];
|