All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.extjs.gxt.ui.client.widget.table.TableColumn Maven / Gradle / Ivy

There is a newer version: 2.3.1-gwt22
Show newest version
/*
 * Ext GWT 2.2.0 - Ext for GWT
 * Copyright(c) 2007-2010, Ext JS, LLC.
 * [email protected]
 * 
 * http://extjs.com/license
 */
package com.extjs.gxt.ui.client.widget.table;

import java.util.Comparator;
import java.util.HashMap;

import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.SortDir;
import com.extjs.gxt.ui.client.event.EventType;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.TableEvent;
import com.extjs.gxt.ui.client.event.TreeTableEvent;
import com.extjs.gxt.ui.client.util.DefaultComparator;
import com.extjs.gxt.ui.client.widget.treegrid.TreeGrid;
import com.extjs.gxt.ui.client.widget.treetable.TreeTable;

/**
 * A column in a Table. Column sizes can be specified as either
 * pixels or percentages. Width values less than or equal to 1 are treated as
 * percentages.
 * 
 * 

* Note: Public members should not be modified after the column is added to a * column model. *

* * @deprecated see @link {@link TreeGrid} */ public class TableColumn { public static final Comparator DEFAULT_COMPARATOR = new DefaultComparator(); protected SortDir sortDir = SortDir.NONE; protected int index; protected int lastWidth; protected TableColumnModel cm; private boolean hidden; private HorizontalAlignment align = HorizontalAlignment.LEFT; private int maxWidth = 500; private int minWidth = 20; private float width = minWidth; private CellRenderer renderer; private boolean resizable = true; private boolean sortable = true; private Comparator comparator; private String id, text; private Object data; private String columnStyle; private HashMap dataMap; /** * Creates a new column instance. * * @param id the column id * @param width the column width, widths that are 1 or less are treated as * percentages */ public TableColumn(String id, float width) { this.id = id; this.text = id; this.width = width; } /** * Creates a new column instance. * * @param id the column id * @param text the column text */ public TableColumn(String id, String text) { this.id = id; this.text = text; } /** * Creates a new column instance. * * @param id the column id * @param text the column text * @param width the width */ public TableColumn(String id, String text, float width) { this(id, text); this.width = width; } /** * Returns the column's alignment. * * @return the alignment */ public HorizontalAlignment getAlignment() { return align; } /** * Returns the columns style name to be applied to the column. * * @return the style name */ public String getColumnStyle() { return columnStyle; } /** * returns the table's comparator. * * @return the comparator */ public Comparator getComparator() { if (comparator == null) return DEFAULT_COMPARATOR; return comparator; } /** * Returns the application defined data associated with the column, or * null if it has not been set. */ public Object getData() { return data; } /** * Returns the application defined property for the given name, or * null if it has not been set. * * @param key the name of the property * @return the value or null if it has not been set */ public Object getData(String key) { if (dataMap == null) return null; return dataMap.get(key); } /** * Returns the column's id. * * @return the id */ public String getId() { return id; } /** * Returns the column's maximum width. * * @return the max width */ public int getMaxWidth() { return maxWidth; } /** * Returns the column's minimum width. * * @return the minimum width */ public int getMinWidth() { return minWidth; } /** * Returns the column's cell rendered. * * @return the cell renderer */ @SuppressWarnings("rawtypes") public CellRenderer getRenderer() { return renderer; } /** * Returns the column's current sort direction. * * @return the sort direction see {@link SortDir} */ public SortDir getSortDir() { return sortDir; } /** * Returns the column's text. * * @return the text */ public String getText() { return text; } /** * Returns the column's width. * * @return the column width */ public float getWidth() { return width; } /** * Returns true if hidden, false otherwise. * * @return the hidden state */ public boolean isHidden() { return hidden; } /** * Returns true if the column is resizable. * * @return the resizable state */ public boolean isResizable() { return resizable; } /** * Returns true if the column is sortable. * * @return the sortable state */ public boolean isSortable() { return sortable; } /** * Sets the column's alignment. Valid values are LEFT, CENTER, and RIGHT. * Default value is LEFT. * * @param align the alignment */ public void setAlignment(HorizontalAlignment align) { this.align = align; } /** * Sets the columns style name. * * @param columnStyle the style name */ public void setColumnStyle(String columnStyle) { this.columnStyle = columnStyle; } /** * Sets the column's comparator. * * @param comparator the comparator */ public void setComparator(Comparator comparator) { this.comparator = comparator; } /** * Sets the application defined column data. * * @param data the widget data */ public void setData(Object data) { this.data = data; } /** * Sets the application defined property with the given name. * * @param key the name of the property * @param data the new value for the property */ public void setData(String key, Object data) { if (dataMap == null) dataMap = new HashMap(); dataMap.put(key, data); } /** * Sets the column's hidden state. * * @param hidden true to hide, false otherwise */ public void setHidden(boolean hidden) { this.hidden = hidden; fireColumnModelEvent(Events.HiddenChange); } /** * Sets the column's maximum width. Default value = 500. * * @param maxWidth the max width */ public void setMaxWidth(int maxWidth) { this.maxWidth = maxWidth; } /** * Sets the column's minimum width. Default value is 20. * * @param minWidth the min width */ public void setMinWidth(int minWidth) { this.minWidth = minWidth; } /** * Sets the column's cell renderer. * * @param renderer the cell renderer */ @SuppressWarnings({"unchecked", "rawtypes"}) public void setRenderer(CellRenderer renderer) { this.renderer = renderer; } /** * Specifies if the column may be resized. Default value is true. * * @param resizable the resizeable state */ public void setResizable(boolean resizable) { this.resizable = resizable; } /** * Sets the sortable state. * * @param sortable true to enable sorting */ public void setSortable(boolean sortable) { this.sortable = sortable; } /** * Sets the column's text. * * @param text the text */ public void setText(String text) { this.text = text; fireColumnModelEvent(Events.HeaderChange); } /** * Sets the column's width. Widths that are 1 or less are treated as * percentages. * * @param width the width */ public void setWidth(float width) { this.width = width; fireColumnModelEvent(Events.WidthChange); } protected int getIndex() { return index; } protected void setIndex(int index) { this.index = index; } private void fireColumnModelEvent(EventType type) { if (cm != null) { Object obj = cm.getTable(); if (obj instanceof Table) { TableEvent e = new TableEvent((Table) obj); e.setColumnIndex(index); cm.fireEvent(type, e); } else { TreeTableEvent e = new TreeTableEvent((TreeTable) obj); e.setColumnIndex(index); cm.fireEvent(type, e); } } } }