1 /*
2  * Copyright (c) 1996, 2018, 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 package sun.awt.windows;
27 
28 import java.awt.Color;
29 import java.awt.Component;
30 import java.awt.Container;
31 import java.awt.Graphics;
32 import java.awt.Insets;
33 import java.awt.SystemColor;
34 import java.awt.peer.PanelPeer;
35 
36 import sun.awt.SunGraphicsCallback;
37 
38 class WPanelPeer extends WCanvasPeer implements PanelPeer {
39 
40     // ComponentPeer overrides
41 
42     @Override
paint(Graphics g)43     public void paint(Graphics g) {
44         super.paint(g);
45         SunGraphicsCallback.PaintHeavyweightComponentsCallback.getInstance().
46             runComponents(((Container)target).getComponents(), g,
47                           SunGraphicsCallback.LIGHTWEIGHTS |
48                           SunGraphicsCallback.HEAVYWEIGHTS);
49     }
50     @Override
print(Graphics g)51     public void print(Graphics g) {
52         super.print(g);
53         SunGraphicsCallback.PrintHeavyweightComponentsCallback.getInstance().
54             runComponents(((Container)target).getComponents(), g,
55                           SunGraphicsCallback.LIGHTWEIGHTS |
56                           SunGraphicsCallback.HEAVYWEIGHTS);
57     }
58 
59     // ContainerPeer (via PanelPeer) implementation
60 
61     @Override
getInsets()62     public Insets getInsets() {
63         return insets_;
64     }
65 
66     // Toolkit & peer internals
67 
68     Insets insets_;
69 
70     static {
initIDs()71         initIDs();
72     }
73 
74     /**
75      * Initialize JNI field IDs
76      */
initIDs()77     private static native void initIDs();
78 
WPanelPeer(Component target)79     WPanelPeer(Component target) {
80         super(target);
81     }
82 
83     @Override
initialize()84     void initialize() {
85         super.initialize();
86         insets_ = new Insets(0,0,0,0);
87 
88         Color c = ((Component)target).getBackground();
89         if (c == null) {
90             c = SystemColor.window;
91             ((Component)target).setBackground(c);
92             setBackground(c);
93         }
94         c = ((Component)target).getForeground();
95         if (c == null) {
96             c = SystemColor.windowText;
97             ((Component)target).setForeground(c);
98             setForeground(c);
99         }
100     }
101 }
102