|
What this is
Other links
The source code
// $Id: LineLayout.java,v 1.9 2004/08/20 15:59:59 mvw Exp $
// Copyright (c) 2003 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
// and this paragraph appear in all copies. This software program and
// documentation are copyrighted by The Regents of the University of
// California. The software program and documentation are supplied "AS
// IS", without any accompanying services from The Regents. The Regents
// does not warrant that the operation of the program will be
// uninterrupted or error-free. The end-user understands that the program
// was developed for research purposes and is advised not to rely
// exclusively on the program for any reason. IN NO EVENT SHALL THE
// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
/*
* LineLayout.java
*/
package org.argouml.swingext;
import java.awt.*;
/**
* Abstract class for a layout manager that sets all child components
* in a single row or single column. PrefferedSize and MinimumSize are
* calculated.
*
* @author Bob Tarling
*/
public abstract class LineLayout implements LayoutManager2 {
/**
* The horizoontal orientation.
*/
public static final Orientation HORIZONTAL = Horizontal.getInstance();
/**
* The vertical orientation.
*/
public static final Orientation VERTICAL = Vertical.getInstance();
/**
* The orientation for this layout.
*/
private Orientation myOrientation;
/**
* The gap.
*/
private int gap = 0;
/**
* The constructor.
*
* @param o the orientation
*/
public LineLayout(Orientation o) {
myOrientation = o;
}
/**
* @param o the orientation
* @param g the gap
*/
public LineLayout(Orientation o, int g) {
myOrientation = o;
gap = g;
}
/**
* @see java.awt.LayoutManager#addLayoutComponent(java.lang.String,
* java.awt.Component)
*/
public void addLayoutComponent(String name, Component comp) {
}
/**
* @see java.awt.LayoutManager2#addLayoutComponent(java.awt.Component,
* java.lang.Object)
*/
public void addLayoutComponent(Component comp, Object constraints) {
}
/**
* @see java.awt.LayoutManager#removeLayoutComponent(java.awt.Component)
*/
public void removeLayoutComponent(Component comp) {
}
/**
* @see java.awt.LayoutManager#preferredLayoutSize(java.awt.Container)
*/
public Dimension preferredLayoutSize(Container parent) {
int nComps = parent.getComponentCount();
Dimension preferredSize = new Dimension(0, 0);
int myGap = 0;
for (int i = 0; i < nComps; i++) {
Component comp = parent.getComponent(i);
if (comp.isVisible()) {
preferredSize =
myOrientation.addLength(preferredSize,
myOrientation
.getLength(comp.getPreferredSize())
+ myGap);
myGap = gap;
if (myOrientation.getBreadth(comp.getPreferredSize())
> myOrientation.getBreadth(preferredSize))
{
preferredSize =
myOrientation.setBreadth(preferredSize,
comp.getPreferredSize());
}
}
}
preferredSize = DimensionUtility.add(preferredSize, parent.getInsets());
return preferredSize;
}
/**
* @see java.awt.LayoutManager#minimumLayoutSize(java.awt.Container)
*/
public Dimension minimumLayoutSize(Container parent) {
int nComps = parent.getComponentCount();
Dimension minimumSize = new Dimension(0, 0);
int myGap = 0;
for (int i = 0; i < nComps; i++) {
Component comp = parent.getComponent(i);
if (comp.isVisible()) {
minimumSize =
myOrientation.addLength(minimumSize,
myOrientation
.getLength(comp.getMinimumSize())
+ myGap);
myGap = gap;
if (myOrientation.getBreadth(comp.getMinimumSize())
> myOrientation.getBreadth(minimumSize))
{
minimumSize =
myOrientation.setBreadth(minimumSize,
comp.getMinimumSize());
}
}
}
minimumSize = DimensionUtility.add(minimumSize, parent.getInsets());
return minimumSize;
}
/**
* @see java.awt.LayoutManager2#maximumLayoutSize(java.awt.Container)
*/
public Dimension maximumLayoutSize(Container parent) {
int nComps = parent.getComponentCount();
Dimension maximumSize =
new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
int myGap = 0;
for (int i = 0; i < nComps; i++) {
Component comp = parent.getComponent(i);
Dimension componentMaxSize = comp.getMaximumSize();
if (comp.isVisible() && componentMaxSize != null) {
maximumSize =
myOrientation.addLength(maximumSize,
myOrientation
.getLength(componentMaxSize)
+ myGap);
myGap = gap;
if (myOrientation.getBreadth(componentMaxSize)
< myOrientation.getBreadth(maximumSize))
{
maximumSize =
myOrientation.setBreadth(maximumSize, componentMaxSize);
}
}
}
maximumSize = DimensionUtility.add(maximumSize, parent.getInsets());
return maximumSize;
}
/**
* @see java.awt.LayoutManager2#invalidateLayout(java.awt.Container)
*/
public void invalidateLayout(Container target) { }
/**
* @see java.awt.LayoutManager2#getLayoutAlignmentX(java.awt.Container)
*/
public float getLayoutAlignmentX(Container target) { return (float) 0.5; }
/**
* @see java.awt.LayoutManager2#getLayoutAlignmentY(java.awt.Container)
*/
public float getLayoutAlignmentY(Container target) { return (float) 0.5; }
/**
* @return Returns the myOrientation.
*/
protected Orientation getMyOrientation() {
return myOrientation;
}
/**
* @return Returns the gap.
*/
protected int getGap() {
return gap;
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.