/* * Azureus - a Java Bittorrent client * * This program 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 of the License. * * This program 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 ( see the LICENSE file ). * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.gudy.azureus2.plugins.ui.tables; /** * This interface provides access to an Azureus table column. */ public interface TableColumn { /** The cells in this column display textual information. */ public static final int TYPE_TEXT = 1; /** The graphic type, providing access to graphic specific functions in * {@link TableCell}. */ public static final int TYPE_GRAPHIC = 2; /** * The cells in this column display only textual information, and does not * set any other visible properties of cell (background, foreground, icon, * etc). * * Using this type allows azureus to call refresh less, and saves on CPU. */ public static final int TYPE_TEXT_ONLY = 3; /** leading alignment */ public static final int ALIGN_LEAD = 1; /** trailing alignment */ public static final int ALIGN_TRAIL = 2; /** center alignment */ public static final int ALIGN_CENTER = 3; /** For {@link #setPosition(int)}. Make column invisible initially. */ public static final int POSITION_INVISIBLE = -1; /** For {@link #setPosition(int)}. Make column the last column initially. */ public static final int POSITION_LAST = -2; /** Trigger refresh listeners every time a graphic cycle occurs (set by user) */ public static final int INTERVAL_GRAPHIC = -1; /** Trigger refresh listeners every time a GUI update cycle occurs (set by user) */ public static final int INTERVAL_LIVE = -2; /** Trigger refresh only when the cell/row becomes invalid */ public static final int INTERVAL_INVALID_ONLY = -3; /** Initialize a group of variables all at once. Saves on individual setXxx. * * @param iAlignment See {@link #setAlignment(int)} * @param iPosition See {@link #setPosition(int)} * @param iWidth See {@link #setWidth(int)} * @param iInterval See {@link #setRefreshInterval(int)} * * @since 2.1.0.0 */ public void initialize(int iAlignment, int iPosition, int iWidth, int iInterval); /** Initialize a group of variables all at once. Saves on individual setXxx. * * @param iAlignment See {@link #setAlignment(int)} * @param iPosition See {@link #setPosition(int)} * @param iWidth See {@link #setWidth(int)} * * @since 2.1.0.0 */ public void initialize(int iAlignment, int iPosition, int iWidth); /** * The logical name of the column. This was set via * {@link TableManager#createColumn} and can not be changed. * * @return the column name (identification) * * @since 2.1.0.0 */ public String getName(); /** Which table the column will be visible in. This was set via * {@link TableManager#createColumn} and can not be changed. * * @return {@link TableManager}.TABLE_* constant(s) * * @since 2.1.0.0 */ public String getTableID(); /** The type of the contained data.<br> * Current supported types are long, string, and graphic. * <P> * NOTE: This MUST be set BEFORE adding the column to a table. * <br> * The default type is {@link #TYPE_TEXT_ONLY}. * * @param type {@link #TYPE_TEXT}, {@link #TYPE_TEXT_ONLY}, {@link #TYPE_GRAPHIC} * * @since 2.1.0.0 */ public void setType(int type); /** Returns the type of the contained data. * * @return type TYPE_TEXT, or TYPE_GRAPHIC * * @since 2.1.0.0 */ public int getType(); /** The column size. * <P> * NOTE: This MUST be set BEFORE adding the column to a table. * * @param width the size in pixels * * @since 2.1.0.0 */ public void setWidth(int width); /** Returns the column's size * * @return width in pixels * * @since 2.1.0.0 */ public int getWidth(); /** Location to put the column. When set before being added to the UI * (see {@link TableManager#addColumn}), the supplied value will be used * as the default position. If the user has moved the column previously, * the new position will be used, and the default position will be ignored. * * This function cannot be called after you have added the column to a UI * table. In the future, setting the position after adding the column to the * UI table will result in the column being moved. * * @param position Column Number (0 based), POSITION_INVISIBLE or POSITION_LAST * * @since 2.1.0.0 */ public void setPosition(int position); /** Returns the position of the column * * @return Column Number (0 based), POSITION_INVISIBLE or POSITION_LAST * * @since 2.1.0.0 */ public int getPosition(); /** Orientation of the columns text and header. * <P> * NOTE: This MUST be set BEFORE adding the column to a table. * * @param alignment ALIGN_TRAIL, ALIGN_LEAD, or ALIGN_CENTER * * @since 2.1.0.0 */ public void setAlignment(int alignment); /** Returns the alignment of the column * * @return ALIGN_TRAIL, ALIGN_LEAD, or ALIGN_CENTER * * @since 2.1.0.0 */ public int getAlignment(); /** Set how often the cell receives a refresh() trigger * * @param interval INTERVAL_GRAPHIC, INTERVAL_LIVE, INTERVAL_INVALID_ONLY * constants, or an integer based on the user-configurable * "GUI refresh interval". For example, specifying 4 will * result in a refresh trigger every 4 "GUI refresh intervals" * * @since 2.1.0.0 */ public void setRefreshInterval(int interval); /** Returns the refresh interval of the column. * The default is INTERVAL_INVALID_ONLY * * @return INTERVAL_* constant, or a number representing the # of GUI refresh * cycles between each cell refresh call. * * @since 2.1.0.0 */ public int getRefreshInterval(); /** * Sets the minimum width that the column can be before other columns * start collapsing. This may not prevent the user from resizing the column * smaller than specified. * <p> * If not set, the width specified on initialize will be the minimum width * <p> * Not all UIs may have this feature implemented. * * @param minwidth new minumum width * * @since 3.0.0.7 */ public void setMinWidth(int minwidth); /** * Gets the minimum width that the column can be before other columns * start collapsing. * <p> * If not set, the width specified on initialize will be the minimum width * <p> * Not all UIs may have this feature implemented. * * @return minumum width of the column * * @since 3.0.0.7 */ public int getMinWidth(); /** * Sets the maximum width that the column can be * <p> * Not all UIs may have this feature implemented. * * @param maxwidth new maximum width * * @since 3.0.0.7 */ public void setMaxWidth(int maxwidth); /** * Gets the maximum width the column can be * <p> * Not all UIs may have this feature implemented. * * @return maximum width of column * * @since 3.0.0.7 */ public int getMaxWidth(); /** * Sets the minimum and maximum widths in one call * <p> * Not all UIs may have this min and max limits implemented. * * @param min New minimum column width * @param max New maximum column width * * @since 3.0.0.7 */ public void setWidthLimits(int min, int max); /** * Sets whether the max width is automatically set. Depending on the UI, * automatically setting the max width usually results in the maximum width * being grown to fit the largest text set for any cell (past or present). * Therefore, the column will never grow larger than the largest text it * contains or contained. * * @param automaxwidth * * @since 3.0.0.7 */ public void setMaxWidthAuto(boolean automaxwidth); /** * Retrieve whether the max width is automatically being set. * * @return max width auto setting state * * @since 3.0.0.7 */ public boolean isMaxWidthAuto(); /** * Sets whether the min width of the column is automatically set. Depending * on the UI, automatically setting the min width usually results in the * column never shrinking below the maximum text width ever encountered. * * @param autowidth * * @since 3.0.0.7 */ public void setMinWidthAuto(boolean autowidth); /** * Retrieve whether the min width is automatically being set * * @return min width auto setting state * * @since 3.0.0.7 */ public boolean isMinWidthAuto(); /** * Sets the preferred width of the column. When the UI is in auto-expand * mode and space is made available, the columns will first fill to their * preferred width, then to their maximum width. * * @param width New preferred width * * @since 3.0.0.7 */ public void setPreferredWidth(int width); /** * Gets the preferred width of the coloumn. * * @return preferred width * * @since 3.0.0.7 */ public int getPreferredWidth(); /** * Retrieves whether the preferred width is automatically calculated. * * @return preferred width auto calculation state * * @since 3.0.0.7 */ public boolean isPreferredWidthAuto(); /** * Sets whether the preferred with is automatically calculated. An * automatically calculated preferred width will be set to the largest * text width known to that column * * @param auto Preferred Width Auto State * * @since 3.0.0.7 */ public void setPreferredWidthAuto(boolean auto); /** * Gets the visibility of the column * <p> * Not all UIs may have this feature implemented. * * @return Column visibility * * @since 3.0.0.7 */ public boolean isVisible(); /** * Sets the visibility of the column * * @param visible New visibility state * * @since 3.0.0.7 */ public void setVisible(boolean visible); /** Adds a listener that triggers when a TableCell that belongs to this column * needs refreshing. * * @param listener Listener Object to be called when refresh is needed. * * @since 2.1.0.0 */ public void addCellRefreshListener(TableCellRefreshListener listener); /** Removed a previously added TableCellRefreshListener * * @param listener Previously added listener * * @since 2.1.0.0 */ public void removeCellRefreshListener(TableCellRefreshListener listener); /** Adds a listener that triggers when a TableCell that belongs to this column * is being added. * * @param listener Listener Object to be called when refresh is needed. * * @since 2.1.0.0 */ public void addCellAddedListener(TableCellAddedListener listener); public void removeCellAddedListener(TableCellAddedListener listener); /** Adds a listener that triggers when a TableCell that belongs to this column * is being disposed. * * @param listener Listener Object to be called when refresh is needed. * * @since 2.1.0.0 */ public void addCellDisposeListener(TableCellDisposeListener listener); public void removeCellDisposeListener(TableCellDisposeListener listener); /** Adds a listener that triggers when a TableCell that belongs to this column * has a tooltip action * * @param listener Listener Object to be called when refresh is needed. * * @since 2.1.0.2 */ public void addCellToolTipListener(TableCellToolTipListener listener); public void removeCellToolTipListener(TableCellToolTipListener listener); /** * Adds a listener that triggers when a TableCell that belongs to this column * has a mouse event. * * @param listener * * @since 2.3.0.7 */ public void addCellMouseListener(TableCellMouseListener listener); /** Remove a previously added TableCellMouseListener * * @param listener Previously added listener * @since 2.3.0.7 */ public void removeCellMouseListener(TableCellMouseListener listener); /** * A listener is added for every type of cell listener the supplied object * implements * * @param listenerObject Object implementing some cell listeneters * * @since 2.4.0.0 */ public void addListeners(Object listenerObject); /** Invalidate all cells in this column. The cells will be forced to * update on the next refresh. * * @since 2.1.0.0 */ public void invalidateCells(); /** * Invalidates any cells which are linked to the given data source object. * * @since 3.0.1.5 */ public void invalidateCell(Object data_source); /** Adds a Context Menu item to the "This Column" sub menu * * @param resourceKey ID of the context menu, which is also used to retreieve * the textual name from the plugin language file. * * @return a newly created menu item * * @since 2.4.0.0 */ public TableContextMenuItem addContextMenuItem(String resourceKey); /** * Returns whether the column's data will be obfusticated when screen * capturing (for bug reports, etc). * <p> * Currently not fully implemented for plugins * * @return Obfusticated value * * @since 2.4.0.3 */ boolean isObfusticated(); /** * Sets whether the column's data will be obfusticated during a screen * capture (for bug reports, etc). * * @param hideData new state of obfustication * * @since 2.4.0.3 */ void setObfustication(boolean hideData); }