From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../classpath/javax/swing/table/TableColumn.java | 693 +++++++++++++++++++++ 1 file changed, 693 insertions(+) create mode 100644 libjava/classpath/javax/swing/table/TableColumn.java (limited to 'libjava/classpath/javax/swing/table/TableColumn.java') diff --git a/libjava/classpath/javax/swing/table/TableColumn.java b/libjava/classpath/javax/swing/table/TableColumn.java new file mode 100644 index 000000000..8db4bf6d0 --- /dev/null +++ b/libjava/classpath/javax/swing/table/TableColumn.java @@ -0,0 +1,693 @@ +/* TableColumn.java -- + Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package javax.swing.table; + +import java.awt.Component; +import java.awt.Dimension; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.Serializable; + +import javax.swing.event.SwingPropertyChangeSupport; + +/** + * Represents the attributes of a column in a table, including the column index, + * width, minimum width, preferred width and maximum width. + * + * @author Andrew Selkirk + */ +public class TableColumn + implements Serializable +{ + static final long serialVersionUID = -6113660025878112608L; + + /** + * The name for the columnWidth property (this field is + * obsolete and no longer used). Note also that the typo in the value + * string is deliberate, to match the specification. + */ + public static final String COLUMN_WIDTH_PROPERTY = "columWidth"; + + /** + * The name for the headerValue property. + */ + public static final String HEADER_VALUE_PROPERTY = "headerValue"; + + /** + * The name for the headerRenderer property. + */ + public static final String HEADER_RENDERER_PROPERTY = "headerRenderer"; + + /** + * The name for the cellRenderer property. + */ + public static final String CELL_RENDERER_PROPERTY = "cellRenderer"; + + /** + * The index of the corresponding column in the table model. + */ + protected int modelIndex; + + /** + * The identifier for the column. + */ + protected Object identifier; + + /** + * The current width for the column. + */ + protected int width; + + /** + * The minimum width for the column. + */ + protected int minWidth = 15; + + /** + * The preferred width for the column. + */ + private int preferredWidth; + + /** + * The maximum width for the column. + */ + protected int maxWidth = Integer.MAX_VALUE; + + /** + * The renderer for the column header. + */ + protected TableCellRenderer headerRenderer; + + /** + * The value for the column header. + */ + protected Object headerValue; + + /** + * The renderer for the regular cells in this column. + */ + protected TableCellRenderer cellRenderer; + + /** + * An editor for the regular cells in this column. + */ + protected TableCellEditor cellEditor; + + /** + * A flag that determines whether or not the column is resizable (the default + * is true). + */ + protected boolean isResizable = true; + + /** + * resizedPostingDisableCount + * + * @deprecated 1.3 + */ + protected transient int resizedPostingDisableCount; + + /** + * A storage and notification mechanism for property change listeners. + */ + private SwingPropertyChangeSupport changeSupport = + new SwingPropertyChangeSupport(this); + + /** + * Creates a new TableColumn that maps to column 0 in the + * related table model. The default width is 75 units. + */ + public TableColumn() + { + this(0, 75, null, null); + } + + /** + * Creates a new TableColumn that maps to the specified column + * in the related table model. The default width is 75 units. + * + * @param modelIndex the index of the column in the model + */ + public TableColumn(int modelIndex) + { + this(modelIndex, 75, null, null); + } + + /** + * Creates a new TableColumn that maps to the specified column + * in the related table model, and has the specified width. + * + * @param modelIndex the index of the column in the model + * @param width the width + */ + public TableColumn(int modelIndex, int width) + { + this(modelIndex, width, null, null); + } + + /** + * Creates a new TableColumn that maps to the specified column + * in the related table model, and has the specified width, + * cellRenderer and cellEditor. + * + * @param modelIndex the index of the column in the model + * @param width the width + * @param cellRenderer the cell renderer (null permitted). + * @param cellEditor the cell editor (null permitted). + */ + public TableColumn(int modelIndex, int width, + TableCellRenderer cellRenderer, TableCellEditor cellEditor) + { + this.modelIndex = modelIndex; + this.width = width; + this.preferredWidth = width; + this.cellRenderer = cellRenderer; + this.cellEditor = cellEditor; + this.headerValue = null; + this.identifier = null; + } + + /** + * Sets the index of the column in the related {@link TableModel} that this + * TableColumn maps to, and sends a {@link PropertyChangeEvent} + * (with the property name 'modelIndex') to all registered listeners. + * + * @param modelIndex the column index in the model. + * + * @see #getModelIndex() + */ + public void setModelIndex(int modelIndex) + { + if (this.modelIndex != modelIndex) + { + int oldValue = this.modelIndex; + this.modelIndex = modelIndex; + changeSupport.firePropertyChange("modelIndex", oldValue, modelIndex); + } + } + + /** + * Returns the index of the column in the related {@link TableModel} that + * this TableColumn maps to. + * + * @return the model index. + * + * @see #setModelIndex(int) + */ + public int getModelIndex() + { + return modelIndex; + } + + /** + * Sets the identifier for the column and sends a {@link PropertyChangeEvent} + * (with the property name 'identifier') to all registered listeners. + * + * @param identifier the identifier (null permitted). + * + * @see #getIdentifier() + */ + public void setIdentifier(Object identifier) + { + if (this.identifier != identifier) + { + Object oldValue = this.identifier; + this.identifier = identifier; + changeSupport.firePropertyChange("identifier", oldValue, identifier); + } + } + + /** + * Returns the identifier for the column, or {@link #getHeaderValue()} if the + * identifier is null. + * + * @return The identifier (or {@link #getHeaderValue()} if the identifier is + * null). + */ + public Object getIdentifier() + { + if (identifier == null) + return getHeaderValue(); + return identifier; + } + + /** + * Sets the header value and sends a {@link PropertyChangeEvent} (with the + * property name {@link #HEADER_VALUE_PROPERTY}) to all registered listeners. + * + * @param headerValue the value of the header (null permitted). + * + * @see #getHeaderValue() + */ + public void setHeaderValue(Object headerValue) + { + if (this.headerValue == headerValue) + return; + + Object oldValue = this.headerValue; + this.headerValue = headerValue; + changeSupport.firePropertyChange(HEADER_VALUE_PROPERTY, oldValue, + headerValue); + } + + /** + * Returns the header value. + * + * @return the value of the header. + * + * @see #getHeaderValue() + */ + public Object getHeaderValue() + { + return headerValue; + } + + /** + * Sets the renderer for the column header and sends a + * {@link PropertyChangeEvent} (with the property name + * {@link #HEADER_RENDERER_PROPERTY}) to all registered listeners. + * + * @param renderer the header renderer (null permitted). + * + * @see #getHeaderRenderer() + */ + public void setHeaderRenderer(TableCellRenderer renderer) + { + if (headerRenderer == renderer) + return; + + TableCellRenderer oldRenderer = headerRenderer; + headerRenderer = renderer; + changeSupport.firePropertyChange(HEADER_RENDERER_PROPERTY, oldRenderer, + headerRenderer); + } + + /** + * Returns the renderer for the column header. + * + * @return The renderer for the column header (possibly null). + * + * @see #setHeaderRenderer(TableCellRenderer) + */ + public TableCellRenderer getHeaderRenderer() + { + return headerRenderer; + } + + /** + * Sets the renderer for cells in this column and sends a + * {@link PropertyChangeEvent} (with the property name + * {@link #CELL_RENDERER_PROPERTY}) to all registered listeners. + * + * @param renderer the cell renderer (null permitted). + * + * @see #getCellRenderer() + */ + public void setCellRenderer(TableCellRenderer renderer) + { + if (cellRenderer == renderer) + return; + + TableCellRenderer oldRenderer = cellRenderer; + cellRenderer = renderer; + changeSupport.firePropertyChange(CELL_RENDERER_PROPERTY, oldRenderer, + cellRenderer); + } + + /** + * Returns the renderer for the table cells in this column. + * + * @return The cell renderer (possibly null). + * + * @see #setCellRenderer(TableCellRenderer) + */ + public TableCellRenderer getCellRenderer() + { + return cellRenderer; + } + + /** + * Sets the cell editor for the column and sends a {@link PropertyChangeEvent} + * (with the property name 'cellEditor') to all registered listeners. + * + * @param cellEditor the cell editor (null permitted). + * + * @see #getCellEditor() + */ + public void setCellEditor(TableCellEditor cellEditor) + { + if (this.cellEditor != cellEditor) + { + TableCellEditor oldValue = this.cellEditor; + this.cellEditor = cellEditor; + changeSupport.firePropertyChange("cellEditor", oldValue, cellEditor); + } + } + + /** + * Returns the cell editor for the column (the default value is + * null). + * + * @return The cell editor (possibly null). + * + * @see #setCellEditor(TableCellEditor) + */ + public TableCellEditor getCellEditor() + { + return cellEditor; + } + + /** + * Sets the width for the column and sends a {@link PropertyChangeEvent} + * (with the property name 'width') to all registered listeners. If the new + * width falls outside the range getMinWidth() to getMaxWidth() it is + * adjusted to the appropriate boundary value. + * + * @param newWidth the width. + * + * @see #getWidth() + */ + public void setWidth(int newWidth) + { + int oldWidth = width; + + if (newWidth < minWidth) + width = minWidth; + else if (newWidth > maxWidth) + width = maxWidth; + else + width = newWidth; + + if (width == oldWidth) + return; + + // We do have a constant field COLUMN_WIDTH_PROPERTY, + // however, tests show that the actual fired property name is 'width' + // and even Sun's API docs say that this constant field is obsolete and + // not used. + changeSupport.firePropertyChange("width", oldWidth, width); + } + + /** + * Returns the width for the column (the default value is 75). + * + * @return The width. + * + * @see #setWidth(int) + */ + public int getWidth() + { + return width; + } + + /** + * Sets the preferred width for the column and sends a + * {@link PropertyChangeEvent} (with the property name 'preferredWidth') to + * all registered listeners. If necessary, the supplied value will be + * adjusted to fit in the range {@link #getMinWidth()} to + * {@link #getMaxWidth()}. + * + * @param preferredWidth the preferred width. + * + * @see #getPreferredWidth() + */ + public void setPreferredWidth(int preferredWidth) + { + int oldPrefWidth = this.preferredWidth; + + if (preferredWidth < minWidth) + this.preferredWidth = minWidth; + else if (preferredWidth > maxWidth) + this.preferredWidth = maxWidth; + else + this.preferredWidth = preferredWidth; + + changeSupport.firePropertyChange("preferredWidth", oldPrefWidth, + this.preferredWidth); + } + + /** + * Returns the preferred width for the column (the default value is + * 75). + * + * @return The preferred width. + * + * @see #setPreferredWidth(int) + */ + public int getPreferredWidth() + { + return preferredWidth; + } + + /** + * Sets the minimum width for the column and sends a + * {@link PropertyChangeEvent} (with the property name 'minWidth') to all + * registered listeners. If the current width and/or + * preferredWidth are less than the new minimum width, they are + * adjusted accordingly. + * + * @param minWidth the minimum width (negative values are treated as 0). + * + * @see #getMinWidth() + */ + public void setMinWidth(int minWidth) + { + if (minWidth < 0) + minWidth = 0; + if (this.minWidth != minWidth) + { + if (width < minWidth) + setWidth(minWidth); + if (preferredWidth < minWidth) + setPreferredWidth(minWidth); + int oldValue = this.minWidth; + this.minWidth = minWidth; + changeSupport.firePropertyChange("minWidth", oldValue, minWidth); + } + } + + /** + * Returns the TableColumn's minimum width (the default value + * is 15). + * + * @return The minimum width. + * + * @see #setMinWidth(int) + */ + public int getMinWidth() + { + return minWidth; + } + + /** + * Sets the maximum width for the column and sends a + * {@link PropertyChangeEvent} (with the property name 'maxWidth') to all + * registered listeners. If the current width and/or + * preferredWidth are greater than the new maximum width, they + * are adjusted accordingly. + * + * @param maxWidth the maximum width. + * + * @see #getMaxWidth() + */ + public void setMaxWidth(int maxWidth) + { + if (this.maxWidth != maxWidth) + { + if (width > maxWidth) + setWidth(maxWidth); + if (preferredWidth > maxWidth) + setPreferredWidth(maxWidth); + int oldValue = this.maxWidth; + this.maxWidth = maxWidth; + changeSupport.firePropertyChange("maxWidth", oldValue, maxWidth); + } + } + + /** + * Returns the maximum width for the column (the default value is + * {@link Integer#MAX_VALUE}). + * + * @return The maximum width for the column. + * + * @see #setMaxWidth(int) + */ + public int getMaxWidth() + { + return maxWidth; + } + + /** + * Sets the flag that controls whether or not the column is resizable, and + * sends a {@link PropertyChangeEvent} (with the property name 'isResizable') + * to all registered listeners. + * + * @param isResizable true if this column is resizable, + * false otherwise. + * + * @see #getResizable() + */ + public void setResizable(boolean isResizable) + { + if (this.isResizable != isResizable) + { + this.isResizable = isResizable; + changeSupport.firePropertyChange("isResizable", !this.isResizable, + isResizable); + } + } + + /** + * Returns the flag that controls whether or not the column is resizable. + * + * @return true if this column is resizable, + * false otherwise. + * + * @see #setResizable(boolean) + */ + public boolean getResizable() + { + return isResizable; + } + + /** + * Sets the minimum, maximum, preferred and current width to match the + * minimum, maximum and preferred width of the header renderer component. + * If there is no header renderer component, this method does nothing. + */ + public void sizeWidthToFit() + { + if (headerRenderer == null) + return; + Component c = headerRenderer.getTableCellRendererComponent(null, + getHeaderValue(), false, false, 0, 0); + Dimension min = c.getMinimumSize(); + Dimension max = c.getMaximumSize(); + Dimension pref = c.getPreferredSize(); + setMinWidth(min.width); + setMaxWidth(max.width); + setPreferredWidth(pref.width); + setWidth(pref.width); + } + + /** + * This method is empty, unused and deprecated. + * @deprecated 1.3 + */ + public void disableResizedPosting() + { + // Does nothing + } + + /** + * This method is empty, unused and deprecated. + * @deprecated 1.3 + */ + public void enableResizedPosting() + { + // Does nothing + } + + /** + * Adds a listener so that it receives {@link PropertyChangeEvent} + * notifications from this column. The properties defined by the column are: + * + * + * @param listener the listener to add (null is ignored). + * + * @see #removePropertyChangeListener(PropertyChangeListener) + */ + public synchronized void addPropertyChangeListener( + PropertyChangeListener listener) + { + changeSupport.addPropertyChangeListener(listener); + } + + /** + * Removes a listener so that it no longer receives + * {@link PropertyChangeEvent} notifications from this column. If + * listener is not registered with the column, or is + * null, this method does nothing. + * + * @param listener the listener to remove (null is ignored). + */ + public synchronized void removePropertyChangeListener( + PropertyChangeListener listener) + { + changeSupport.removePropertyChangeListener(listener); + } + + /** + * Returns the property change listeners for this TableColumn. + * An empty array is returned if there are currently no listeners registered. + * + * @return The property change listeners registered with this column. + * + * @since 1.4 + */ + public PropertyChangeListener[] getPropertyChangeListeners() + { + return changeSupport.getPropertyChangeListeners(); + } + + /** + * Creates and returns a default renderer for the column header (in this case, + * a new instance of {@link DefaultTableCellRenderer}). + * + * @return A default renderer for the column header. + */ + protected TableCellRenderer createDefaultHeaderRenderer() + { + return new DefaultTableCellRenderer(); + } +} -- cgit v1.2.3