01: /*
02: * @(#)GPanelPeer.java 1.15 06/10/10
03: *
04: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
05: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
06: *
07: * This program is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU General Public License version
09: * 2 only, as published by the Free Software Foundation.
10: *
11: * This program is distributed in the hope that it will be useful, but
12: * WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * General Public License version 2 for more details (a copy is
15: * included at /legal/license.txt).
16: *
17: * You should have received a copy of the GNU General Public License
18: * version 2 along with this work; if not, write to the Free Software
19: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20: * 02110-1301 USA
21: *
22: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
23: * Clara, CA 95054 or visit www.sun.com if you need additional
24: * information or have any questions.
25: *
26: */
27:
28: package sun.awt.gtk;
29:
30: import sun.awt.peer.*;
31: import java.awt.*;
32:
33: /**
34: * GContainerPeer.java
35: *
36: * @author Nicholas Allen
37: */
38:
39: class GPanelPeer extends GContainerPeer implements PanelPeer {
40: private int numChildren = 0;
41:
42: GPanelPeer(GToolkit toolkit, Container target) {
43: super (toolkit, target);
44: }
45:
46: protected native void create();
47:
48: final void add(GComponentPeer peer) {
49: // If the component whose peer is being created is a direct child of this container
50: // (ie it is not a heavyweight inside a lightweight) then we need to determine the
51: // position to insert at.
52:
53: if (peer.target.getParent() == target) {
54: // Determine the Z order position of the component being added.
55:
56: Container container = (Container) target;
57: int numComponents = container.getComponentCount();
58: for (int i = 0; i < numComponents; i++) {
59: Component component = container.getComponent(i);
60: if (component == peer.target) {
61: insert(peer, numChildren - i);
62: numChildren++;
63: return;
64: }
65: }
66: } // The peer is not a direct child so it must be in a lightweight hierachy. We add the
67: // peer to the end of the list.
68: else {
69: insert(peer, -1);
70: }
71: }
72:
73: final void remove(GComponentPeer peer) {
74: if (peer.target.getParent() == target) {
75: delete(peer);
76: numChildren--;
77: }
78: }
79:
80: /** Inserts the component's peer into this container at the specified index. If the index is
81: negative then the component will be added at the end of the list. Gtk does not have support
82: for inserting widgets at an arditrary index so we have had to write a custom widget to
83: support this. */
84:
85: private native void insert(GComponentPeer peer, int index);
86:
87: private native void delete(GComponentPeer peer);
88:
89: protected boolean canHavePixmapBackground() {
90: return false;
91: }
92: }
|