1///////////////////////////////////////////////////////////////////////////////
2// Name:        wx/cocoa/NSWindow.h
3// Purpose:     wxCocoaNSWindow class
4// Author:      David Elliott
5// Modified by:
6// Created:     2003/03/16
7// RCS-ID:      $Id: NSWindow.h 42046 2006-10-16 09:30:01Z ABX $
8// Copyright:   (c) 2003 David Elliott
9// Licence:     wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12#ifndef __WX_COCOA_NSWINDOW_H__
13#define __WX_COCOA_NSWINDOW_H__
14
15#include "wx/hashmap.h"
16#include "wx/cocoa/ObjcAssociate.h"
17
18WX_DECLARE_OBJC_HASHMAP(NSWindow);
19
20class WXDLLEXPORT wxMenuBar;
21class WXDLLEXPORT wxTopLevelWindowCocoa;
22
23DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem);
24DECLARE_WXCOCOA_OBJC_CLASS(wxNSWindowDelegate);
25
26class wxCocoaNSWindow
27{
28/* NSWindow is a rather special case and requires some extra attention */
29    WX_DECLARE_OBJC_INTERFACE_HASHMAP(NSWindow)
30public:
31    void AssociateNSWindow(WX_NSWindow cocoaNSWindow);
32    void DisassociateNSWindow(WX_NSWindow cocoaNSWindow);
33    virtual bool Cocoa_canBecomeKeyWindow(bool &canBecome)
34    {   return false; }
35    virtual bool Cocoa_canBecomeMainWindow(bool &canBecome)
36    {   return false; }
37    virtual bool CocoaDelegate_windowShouldClose(void) = 0;
38    virtual void CocoaDelegate_windowWillClose(void) = 0;
39    virtual void CocoaDelegate_windowDidBecomeKey(void) { }
40    virtual void CocoaDelegate_windowDidResignKey(void) { }
41    virtual void CocoaDelegate_windowDidBecomeMain(void) { }
42    virtual void CocoaDelegate_windowDidResignMain(void) { }
43    virtual void CocoaDelegate_wxMenuItemAction(WX_NSMenuItem menuItem) = 0;
44    virtual bool CocoaDelegate_validateMenuItem(WX_NSMenuItem menuItem) = 0;
45    virtual wxMenuBar* GetAppMenuBar(wxCocoaNSWindow *win);
46    inline wxTopLevelWindowCocoa* GetWxTopLevelWindowCocoa()
47    {   return m_wxTopLevelWindowCocoa; }
48protected:
49    wxCocoaNSWindow(wxTopLevelWindowCocoa *tlw = NULL);
50    virtual ~wxCocoaNSWindow();
51    WX_wxNSWindowDelegate m_cocoaDelegate;
52    wxTopLevelWindowCocoa *m_wxTopLevelWindowCocoa;
53};
54
55#endif // _WX_COCOA_NSWINDOW_H_
56