![JAR search and dependency download from the Maven repository](/logo.png)
com.extjs.gxt.ui.client.widget.table.TableColumnUI Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gxt Show documentation
Show all versions of gxt Show documentation
Rich Internet Application Framework for GWT
/*
* 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 com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.SortDir;
import com.extjs.gxt.ui.client.core.El;
import com.extjs.gxt.ui.client.core.XDOM;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.EventType;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SplitBarEvent;
import com.extjs.gxt.ui.client.util.Format;
import com.extjs.gxt.ui.client.widget.BoxComponent;
import com.extjs.gxt.ui.client.widget.SplitBar;
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;
/**
* @deprecated see {@link Grid}
*/
public class TableColumnUI extends BoxComponent {
protected static String html;
static {
StringBuffer sb = new StringBuffer();
sb.append("");
sb.append("{1}");
sb.append("");
html = sb.toString();
}
protected int lastWidth;
protected boolean end;
protected int index;
protected BaseTable table;
protected TableColumn column;
protected TableHeader header;
protected SplitBar splitBar;
protected Listener splitBarListener = new Listener() {
public void handleEvent(ComponentEvent e) {
EventType type = e.getType();
if (type == Events.DragStart) {
header.enableEvents(false);
} else if (type == Events.DragEnd) {
header.enableEvents(true);
}
}
};
protected TableColumnUI(BaseTable table, int index) {
this.table = table;
this.index = index;
column = table.getColumn(index);
header = table.getTableHeader();
}
public String getAlignment() {
String align = "left";
if (column != null) {
if (column.getAlignment() == HorizontalAlignment.CENTER) {
align = "center";
} else if (column.getAlignment() == HorizontalAlignment.RIGHT) {
align = "right";
}
}
return align;
}
@Override
protected void onRightClick(ComponentEvent ce) {
super.onRightClick(ce);
header.onRightClick(column, ce);
}
public void onBrowserEvent(Event event) {
if (!header.isEnabled()) {
return;
}
super.onBrowserEvent(event);
}
public void onColumnResize(SplitBarEvent sbe) {
if (sbe.getSize() < 1) {
return;
}
if (column.getWidth() < 1.1) {
int pixWidth = sbe.getSize() - 6;
float percent = (float) pixWidth / table.getColumnModel().getVariableWidth();
table.getColumnModel().setWidthAsPercent(column.index, percent);
header.resizeColumns(true, true);
} else {
column.setWidth(sbe.getSize());
header.resizeColumn(index, true);
}
}
public void onComponentEvent(ComponentEvent ce) {
switch (ce.getEventTypeInt()) {
case Event.ONMOUSEOVER:
onMouseOver(ce);
break;
case Event.ONMOUSEOUT:
onMouseOut(ce);
break;
case Event.ONCLICK:
header.onColumnClick(this, ce);
break;
}
}
public void onMouseMove(BaseEvent be) {
header.onColumnMouseMove(this, be);
}
public void onMouseOut(BaseEvent be) {
removeStyleName("my-tbl-col-over");
}
public void onMouseOver(BaseEvent be) {
addStyleName("my-tbl-col-over");
}
public void onSortChange(SortDir sortDir) {
Element td = DOM.getParent(getElement());
switch (sortDir) {
case ASC:
fly(td).addStyleName("my-tbl-col-sort");
addStyleName("my-tbl-col-asc");
break;
case DESC:
fly(td).addStyleName("my-tbl-col-sort");
addStyleName("my-tbl-col-desc");
break;
case NONE:
fly(td).removeStyleName("my-tbl-col-sort");
removeStyleName("my-tbl-col-asc");
removeStyleName("my-tbl-col-desc");
}
}
public void onTextChange(String text) {
El textEl = el().selectNode(".my-tbl-col-text");
textEl.dom.setInnerHTML(text);
}
@Override
protected void onRender(Element target, int index) {
String[] params = null;
if (end) {
params = new String[] {"", ""};
} else {
params = new String[] {getAlignment(), column.getText()};
}
String s = Format.substitute(html, (Object[]) params);
setElement(XDOM.create(s), target, index);
if (column != null) {
addStyleName("my-tbl-col-" + column.getId());
}
el().setHeight(24);
if (!end && column.isResizable()) {
splitBar = header.createSplitBar(LayoutRegion.EAST, this);
splitBar.setHandleWidth(5);
splitBar.setXOffset(-2);
splitBar.setAutoSize(false);
splitBar.addListener(Events.Resize, new Listener() {
public void handleEvent(SplitBarEvent ce) {
onColumnResize(ce);
}
});
splitBar.addListener(Events.DragStart, splitBarListener);
splitBar.addListener(Events.DragEnd, splitBarListener);
}
sinkEvents(Event.ONCLICK | Event.MOUSEEVENTS);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy