001: /*
002: * @(#)EmbeddedFrame.java 1.15 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027:
028: package sun.awt;
029:
030: import java.awt.*;
031: import sun.awt.peer.ComponentPeer;
032:
033: /**
034: * A generic container used for embedding Java components, usually applets.
035: * An EmbeddedFrame has two related uses:
036: *
037: * . Within a Java-based application, an EmbeddedFrame serves as a sort of
038: * firewall, preventing the contained components or applets from using
039: * getParent() to find parent components, such as menubars.
040: *
041: * . Within a C-based application, an EmbeddedFrame contains a window handle
042: * which was created by the application, which serves as the top-level
043: * Java window. EmbeddedFrames created for this purpose are passed-in a
044: * handle of an existing window created by the application. The window
045: * handle should be of the appropriate native type for a specific
046: * platform, as stored in the pData field of the ComponentPeer.
047: *
048: * @version 1.10, 08/19/02
049: * @author Thomas Ball
050: */
051: public abstract class EmbeddedFrame extends Frame {
052: private static final String base = "embeddedFrame";
053: private boolean isCursorAllowed = false;
054: private static final long serialVersionUID = 2967042741780317130L;
055:
056: protected EmbeddedFrame() {
057: }
058:
059: protected EmbeddedFrame(int handle) {
060: }
061:
062: /**
063: * Block introspection of a parent window by this child.
064: */
065: public Container getParent() {
066: return null;
067: }
068:
069: /**
070: * Block modifying any frame attributes, since they aren't applicable
071: * for EmbeddedFrames.
072: */
073: public void setTitle(String title) {
074: }
075:
076: public void setIconImage(Image image) {
077: }
078:
079: public void setMenuBar(MenuBar mb) {
080: }
081:
082: public void setResizable(boolean resizable) {
083: }
084:
085: public void remove(MenuComponent m) {
086: }
087:
088: public boolean isResizable() {
089: return false;
090: }
091:
092: public void addNotify() {
093: int ncomponents = this .getComponentCount();
094: for (int i = 0; i < ncomponents; i++) {
095: getComponent(i).addNotify();
096: }
097: }
098:
099: // Need a native call to circumvent Component.peer not being public.
100: protected native void setPeer(ComponentPeer p);
101:
102: /**
103: * Sets whether or not Frame.setCursor works for the embedded frame
104: * (currently only used in Win32)
105: */
106: public void setCursorAllowed(boolean isAllowed) {
107: isCursorAllowed = isAllowed;
108: }
109:
110: /**
111: * Is the Frame.setCursor allowed for the embedded frame
112: * (currently only used in Win32)
113: */
114: public boolean isCursorAllowed() {
115: return isCursorAllowed;
116: }
117: }
|