1 /* 2 * Copyright (c) 2011, 2014, 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 #import <Cocoa/Cocoa.h> 27 #import <jni.h> 28 29 #import "GlassHostView.h" 30 #import "GlassFullscreenWindow.h" 31 #import "GlassDragSource.h" 32 #import "GlassAccessible.h" 33 34 // helper class that implements the custom GlassView functionality 35 @interface GlassViewDelegate : NSObject <GlassDragSourceDelegate> 36 { 37 NSView *nsView; 38 jobject jView; 39 40 NSTrackingRectTag trackingRect; 41 42 GlassHostView *parentHost; 43 NSWindow *parentWindow; 44 CGFloat parentWindowAlpha; 45 46 GlassHostView *fullscreenHost; 47 // not nil when the FS mode is initiated with the OS X 10.7 widget 48 NSWindow* nativeFullScreenModeWindow; 49 50 BOOL mouseIsDown; 51 BOOL mouseIsOver; 52 int mouseDownMask; // bit 0 - left, 1 - right, 2 - other button 53 54 BOOL gestureInProgress; 55 56 NSEvent *lastEvent; 57 NSDragOperation dragOperation; 58 NSInteger lastTrackingNumber; 59 60 @public 61 // not nil when we create a new FS window ourselves 62 GlassFullscreenWindow *fullscreenWindow; 63 } 64 65 - (id)initWithView:(NSView*)view withJview:(jobject)jview; 66 67 - (void)viewDidMoveToWindow; 68 - (void)setFrameSize:(NSSize)newSize; 69 - (void)setFrame:(NSRect)frameRect; 70 - (void)updateTrackingAreas; 71 - (void)drawRect:(NSRect)dirtyRect; 72 73 - (void)sendJavaMouseEvent:(NSEvent *)theEvent; 74 - (void)resetMouseTracking; 75 - (void)sendJavaMenuEvent:(NSEvent *)theEvent; 76 - (void)sendJavaKeyEvent:(NSEvent *)event isDown:(BOOL)isDown; 77 - (void)sendJavaModifierKeyEvent:(NSEvent *)theEvent; 78 - (void)sendJavaGestureEvent:(NSEvent *)theEvent type:(int)type; 79 - (void)sendJavaGestureBeginEvent:(NSEvent *)theEvent; 80 - (void)sendJavaGestureEndEvent:(NSEvent *)theEvent; 81 82 - (NSDragOperation)sendJavaDndEvent:(id <NSDraggingInfo>)info type:(jint)type; 83 84 - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal; 85 - (void)startDrag:(NSDragOperation)operation; 86 87 - (BOOL)suppressMouseEnterExitOnMouseDown; 88 89 - (void)enterFullscreenWithAnimate:(BOOL)animate withKeepRatio:(BOOL)keepRatio withHideCursor:(BOOL)hideCursor; 90 - (void)exitFullscreenWithAnimate:(BOOL)animate; 91 - (void)sendJavaFullScreenEvent:(BOOL)entered withNativeWidget:(BOOL)isNative; 92 93 - (void)notifyInputMethod:(id)aString attr:(int)attr length:(int)length cursor:(int)cursor; 94 - (NSRect)getInputMethodCandidatePosRequest:(int)pos; 95 96 - (void)setFrameOrigin:(NSPoint)newOrigin; 97 98 - (jobject)jView; 99 100 - (GlassAccessible*)getAccessible; 101 102 @end