199 lines
4.0 KiB
Java
199 lines
4.0 KiB
Java
package org.hwo.ui.treetable;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
|
|
import org.hwo.ui.CellRenderer;
|
|
|
|
public class DefaultTreeTableColumnModel implements TreeTableColumnModel {
|
|
|
|
public class Column
|
|
{
|
|
private String label;
|
|
private int width;
|
|
private int modelColumn;
|
|
private CellRenderer
|
|
cellRenderer;
|
|
private TreeTablePopupListener
|
|
popupListener;
|
|
|
|
public String getLabel() {
|
|
return label;
|
|
}
|
|
public void setLabel(String label) {
|
|
this.label = label;
|
|
fireColumnsChanged();
|
|
}
|
|
public int getWidth() {
|
|
return width;
|
|
}
|
|
public Column setWidth(int width) {
|
|
this.width = width;
|
|
fireColumnsChanged();
|
|
|
|
return this;
|
|
}
|
|
public int getModelColumn() {
|
|
return modelColumn;
|
|
}
|
|
public Column setModelColumn(int modelColumn) {
|
|
this.modelColumn = modelColumn;
|
|
fireColumnsChanged();
|
|
|
|
return this; }
|
|
public CellRenderer getCellRenderer() {
|
|
return cellRenderer;
|
|
}
|
|
public Column setCellRenderer(CellRenderer cellRenderer) {
|
|
this.cellRenderer = cellRenderer;
|
|
|
|
return this;
|
|
}
|
|
public TreeTablePopupListener getPopupListener() {
|
|
return popupListener;
|
|
}
|
|
public Column setPopupListener(TreeTablePopupListener popupListener) {
|
|
this.popupListener = popupListener;
|
|
return this;
|
|
}
|
|
}
|
|
|
|
private List<Column> columns;
|
|
private List<TreeTableModelListener> treeTableModelListener;
|
|
|
|
public DefaultTreeTableColumnModel()
|
|
{
|
|
treeTableModelListener = new LinkedList<TreeTableModelListener>();
|
|
|
|
columns = new ArrayList<DefaultTreeTableColumnModel.Column>();
|
|
Column column = new Column();
|
|
column.label = "";
|
|
column.width = 280;
|
|
columns.add(column);
|
|
}
|
|
|
|
public Column addColumn(String label)
|
|
{
|
|
return addColumn(label,100);
|
|
}
|
|
|
|
public Column addColumn(String label,int width)
|
|
{
|
|
return addColumn(label, width, -1);
|
|
}
|
|
|
|
public Column addColumn(String label,int width,int modelColumn)
|
|
{
|
|
Column column = new Column();
|
|
column.label = label;
|
|
column.width = width;
|
|
columns.add(column);
|
|
|
|
if (modelColumn == -1)
|
|
column.modelColumn = columns.indexOf(column);
|
|
else
|
|
column.modelColumn = modelColumn;
|
|
|
|
fireColumnsChanged();
|
|
return column;
|
|
}
|
|
|
|
public void removeColumn(int column)
|
|
{
|
|
columns.remove(column);
|
|
fireColumnsChanged();
|
|
}
|
|
|
|
public Column getColumn(int column)
|
|
{
|
|
return columns.get(column);
|
|
}
|
|
|
|
public int indexOfColumn(Column column)
|
|
{
|
|
return columns.indexOf(column);
|
|
}
|
|
|
|
@Override
|
|
public int getColumnCount() {
|
|
return columns.size();
|
|
}
|
|
|
|
@Override
|
|
public String getColumnLabel(int column) {
|
|
return columns.get(column).getLabel();
|
|
}
|
|
|
|
@Override
|
|
public int getColumnWidth(int column) {
|
|
return columns.get(column).getWidth();
|
|
}
|
|
|
|
@Override
|
|
public int getColumnPos(int column) {
|
|
int x = 0;
|
|
for (int i=0;i<column;i++)
|
|
x += getColumnWidth(i);
|
|
return x;
|
|
}
|
|
|
|
@Override
|
|
public void addTreeTableModelListener(TreeTableModelListener listener) {
|
|
treeTableModelListener.add(listener);
|
|
}
|
|
|
|
@Override
|
|
public void removeTreeTableModelListener(TreeTableModelListener listener) {
|
|
treeTableModelListener.remove(listener);
|
|
}
|
|
|
|
private void fireColumnsChanged()
|
|
{
|
|
for (TreeTableModelListener listener:treeTableModelListener)
|
|
listener.rowsChanged();
|
|
}
|
|
|
|
@Override
|
|
public int getColumnAtX(int x) {
|
|
for (int i=0;i<columns.size();i++)
|
|
{
|
|
if (x < getColumnPos(i+1))
|
|
return i;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
@Override
|
|
public CellRenderer getColumnCellRenderer(int column) {
|
|
return columns.get(column).getCellRenderer();
|
|
}
|
|
|
|
@Override
|
|
public int getColumnModelColumn(int x)
|
|
{
|
|
return getColumn(x).modelColumn;
|
|
}
|
|
|
|
@Override
|
|
public TreeTablePopupListener getPopup(int row, int column) {
|
|
TreeTablePopupListener listener;
|
|
|
|
listener = getPopupFromColumn(column);
|
|
if (listener == null)
|
|
listener = getPopupFromRow(row);
|
|
|
|
return listener;
|
|
}
|
|
|
|
protected TreeTablePopupListener getPopupFromRow(int row)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
protected TreeTablePopupListener getPopupFromColumn(int column)
|
|
{
|
|
return columns.get(column).getPopupListener();
|
|
}
|
|
}
|