001: /*
002: * Copyright 2000,2005 wingS development team.
003: *
004: * This file is part of wingS (http://wingsframework.org).
005: *
006: * wingS is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU Lesser General Public License
008: * as published by the Free Software Foundation; either version 2.1
009: * of the License, or (at your option) any later version.
010: *
011: * Please see COPYING for the complete licence.
012: */
013: package org.wings;
014:
015: import java.util.ArrayList;
016: import java.util.List;
017:
018: /**
019: * Arranges components in a left-to-right or top-to-bottom order.
020: *
021: * @author <a href="mailto:haaf@mercatis.de">Armin Haaf</a>
022: */
023: public class SFlowLayout extends SAbstractLayoutManager {
024: /**
025: * List of layouted components.
026: */
027: protected final List components;
028:
029: /**
030: * Alignment (left, center, right) of components.
031: */
032: protected int align;
033:
034: /**
035: * The horizontal gap (in pixels) specifiying the space
036: * between columns. They can be changed at any time.
037: * This should be a non-negative integer.
038: */
039: protected int hgap = 0;
040:
041: /**
042: * The vertical gap (in pixels) which specifiying the space
043: * between rows. They can be changed at any time.
044: * This should be a non negative integer.
045: */
046: protected int vgap = 0;
047:
048: /**
049: * Creates a new <code>SFlowLayout</code> with horizontal orientation,
050: * center alignment and a default 5-unit horizontal and vertical gap.
051: */
052: public SFlowLayout() {
053: this (SConstants.CENTER_ALIGN);
054: }
055:
056: /**
057: * Creates a new <code>SFlowLayout</code> with horizonal orientation and the
058: * given alignment and a default 5-unit horizontal and vertical gap.
059: *
060: * @param alignment the alignment
061: */
062: public SFlowLayout(int alignment) {
063: this (alignment, 5, 5);
064: }
065:
066: /**
067: * Creates a new <code>SFlowLayout</code> with horizontal orientation and the given alignment
068: * and gaps
069: * @param alignment the alignment
070: * @param hgap the horizontal gap
071: * @param vgap the vertical gap
072: */
073: public SFlowLayout(int alignment, int hgap, int vgap) {
074: components = new ArrayList(2);
075: setAlignment(alignment);
076: setHgap(hgap);
077: setVgap(vgap);
078: }
079:
080: /**
081: * Adds the given component at given index.
082: *
083: * @param c component to add
084: * @param constraint is ignored in this layout manager!
085: * @param index position to add component to
086: */
087: public void addComponent(SComponent c, Object constraint, int index) {
088: components.add(index, c);
089: }
090:
091: public void removeComponent(SComponent c) {
092: components.remove(c);
093: }
094:
095: /**
096: * returns a list of all components
097: *
098: * @return all components
099: */
100: public List getComponents() {
101: return components;
102: }
103:
104: /**
105: * Gets the horizontal gap between components in pixel. Rendered half as margin left and margin right
106: * Some PLAFs might ignore this property.
107: *
108: * @return the horizontal gap between components
109: */
110: public int getHgap() {
111: return hgap;
112: }
113:
114: /**
115: * Sets the horizontal gap between components to the specified value in pixe. Rendered half as margin left and margin right
116: * Some PLAFs might ignore this property.
117: *
118: * @param hgap the horizontal gap between components
119: */
120: public void setHgap(int hgap) {
121: this .hgap = hgap;
122: }
123:
124: /**
125: * Gets the vertical gap between components in pixel. Rendered half as margin top and margin bottom
126: * Some PLAFs might ignore this property.
127: *
128: * @return the vertical gap between components
129: */
130: public int getVgap() {
131: return vgap;
132: }
133:
134: /**
135: * Sets the vertical gap between components to the specified value in pixel.
136: * Rendered half as margin top and margin bottom. Some PLAFs might ignore this property.
137: *
138: * @param vgap the vertical gap between components
139: */
140: public void setVgap(int vgap) {
141: this .vgap = vgap;
142: }
143:
144: /**
145: * returns the component at the given position
146: *
147: * @param i position
148: * @return component
149: */
150: public SComponent getComponentAt(int i) {
151: return (SComponent) components.get(i);
152: }
153:
154: /**
155: * Sets the alignment for this layout. Possible values are
156: * <ul>
157: * <li>{@link org.wings.SConstants#LEFT_ALIGN}
158: * <li>{@link org.wings.SConstants#CENTER_ALIGN}
159: * <li>{@link org.wings.SConstants#RIGHT_ALIGN}
160: * </ul>
161: *
162: * @param a one of the allignment values shown above
163: */
164: public void setAlignment(int a) {
165: align = a;
166: }
167:
168: /**
169: * returns the alignment
170: *
171: * @return alignment
172: */
173: public int getAlignment() {
174: return align;
175: }
176: }
|