36
37 import javax.swing.*;
38
39 import sun.awt.*;
40 import sun.java2d.SurfaceData;
41 import sun.java2d.opengl.CGLSurfaceData;
42 import sun.lwawt.*;
43 import sun.util.logging.PlatformLogger;
44
45 import com.apple.laf.*;
46 import com.apple.laf.ClientPropertyApplicator.Property;
47 import com.sun.awt.AWTUtilities;
48
49 public class CPlatformWindow extends CFRetainedResource implements PlatformWindow {
50 private native long nativeCreateNSWindow(long nsViewPtr,long ownerPtr, long styleBits, double x, double y, double w, double h);
51 private static native void nativeSetNSWindowStyleBits(long nsWindowPtr, int mask, int data);
52 private static native void nativeSetNSWindowMenuBar(long nsWindowPtr, long menuBarPtr);
53 private static native Insets nativeGetNSWindowInsets(long nsWindowPtr);
54 private static native void nativeSetNSWindowBounds(long nsWindowPtr, double x, double y, double w, double h);
55 private static native void nativeSetNSWindowMinMax(long nsWindowPtr, double minW, double minH, double maxW, double maxH);
56 private static native void nativePushNSWindowToBack(long nsWindowPtr);
57 private static native void nativePushNSWindowToFront(long nsWindowPtr);
58 private static native void nativeSetNSWindowTitle(long nsWindowPtr, String title);
59 private static native void nativeRevalidateNSWindowShadow(long nsWindowPtr);
60 private static native void nativeSetNSWindowMinimizedIcon(long nsWindowPtr, long nsImage);
61 private static native void nativeSetNSWindowRepresentedFilename(long nsWindowPtr, String representedFilename);
62 private static native void nativeSetEnabled(long nsWindowPtr, boolean isEnabled);
63 private static native void nativeSynthesizeMouseEnteredExitedEvents();
64 private static native void nativeDispose(long nsWindowPtr);
65 private static native CPlatformWindow nativeGetTopmostPlatformWindowUnderMouse();
66 private static native void nativeEnterFullScreenMode(long nsWindowPtr);
67 private static native void nativeExitFullScreenMode(long nsWindowPtr);
68
69 // Loger to report issues happened during execution but that do not affect functionality
70 private static final PlatformLogger logger = PlatformLogger.getLogger("sun.lwawt.macosx.CPlatformWindow");
71 private static final PlatformLogger focusLogger = PlatformLogger.getLogger("sun.lwawt.macosx.focus.CPlatformWindow");
72
73 // for client properties
74 public static final String WINDOW_BRUSH_METAL_LOOK = "apple.awt.brushMetalLook";
75 public static final String WINDOW_DRAGGABLE_BACKGROUND = "apple.awt.draggableWindowBackground";
670
671 @Override // PlatformWindow
672 public void toFront() {
673 final long nsWindowPtr = getNSWindowPtr();
674 updateFocusabilityForAutoRequestFocus(false);
675 nativePushNSWindowToFront(nsWindowPtr);
676 updateFocusabilityForAutoRequestFocus(true);
677 }
678
679 @Override
680 public void setResizable(final boolean resizable) {
681 setStyleBits(RESIZABLE, resizable);
682 }
683
684 @Override
685 public void setSizeConstraints(int minW, int minH, int maxW, int maxH) {
686 nativeSetNSWindowMinMax(getNSWindowPtr(), minW, minH, maxW, maxH);
687 }
688
689 @Override
690 public boolean rejectFocusRequest(CausedFocusEvent.Cause cause) {
691 // Cross-app activation requests are not allowed.
692 if (cause != CausedFocusEvent.Cause.MOUSE_EVENT &&
693 !((LWCToolkit)Toolkit.getDefaultToolkit()).isApplicationActive())
694 {
695 focusLogger.fine("the app is inactive, so the request is rejected");
696 return true;
697 }
698 return false;
699 }
700
701 @Override
702 public boolean requestWindowFocus() {
703
704 long ptr = getNSWindowPtr();
705 if (CWrapper.NSWindow.canBecomeMainWindow(ptr)) {
706 CWrapper.NSWindow.makeMainWindow(ptr);
707 }
708 CWrapper.NSWindow.makeKeyAndOrderFront(ptr);
709 return true;
|
36
37 import javax.swing.*;
38
39 import sun.awt.*;
40 import sun.java2d.SurfaceData;
41 import sun.java2d.opengl.CGLSurfaceData;
42 import sun.lwawt.*;
43 import sun.util.logging.PlatformLogger;
44
45 import com.apple.laf.*;
46 import com.apple.laf.ClientPropertyApplicator.Property;
47 import com.sun.awt.AWTUtilities;
48
49 public class CPlatformWindow extends CFRetainedResource implements PlatformWindow {
50 private native long nativeCreateNSWindow(long nsViewPtr,long ownerPtr, long styleBits, double x, double y, double w, double h);
51 private static native void nativeSetNSWindowStyleBits(long nsWindowPtr, int mask, int data);
52 private static native void nativeSetNSWindowMenuBar(long nsWindowPtr, long menuBarPtr);
53 private static native Insets nativeGetNSWindowInsets(long nsWindowPtr);
54 private static native void nativeSetNSWindowBounds(long nsWindowPtr, double x, double y, double w, double h);
55 private static native void nativeSetNSWindowMinMax(long nsWindowPtr, double minW, double minH, double maxW, double maxH);
56 private static native void nativeSetMaximizedBounds(long nsWindowPtr, int x, int y, int w, int h);
57 private static native void nativePushNSWindowToBack(long nsWindowPtr);
58 private static native void nativePushNSWindowToFront(long nsWindowPtr);
59 private static native void nativeSetNSWindowTitle(long nsWindowPtr, String title);
60 private static native void nativeRevalidateNSWindowShadow(long nsWindowPtr);
61 private static native void nativeSetNSWindowMinimizedIcon(long nsWindowPtr, long nsImage);
62 private static native void nativeSetNSWindowRepresentedFilename(long nsWindowPtr, String representedFilename);
63 private static native void nativeSetEnabled(long nsWindowPtr, boolean isEnabled);
64 private static native void nativeSynthesizeMouseEnteredExitedEvents();
65 private static native void nativeDispose(long nsWindowPtr);
66 private static native CPlatformWindow nativeGetTopmostPlatformWindowUnderMouse();
67 private static native void nativeEnterFullScreenMode(long nsWindowPtr);
68 private static native void nativeExitFullScreenMode(long nsWindowPtr);
69
70 // Loger to report issues happened during execution but that do not affect functionality
71 private static final PlatformLogger logger = PlatformLogger.getLogger("sun.lwawt.macosx.CPlatformWindow");
72 private static final PlatformLogger focusLogger = PlatformLogger.getLogger("sun.lwawt.macosx.focus.CPlatformWindow");
73
74 // for client properties
75 public static final String WINDOW_BRUSH_METAL_LOOK = "apple.awt.brushMetalLook";
76 public static final String WINDOW_DRAGGABLE_BACKGROUND = "apple.awt.draggableWindowBackground";
671
672 @Override // PlatformWindow
673 public void toFront() {
674 final long nsWindowPtr = getNSWindowPtr();
675 updateFocusabilityForAutoRequestFocus(false);
676 nativePushNSWindowToFront(nsWindowPtr);
677 updateFocusabilityForAutoRequestFocus(true);
678 }
679
680 @Override
681 public void setResizable(final boolean resizable) {
682 setStyleBits(RESIZABLE, resizable);
683 }
684
685 @Override
686 public void setSizeConstraints(int minW, int minH, int maxW, int maxH) {
687 nativeSetNSWindowMinMax(getNSWindowPtr(), minW, minH, maxW, maxH);
688 }
689
690 @Override
691 public void setMaximizedBounds(int mX, int mY, int mW, int mH) {
692 nativeSetMaximizedBounds(getNSWindowPtr(), mX, mY, mW, mH);
693 }
694
695 @Override
696 public boolean rejectFocusRequest(CausedFocusEvent.Cause cause) {
697 // Cross-app activation requests are not allowed.
698 if (cause != CausedFocusEvent.Cause.MOUSE_EVENT &&
699 !((LWCToolkit)Toolkit.getDefaultToolkit()).isApplicationActive())
700 {
701 focusLogger.fine("the app is inactive, so the request is rejected");
702 return true;
703 }
704 return false;
705 }
706
707 @Override
708 public boolean requestWindowFocus() {
709
710 long ptr = getNSWindowPtr();
711 if (CWrapper.NSWindow.canBecomeMainWindow(ptr)) {
712 CWrapper.NSWindow.makeMainWindow(ptr);
713 }
714 CWrapper.NSWindow.makeKeyAndOrderFront(ptr);
715 return true;
|