diff options
author | Mark Wielaard <mark@gcc.gnu.org> | 2006-03-10 21:46:48 +0000 |
---|---|---|
committer | Mark Wielaard <mark@gcc.gnu.org> | 2006-03-10 21:46:48 +0000 |
commit | 8aa540d2f783474d1d2e06f16744bf67b9c1facc (patch) | |
tree | ea38c56431c5d4528fb54254c3f8e50f517bede3 /libjava/classpath/javax/swing/text/TableView.java | |
parent | 27079765d00123f8e53d0e1ef7f9d46559266e6d (diff) | |
download | gcc-8aa540d2f783474d1d2e06f16744bf67b9c1facc.zip gcc-8aa540d2f783474d1d2e06f16744bf67b9c1facc.tar.gz gcc-8aa540d2f783474d1d2e06f16744bf67b9c1facc.tar.bz2 |
Imported GNU Classpath 0.90
Imported GNU Classpath 0.90
* scripts/makemake.tcl: Set gnu/java/awt/peer/swing to ignore.
* gnu/classpath/jdwp/VMFrame.java (SIZE): New constant.
* java/lang/VMCompiler.java: Use gnu.java.security.hash.MD5.
* java/lang/Math.java: New override file.
* java/lang/Character.java: Merged from Classpath.
(start, end): Now 'int's.
(canonicalName): New field.
(CANONICAL_NAME, NO_SPACES_NAME, CONSTANT_NAME): New constants.
(UnicodeBlock): Added argument.
(of): New overload.
(forName): New method.
Updated unicode blocks.
(sets): Updated.
* sources.am: Regenerated.
* Makefile.in: Likewise.
From-SVN: r111942
Diffstat (limited to 'libjava/classpath/javax/swing/text/TableView.java')
-rw-r--r-- | libjava/classpath/javax/swing/text/TableView.java | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/libjava/classpath/javax/swing/text/TableView.java b/libjava/classpath/javax/swing/text/TableView.java index d3113b8..2dcb9eb 100644 --- a/libjava/classpath/javax/swing/text/TableView.java +++ b/libjava/classpath/javax/swing/text/TableView.java @@ -54,7 +54,7 @@ import javax.swing.event.DocumentEvent; * * @author Roman Kennke (kennke@aicas.com) */ -public class TableView +public abstract class TableView extends BoxView { @@ -90,6 +90,18 @@ public class TableView public void replace(int offset, int length, View[] views) { super.replace(offset, length, views); + int viewCount = getViewCount(); + if (columnRequirements == null + || viewCount > columnRequirements.length) + { + columnRequirements = new SizeRequirements[viewCount]; + for (int i = 0; i < columnRequirements.length; i++) + columnRequirements[i] = new SizeRequirements(); + } + if (columnOffsets == null || columnOffsets.length < viewCount) + columnOffsets = new int[viewCount]; + if (columnSpans == null || columnSpans.length < viewCount) + columnSpans = new int[viewCount]; layoutChanged(X_AXIS); } @@ -108,8 +120,6 @@ public class TableView protected void layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans) { - // TODO: Maybe prepare columnSpans and columnOffsets. - // Some sanity checks. If these preconditions are not met, then the // following code will not work. Also, there must be something // seriously wrong then. @@ -140,7 +150,7 @@ public class TableView { // FIXME: Figure out how to fetch the row heights from the TableView's // element. - super.layoutMajorAxis(targetSpan, axis, offsets, spans); + super.layoutMinorAxis(targetSpan, axis, offsets, spans); } /** @@ -303,7 +313,7 @@ public class TableView /** * The size requirements of the columns. */ - private SizeRequirements[] columnRequirements; + SizeRequirements[] columnRequirements = new SizeRequirements[0]; /** * Creates a new instance of <code>TableView</code>. @@ -313,15 +323,6 @@ public class TableView public TableView(Element el) { super(el, Y_AXIS); - int numChildren = el.getElementCount(); - View[] rows = new View[numChildren]; - for (int i = 0; i < numChildren; ++i) - { - Element rowEl = el.getElement(i); - TableRow rowView = createTableRow(rowEl); - rows[i] = rowView; - } - replace(0, 0, rows); } /** @@ -385,7 +386,10 @@ public class TableView protected void layoutColumns(int targetSpan, int[] offsets, int spans[], SizeRequirements[] reqs) { - // TODO: Figure out what exactly to do here. + updateColumnRequirements(); + SizeRequirements r = calculateMinorAxisRequirements(X_AXIS, null); + SizeRequirements.calculateTiledPositions(targetSpan, r, columnRequirements, + offsets, spans); } /** @@ -462,4 +466,26 @@ public class TableView // and look for a range that contains the given position. return super.getViewAtPosition(pos, a); } + + /** + * Updates the column requirements. + */ + private void updateColumnRequirements() + { + int rowCount = getViewCount(); + for (int r = 0; r < rowCount; ++r) + { + TableRow row = (TableRow) getView(r); + int columnCount = row.getViewCount(); + for (int c = 0; c < columnCount; ++c) + { + View cell = row.getView(c); + SizeRequirements cr = columnRequirements[c]; + cr.minimum = Math.max(cr.minimum, (int) cell.getMinimumSpan(X_AXIS)); + cr.preferred = Math.max(cr.preferred, + (int) cell.getPreferredSpan(X_AXIS)); + cr.maximum = Math.max(cr.maximum, (int) cell.getMaximumSpan(X_AXIS)); + } + } + } } |