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

Print this page




  38 - (id)initWithPeer:(jobject)peer {
  39 AWT_ASSERT_APPKIT_THREAD;
  40     // Create the new NSMenu
  41     self = [super initWithPeer:peer asSeparator:[NSNumber numberWithBool:NO]];
  42     if (self) {
  43         fMenu = [NSMenu javaMenuWithTitle:@""];
  44         [fMenu retain];
  45         [fMenu setAutoenablesItems:NO];
  46     }
  47     return self;
  48 }
  49 
  50 - (void)dealloc {
  51     [fMenu release];
  52     fMenu = nil;
  53     [super dealloc];
  54 }
  55 //- (void)finalize { [super finalize]; }
  56 
  57 - (void)addJavaSubmenu:(CMenu *)submenu {
  58 AWT_ASSERT_NOT_APPKIT_THREAD;
  59     [ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) onObject:self withObject:submenu waitUntilDone:YES awtMode:YES];
  60 }
  61 
  62 - (void)addJavaMenuItem:(CMenuItem *)theMenuItem {
  63 AWT_ASSERT_NOT_APPKIT_THREAD;
  64     [ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) onObject:self withObject:theMenuItem waitUntilDone:YES awtMode:YES];
  65 }
  66 
  67 - (void)addNativeItem_OnAppKitThread:(CMenuItem *)itemModified {
  68 AWT_ASSERT_APPKIT_THREAD;
  69     [itemModified addNSMenuItemToMenu:[self menu]];
  70 }
  71 
  72 - (void)setJavaMenuTitle:(NSString *)title {
  73 AWT_ASSERT_NOT_APPKIT_THREAD;
  74 
  75     if (title) {
  76         [ThreadUtilities performOnMainThread:@selector(setNativeMenuTitle_OnAppKitThread:) onObject:self withObject:title waitUntilDone:YES awtMode:YES];
  77     }
  78 }
  79 
  80 - (void)setNativeMenuTitle_OnAppKitThread:(NSString *)title {
  81 AWT_ASSERT_APPKIT_THREAD;
  82 
  83     [fMenu setTitle:title];
  84     // If we are a submenu we need to set our name in the parent menu's menu item.
  85     NSMenu *parent = [fMenu supermenu];
  86     if (parent) {
  87         NSInteger index = [parent indexOfItemWithSubmenu:fMenu];
  88         NSMenuItem *menuItem = [parent itemAtIndex:index];
  89         [menuItem setTitle:title];
  90     }
  91 }
  92 
  93 - (void)addSeparator {
  94     // Nothing calls this, which is good because we need a CMenuItem here.
  95 }
  96 
  97 - (void)deleteJavaItem:(jint)index {
  98 AWT_ASSERT_NOT_APPKIT_THREAD;
  99 
 100     [ThreadUtilities performOnMainThread:@selector(deleteNativeJavaItem_OnAppKitThread:) onObject:self withObject:[NSNumber numberWithInt:index] waitUntilDone:YES awtMode:YES];
 101 }
 102 
 103 - (void)deleteNativeJavaItem_OnAppKitThread:(NSNumber *)number {
 104 AWT_ASSERT_APPKIT_THREAD;
 105 
 106     int n = [number intValue];
 107     if (n < [[self menu] numberOfItems]) {
 108         [[self menu] removeItemAtIndex:n];
 109     }
 110 }
 111 
 112 - (void)addNSMenuItemToMenu:(NSMenu *)inMenu {
 113     if (fMenuItem == nil) return;
 114     [fMenuItem setSubmenu:fMenu];
 115     [inMenu addItem:fMenuItem];
 116 }
 117 
 118 - (NSMenu *)menu {




  38 - (id)initWithPeer:(jobject)peer {
  39 AWT_ASSERT_APPKIT_THREAD;
  40     // Create the new NSMenu
  41     self = [super initWithPeer:peer asSeparator:[NSNumber numberWithBool:NO]];
  42     if (self) {
  43         fMenu = [NSMenu javaMenuWithTitle:@""];
  44         [fMenu retain];
  45         [fMenu setAutoenablesItems:NO];
  46     }
  47     return self;
  48 }
  49 
  50 - (void)dealloc {
  51     [fMenu release];
  52     fMenu = nil;
  53     [super dealloc];
  54 }
  55 //- (void)finalize { [super finalize]; }
  56 
  57 - (void)addJavaSubmenu:(CMenu *)submenu {

  58     [ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) onObject:self withObject:submenu waitUntilDone:YES awtMode:YES];
  59 }
  60 
  61 - (void)addJavaMenuItem:(CMenuItem *)theMenuItem {

  62     [ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) onObject:self withObject:theMenuItem waitUntilDone:YES awtMode:YES];
  63 }
  64 
  65 - (void)addNativeItem_OnAppKitThread:(CMenuItem *)itemModified {
  66 AWT_ASSERT_APPKIT_THREAD;
  67     [itemModified addNSMenuItemToMenu:[self menu]];
  68 }
  69 
  70 - (void)setJavaMenuTitle:(NSString *)title {

  71 
  72     if (title) {
  73         [ThreadUtilities performOnMainThread:@selector(setNativeMenuTitle_OnAppKitThread:) onObject:self withObject:title waitUntilDone:YES awtMode:YES];
  74     }
  75 }
  76 
  77 - (void)setNativeMenuTitle_OnAppKitThread:(NSString *)title {
  78 AWT_ASSERT_APPKIT_THREAD;
  79 
  80     [fMenu setTitle:title];
  81     // If we are a submenu we need to set our name in the parent menu's menu item.
  82     NSMenu *parent = [fMenu supermenu];
  83     if (parent) {
  84         NSInteger index = [parent indexOfItemWithSubmenu:fMenu];
  85         NSMenuItem *menuItem = [parent itemAtIndex:index];
  86         [menuItem setTitle:title];
  87     }
  88 }
  89 
  90 - (void)addSeparator {
  91     // Nothing calls this, which is good because we need a CMenuItem here.
  92 }
  93 
  94 - (void)deleteJavaItem:(jint)index {

  95 
  96     [ThreadUtilities performOnMainThread:@selector(deleteNativeJavaItem_OnAppKitThread:) onObject:self withObject:[NSNumber numberWithInt:index] waitUntilDone:YES awtMode:YES];
  97 }
  98 
  99 - (void)deleteNativeJavaItem_OnAppKitThread:(NSNumber *)number {
 100 AWT_ASSERT_APPKIT_THREAD;
 101 
 102     int n = [number intValue];
 103     if (n < [[self menu] numberOfItems]) {
 104         [[self menu] removeItemAtIndex:n];
 105     }
 106 }
 107 
 108 - (void)addNSMenuItemToMenu:(NSMenu *)inMenu {
 109     if (fMenuItem == nil) return;
 110     [fMenuItem setSubmenu:fMenu];
 111     [inMenu addItem:fMenuItem];
 112 }
 113 
 114 - (NSMenu *)menu {