0N/A/*
2362N/A * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/Apackage sun.awt.X11;
0N/A
0N/Aimport java.awt.*;
0N/Aimport java.awt.peer.*;
0N/A
0N/Aimport sun.awt.SunGraphicsCallback;
0N/A
0N/Apublic class XPanelPeer extends XCanvasPeer implements PanelPeer {
0N/A
0N/A XEmbeddingContainer embedder = null; //new XEmbeddingContainer();
0N/A /**
0N/A * Embeds the given window into container using XEmbed protocol
0N/A */
0N/A public void xembed(long window) {
0N/A if (embedder != null) {
0N/A embedder.add(window);
0N/A }
0N/A }
0N/A XPanelPeer() {}
0N/A
0N/A XPanelPeer(XCreateWindowParams params) {
0N/A super(params);
0N/A }
0N/A
0N/A XPanelPeer(Component target) {
0N/A super(target);
0N/A }
0N/A
0N/A void postInit(XCreateWindowParams params) {
0N/A super.postInit(params);
0N/A if (embedder != null) {
0N/A embedder.install(this);
0N/A }
0N/A }
0N/A
0N/A public Insets getInsets() {
0N/A return new Insets(0, 0, 0, 0);
0N/A }
0N/A
0N/A public void paint(Graphics g) {
0N/A super.paint(g);
0N/A /* SunGraphicsCallback.PaintHeavyweightComponentsCallback.getInstance().
0N/A runComponents(((Container)target).getComponents(), g,
0N/A SunGraphicsCallback.LIGHTWEIGHTS |
0N/A SunGraphicsCallback.HEAVYWEIGHTS);
0N/A */ }
0N/A public void print(Graphics g) {
0N/A super.print(g);
0N/A SunGraphicsCallback.PrintHeavyweightComponentsCallback.getInstance().
0N/A runComponents(((Container)target).getComponents(), g,
0N/A SunGraphicsCallback.LIGHTWEIGHTS |
0N/A SunGraphicsCallback.HEAVYWEIGHTS);
0N/A
0N/A }
0N/A
0N/A public void setBackground(Color c) {
0N/A Component comp;
0N/A int i;
0N/A
0N/A Container cont = (Container) target;
0N/A synchronized(target.getTreeLock()) {
0N/A int n = cont.getComponentCount();
0N/A for(i=0; i < n; i++) {
0N/A comp = cont.getComponent(i);
0N/A ComponentPeer peer = comp.getPeer();
0N/A if (peer != null) {
0N/A Color color = comp.getBackground();
0N/A if (color == null || color.equals(c)) {
0N/A peer.setBackground(c);
0N/A }
0N/A }
0N/A }
0N/A }
0N/A super.setBackground(c);
0N/A }
0N/A
0N/A public void setForeground(Color c) {
0N/A setForegroundForHierarchy((Container) target, c);
0N/A }
0N/A
0N/A private void setForegroundForHierarchy(Container cont, Color c) {
0N/A synchronized(target.getTreeLock()) {
0N/A int n = cont.getComponentCount();
0N/A for(int i=0; i < n; i++) {
0N/A Component comp = cont.getComponent(i);
0N/A Color color = comp.getForeground();
0N/A if (color == null || color.equals(c)) {
0N/A ComponentPeer cpeer = comp.getPeer();
0N/A if (cpeer != null) {
0N/A cpeer.setForeground(c);
0N/A }
0N/A if (cpeer instanceof LightweightPeer
0N/A && comp instanceof Container)
0N/A {
0N/A setForegroundForHierarchy((Container) comp, c);
0N/A }
0N/A }
0N/A }
0N/A }
0N/A }
0N/A
0N/A /**
0N/A * DEPRECATED: Replaced by getInsets().
0N/A */
0N/A public Insets insets() {
0N/A return getInsets();
0N/A }
0N/A
0N/A public void dispose() {
0N/A if (embedder != null) {
0N/A embedder.deinstall();
0N/A }
0N/A super.dispose();
0N/A }
0N/A
0N/A protected boolean shouldFocusOnClick() {
0N/A // Return false if this container has children so in that case it won't
0N/A // be focused. Return true otherwise.
0N/A return ((Container)target).getComponentCount() == 0;
0N/A }
0N/A}