1 /* 2 * Copyright (c) 2012, 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 27 package sun.lwawt.macosx; 28 29 import java.awt.AWTKeyStroke; 30 import java.awt.Toolkit; 31 import java.lang.reflect.InvocationTargetException; 32 33 import sun.awt.EmbeddedFrame; 34 import sun.lwawt.LWWindowPeer; 35 36 /* 37 * The CViewEmbeddedFrame class is used in the SWT_AWT bridge. 38 * This is a part of public API and should not be renamed or moved 39 */ 40 public class CViewEmbeddedFrame extends EmbeddedFrame { 41 42 private final long nsViewPtr; 43 44 private boolean isActive = false; 45 46 public CViewEmbeddedFrame(long nsViewPtr) { 47 this.nsViewPtr = nsViewPtr; 48 } 49 50 @SuppressWarnings("deprecation") 51 @Override 52 public void addNotify() { 53 if (getPeer() == null) { 54 LWCToolkit toolkit = (LWCToolkit) Toolkit.getDefaultToolkit(); 55 setPeer(toolkit.createEmbeddedFrame(this)); 56 } 57 super.addNotify(); 58 } 59 60 public long getEmbedderHandle() { 61 return nsViewPtr; 62 } 63 64 @Override 65 public void registerAccelerator(AWTKeyStroke awtks) { 66 } 67 68 @Override 69 public void unregisterAccelerator(AWTKeyStroke awtks) { 70 } 71 72 public boolean isParentWindowActive() { 73 return isActive; 74 } 75 76 /* 77 * Synthetic event delivery for focus management 78 */ 79 @Override 80 public void synthesizeWindowActivation(boolean activated) { 81 if (isActive != activated) { 82 isActive = activated; 83 ((LWWindowPeer)getPeer()).notifyActivation(activated, null); 84 } 85 } 86 87 /* 88 * Initializes the embedded frame bounds and validates a component. 89 * Designed to be called from the main thread 90 * This method should be called once from the initialization of the SWT_AWT Bridge 91 */ 92 @SuppressWarnings("deprecation") 93 public void validateWithBounds(final int x, final int y, final int width, final int height) { 94 try { 95 LWCToolkit.invokeAndWait(new Runnable() { 96 @Override 97 public void run() { 98 ((LWWindowPeer) getPeer()).setBoundsPrivate(0, 0, width, height); 99 validate(); 100 setVisible(true); 101 } 102 }, this); 103 } catch (InvocationTargetException ex) {} 104 } 105 }