/* * Ext GWT - Ext for GWT * Copyright(c) 2007-2009, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ package com.extjs.gxt.ui.client.widget.table; import com.extjs.gxt.ui.client.Style; import com.extjs.gxt.ui.client.event.ComponentEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.TableEvent; import com.extjs.gxt.ui.client.widget.Component; import com.extjs.gxt.ui.client.widget.grid.Grid; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.Widget; /** * A row in a <code>Table</code>. * * @deprecated see {@link Grid} */ public class TableItem extends Component { private String[] toolTips; boolean hasWidgets; String[] cellStyles; boolean cellsRendered; private Table table; private Object[] values; /** * Creates a new table item. * * @param values the cell values */ public TableItem(Object[] values) { this.values = values; } /** * Returns the item's parent table. * * @return the table */ public Table getTable() { return table; } /** * Returns a cell value. * * @param index the cell index * @return the value */ public Object getValue(int index) { return values[index]; } /** * Returns the item's values. * * @return the values */ public Object[] getValues() { return values; } public void onComponentEvent(ComponentEvent ce) { switch (ce.getEventTypeInt()) { case Event.ONDBLCLICK: onDoubleClick(ce); break; case Event.ONCLICK: onClick(ce); break; case Event.ONMOUSEOVER: onMouseOver(ce); break; case Event.ONMOUSEOUT: onMouseOut(ce); break; } } /** * Sets the style for a cell. * * @param index the column index * @param style the new style */ public void setCellStyle(int index, String style) { if (cellStyles == null) cellStyles = new String[values.length]; cellStyles[index] = style; if (isRendered()) { table.getView().setCellStyle(this, index, style); } } /** * Returns the cell styles. * * @return the cell styles */ public String[] getCellStyles() { return cellStyles; } /** * Sets a cell tooltip. * * @param index the column index * @param text the text of the tool tip */ public void setCellToolTip(int index, String text) { if (toolTips == null) toolTips = new String[values.length]; toolTips[index] = text; } /** * Sets all of the cell tooltips * * @param toolTips the tool tips to use */ public void setCellToolTips(String[] toolTips) { this.toolTips = toolTips; } /** * Returns the cell tool tips. * * @return the cell tool tip */ public String[] getCellToolTips() { return toolTips; } /** * Sets a cell value. * * @param index the column index * @param text the text */ public void setText(int index, String text) { setValue(index, text); } /** * Sets a cell value. * * @param index the column index * @param value the value */ public void setValue(int index, Object value) { values[index] = value; if (rendered) { table.getView().renderItemValue(this, index, value); } } /** * Sets a widget as a cell value. When using widgets in cells, bulk rendering * must be disabled. * * @param index the column index * @param widget the widget */ public void setWidget(int index, Widget widget) { hasWidgets = true; setValue(index, widget); } protected void init(Table table) { this.table = table; } protected void onClick(ComponentEvent ce) { Element target = ce.getTarget(); int index = table.getView().findCellIndex(target); if (index == Style.DEFAULT) { return; } TableEvent te = new TableEvent(table); te.setItem(this); te.setRowIndex(table.indexOf(this)); te.setColumnIndex(index); te.setEvent(ce.getEvent()); table.fireEvent(Events.CellClick, te); table.fireEvent(Events.RowClick, te); } protected void onDoubleClick(ComponentEvent ce) { Element target = ce.getTarget(); int index = table.getView().findCellIndex(target); if (index == Style.DEFAULT) { return; } TableEvent evt = new TableEvent(table); evt.setItem(this); evt.setRowIndex(table.indexOf(this)); evt.setCellIndex(index); table.fireEvent(Events.CellDoubleClick, evt); table.fireEvent(Events.RowDoubleClick, evt); } protected void onMouseOut(ComponentEvent be) { Element to = DOM.eventGetToElement(be.getEvent()); if (to != null && !DOM.isOrHasChild(getElement(), to)) { table.getView().onHighlightRow(this, false); } } protected void onMouseOver(ComponentEvent ce) { Element from = DOM.eventGetFromElement(ce.getEvent()); if (from != null && !DOM.isOrHasChild(getElement(), from)) { table.getView().onHighlightRow(this, true); } } @Override protected void onRender(Element target, int index) { setElement(DOM.createDiv(), target, index); } protected void onSelectChange(boolean select) { table.getView().onSelectItem(this, select); } }