+// ============================================================================
+// @class wxNSMenuItemTarget
+// ============================================================================
+@interface wxNSMenuItemTarget : NSObject
+{
+}
+
+- (void)wxMenuItemAction: (id)sender;
+- (BOOL)validateMenuItem: (id)menuItem;
+@end //interface wxNSMenuItemTarget
+
+@implementation wxNSMenuItemTarget : NSObject
+
+- (void)wxMenuItemAction: (id)sender
+{
+ wxLogTrace(wxTRACE_COCOA,wxT("wxMenuItemAction"));
+ wxMenuItem *item = wxMenuItem::GetFromCocoa(sender);
+ wxCHECK_RET(item,wxT("wxMenuItemAction received but no wxMenuItem exists!"));
+
+ wxMenu *menu = item->GetMenu();
+ wxCHECK_RET(menu,wxT("wxMenuItemAction received but wxMenuItem is not in a wxMenu"));
+ wxMenuBar *menubar = menu->GetMenuBar();
+ if(menubar)
+ {
+ wxFrame *frame = menubar->GetFrame();
+ wxCHECK_RET(frame, wxT("wxMenuBar MUST be attached to a wxFrame!"));
+ frame->ProcessCommand(item->GetId());
+ }
+}
+
+- (BOOL)validateMenuItem: (id)menuItem
+{
+ // TODO: Do wxWindows validation here and avoid sending during idle time
+ wxLogTrace(wxTRACE_COCOA,wxT("wxMenuItemAction"));
+ wxMenuItem *item = wxMenuItem::GetFromCocoa(menuItem);
+ wxCHECK_MSG(item,NO,wxT("validateMenuItem received but no wxMenuItem exists!"));
+ return item->IsEnabled();
+}
+
+@end //implementation wxNSMenuItemTarget
+