~ubuntu-branches/ubuntu/precise/libjcommon-java/precise

« back to all changes in this revision

Viewing changes to source/org/jfree/layout/CenterLayout.java

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2006-10-01 14:12:07 UTC
  • mfrom: (1.1.2 upstream) (4 edgy)
  • mto: This revision was merged to the branch mainline in revision 6.
  • Revision ID: james.westby@ubuntu.com-20061001141207-2aipqlhpmn45t3ng
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* ========================================================================
 
2
 * JCommon : a free general purpose class library for the Java(tm) platform
 
3
 * ========================================================================
 
4
 *
 
5
 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
 
6
 * 
 
7
 * Project Info:  http://www.jfree.org/jcommon/index.html
 
8
 *
 
9
 * This library is free software; you can redistribute it and/or modify it 
 
10
 * under the terms of the GNU Lesser General Public License as published by 
 
11
 * the Free Software Foundation; either version 2.1 of the License, or 
 
12
 * (at your option) any later version.
 
13
 *
 
14
 * This library is distributed in the hope that it will be useful, but 
 
15
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 
16
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
 
17
 * License for more details.
 
18
 *
 
19
 * You should have received a copy of the GNU Lesser General Public
 
20
 * License along with this library; if not, write to the Free Software
 
21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
 
22
 * USA.  
 
23
 *
 
24
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 
25
 * in the United States and other countries.]
 
26
 * 
 
27
 * -----------------
 
28
 * CenterLayout.java
 
29
 * -----------------
 
30
 * (C) Copyright 2000-2005, by Object Refinery Limited.
 
31
 *
 
32
 * Original Author:  David Gilbert (for Object Refinery Limited);
 
33
 * Contributor(s):   -;
 
34
 *
 
35
 * $Id: CenterLayout.java,v 1.6 2005/11/16 15:58:40 taqua Exp $
 
36
 *
 
37
 * Changes (from 5-Nov-2001)
 
38
 * -------------------------
 
39
 * 05-Nov-2001 : Changed package to com.jrefinery.layout.* (DG);
 
40
 * 10-Oct-2002 : Fixed errors reported by Checkstyle (DG);
 
41
 *
 
42
 */
 
43
 
 
44
package org.jfree.layout;
 
45
 
 
46
import java.awt.Component;
 
47
import java.awt.Container;
 
48
import java.awt.Dimension;
 
49
import java.awt.Insets;
 
50
import java.awt.LayoutManager;
 
51
import java.io.Serializable;
 
52
 
 
53
/**
 
54
 * A layout manager that displays a single component in the center of its 
 
55
 * container.
 
56
 *
 
57
 * @author David Gilbert
 
58
 */
 
59
public class CenterLayout implements LayoutManager, Serializable {
 
60
 
 
61
    /** For serialization. */
 
62
    private static final long serialVersionUID = 469319532333015042L;
 
63
    
 
64
    /**
 
65
     * Creates a new layout manager.
 
66
     */
 
67
    public CenterLayout() {
 
68
    }
 
69
 
 
70
    /**
 
71
     * Returns the preferred size.
 
72
     *
 
73
     * @param parent  the parent.
 
74
     *
 
75
     * @return the preferred size.
 
76
     */
 
77
    public Dimension preferredLayoutSize(final Container parent) {
 
78
 
 
79
        synchronized (parent.getTreeLock()) {
 
80
            final Insets insets = parent.getInsets();
 
81
            if (parent.getComponentCount() > 0) {
 
82
                final Component component = parent.getComponent(0);
 
83
                final Dimension d = component.getPreferredSize();
 
84
                return new Dimension(
 
85
                    (int) d.getWidth() + insets.left + insets.right,
 
86
                    (int) d.getHeight() + insets.top + insets.bottom
 
87
                );
 
88
            }
 
89
            else {
 
90
                return new Dimension(
 
91
                    insets.left + insets.right, insets.top + insets.bottom
 
92
                );
 
93
            }
 
94
        }
 
95
 
 
96
    }
 
97
 
 
98
    /**
 
99
     * Returns the minimum size.
 
100
     *
 
101
     * @param parent  the parent.
 
102
     *
 
103
     * @return the minimum size.
 
104
     */
 
105
    public Dimension minimumLayoutSize(final Container parent) {
 
106
 
 
107
        synchronized (parent.getTreeLock()) {
 
108
            final Insets insets = parent.getInsets();
 
109
            if (parent.getComponentCount() > 0) {
 
110
                final Component component = parent.getComponent(0);
 
111
                final Dimension d = component.getMinimumSize();
 
112
                return new Dimension(d.width + insets.left + insets.right,
 
113
                                 d.height + insets.top + insets.bottom);
 
114
            }
 
115
            else {
 
116
              return new Dimension(insets.left + insets.right,
 
117
                                   insets.top + insets.bottom);
 
118
            }
 
119
        }
 
120
 
 
121
    }
 
122
 
 
123
    /**
 
124
     * Lays out the components.
 
125
     *
 
126
     * @param parent  the parent.
 
127
     */
 
128
    public void layoutContainer(final Container parent) {
 
129
 
 
130
        synchronized (parent.getTreeLock()) {
 
131
            if (parent.getComponentCount() > 0) {
 
132
                final Insets insets = parent.getInsets();
 
133
                final Dimension parentSize = parent.getSize();
 
134
                final Component component = parent.getComponent(0);
 
135
                final Dimension componentSize = component.getPreferredSize();
 
136
                final int xx = insets.left + (
 
137
                    Math.max((parentSize.width - insets.left - insets.right
 
138
                                      - componentSize.width) / 2, 0)
 
139
                );
 
140
                final int yy = insets.top + (
 
141
                    Math.max((parentSize.height - insets.top - insets.bottom
 
142
                                      - componentSize.height) / 2, 0));
 
143
                component.setBounds(xx, yy, componentSize.width, 
 
144
                        componentSize.height);
 
145
            }
 
146
        }
 
147
 
 
148
    }
 
149
 
 
150
    /**
 
151
     * Not used.
 
152
     *
 
153
     * @param comp  the component.
 
154
     */
 
155
    public void addLayoutComponent(final Component comp) {
 
156
        // not used.
 
157
    }
 
158
 
 
159
    /**
 
160
     * Not used.
 
161
     *
 
162
     * @param comp  the component.
 
163
     */
 
164
    public void removeLayoutComponent(final Component comp) {
 
165
        // not used
 
166
    }
 
167
 
 
168
    /**
 
169
     * Not used.
 
170
     *
 
171
     * @param name  the component name.
 
172
     * @param comp  the component.
 
173
     */
 
174
    public void addLayoutComponent(final String name, final Component comp) {
 
175
        // not used
 
176
    }
 
177
 
 
178
    /**
 
179
     * Not used.
 
180
     *
 
181
     * @param name  the component name.
 
182
     * @param comp  the component.
 
183
     */
 
184
    public void removeLayoutComponent(final String name, final Component comp) {
 
185
        // not used
 
186
    }
 
187
 
 
188
}