+// ============================================================================
+// @class wxNSMenuItemTarget
+// ============================================================================
+@interface wxNSMenuItemTarget : NSObject
+{
+}
+
+- (void)wxMenuItemAction: (id)sender;
+- (BOOL)validateMenuItem: (id)menuItem;
+@end //interface wxNSMenuItemTarget
+
+@implementation wxNSMenuItemTarget : NSObject
+
+- (void)wxMenuItemAction: (id)sender
+{
+ wxLogDebug("wxMenuItemAction");
+ wxMenuItem *item = wxMenuItem::GetFromCocoa(sender);
+ wxCHECK_RET(item,"wxMenuItemAction received but no wxMenuItem exists!");
+
+ wxMenu *menu = item->GetMenu();
+ wxCHECK_RET(menu,"wxMenuItemAction received but wxMenuItem is not in a wxMenu");
+ wxMenuBar *menubar = menu->GetMenuBar();
+ if(menubar)
+ {
+ wxFrame *frame = menubar->GetFrame();
+ wxCHECK_RET(frame, "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
+ wxLogDebug("wxMenuItemAction");
+ wxMenuItem *item = wxMenuItem::GetFromCocoa(menuItem);
+ wxCHECK_MSG(item,NO,"validateMenuItem received but no wxMenuItem exists!");
+ return item->IsEnabled();
+}
+
+@end //implementation wxNSMenuItemTarget
+