1/*
2 * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26#ifndef _AWTWINDOW_H
27#define _AWTWINDOW_H
28
29#import <Cocoa/Cocoa.h>
30
31#import "CMenuBar.h"
32#import "LWCToolkit.h"
33
34@class AWTView;
35@class JNFWeakJObjectWrapper;
36
37@interface AWTWindow : NSObject <NSWindowDelegate> {
38@private
39    JNFWeakJObjectWrapper *javaPlatformWindow;
40    CMenuBar *javaMenuBar;
41    NSSize javaMinSize;
42    NSSize javaMaxSize;
43    jint styleBits;
44    BOOL isEnabled;
45    NSWindow *nsWindow;
46    AWTWindow *ownerWindow;
47    jint preFullScreenLevel;
48    NSRect standardFrame;
49    BOOL isMinimizing;
50}
51
52// An instance of either AWTWindow_Normal or AWTWindow_Panel
53@property (nonatomic, retain) NSWindow *nsWindow;
54
55@property (nonatomic, retain) JNFWeakJObjectWrapper *javaPlatformWindow;
56@property (nonatomic, retain) CMenuBar *javaMenuBar;
57@property (nonatomic, retain) AWTWindow *ownerWindow;
58@property (nonatomic) NSSize javaMinSize;
59@property (nonatomic) NSSize javaMaxSize;
60@property (nonatomic) jint styleBits;
61@property (nonatomic) BOOL isEnabled;
62@property (nonatomic) jint preFullScreenLevel;
63@property (nonatomic) NSRect standardFrame;
64@property (nonatomic) BOOL isMinimizing;
65
66- (id) initWithPlatformWindow:(JNFWeakJObjectWrapper *)javaPlatformWindow
67                  ownerWindow:owner
68                    styleBits:(jint)styleBits
69                    frameRect:(NSRect)frameRect
70                  contentView:(NSView *)contentView;
71
72- (BOOL) isTopmostWindowUnderMouse;
73
74// NSWindow overrides delegate methods
75- (BOOL) canBecomeKeyWindow;
76- (BOOL) canBecomeMainWindow;
77- (BOOL) worksWhenModal;
78- (void)sendEvent:(NSEvent *)event;
79
80+ (void) setLastKeyWindow:(AWTWindow *)window;
81+ (AWTWindow *) lastKeyWindow;
82
83@end
84
85@interface AWTWindow_Normal : NSWindow
86- (id) initWithDelegate:(AWTWindow *)delegate
87              frameRect:(NSRect)rect
88              styleMask:(NSUInteger)styleMask
89            contentView:(NSView *)view;
90@end
91
92@interface AWTWindow_Panel : NSPanel
93- (id) initWithDelegate:(AWTWindow *)delegate
94              frameRect:(NSRect)rect
95              styleMask:(NSUInteger)styleMask
96            contentView:(NSView *)view;
97@end
98
99#endif _AWTWINDOW_H
100