/*
* @(#)BasicColumnManager.java
*
* Copyright 2002 EGANTT LLP. All rights reserved.
* PROPRIETARY/QPL. Use is subject to license terms.
*/
package com.egantt.swing.table.model.column.manager;
import com.egantt.swing.table.model.column.ColumnManager;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultListSelectionModel;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
/**
* <code>BasicColumnManager</code> is a basic implementation of the <code>ColumnManager</code>
* is intended to provide managing <code>TableColumn</code>'s easily.
*/
public class BasicColumnManager implements ColumnManager
{
private TableModel model;
private ListSelectionModel selectionModel;
protected int index = 0;
protected List<TableColumnModel> models = new ArrayList<TableColumnModel>();
/**
* This constructor will automatically generate a column model
* @param model
*/
public BasicColumnManager(TableModel model)
{
this.model = model;
this.selectionModel = new DefaultListSelectionModel();
final DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
for (int i=0; i < model.getColumnCount(); i++) {
TableColumn column = new TableColumn(i);
columnModel.addColumn(column);
}
models.add(columnModel);
}
public BasicColumnManager(TableModel model, Object columnNames[][])
{
this.model = model;
this.selectionModel = new DefaultListSelectionModel();
int columnCount = 0;
for (int a=0; a < columnNames.length; a++) {
final DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
models.add(columnModel);
for (int b=0; b < columnNames[a].length; b++) {
TableColumn column = new TableColumn(columnCount++);
column.setHeaderValue(columnNames[a][b]);
if (b==0){//Set size of gantt chart
column.setPreferredWidth(200);
}
else if (b==1){//Set size of gantt chart
column.setPreferredWidth(30);
}
else if (b==2){//Set size of gantt chart
column.setPreferredWidth(30);
}
columnModel.addColumn(column);
}
}
}
/**
* This one will not if you don't want a column model yet use this and feed through null
* @param model not null
* @param columnModel can be null
*/
public BasicColumnManager(TableModel model, TableColumnModel columnModel) {
this.model = model;
this.selectionModel = new DefaultListSelectionModel();
if (columnModel != null)
models.add(columnModel);
}
// __________________________________________________________________________
public TableModel getModel()
{
return model;
}
// __________________________________________________________________________
public TableColumnModel get(int index)
{
return models.size() > index ? (TableColumnModel) models.get(index) : null;
}
// __________________________________________________________________________
public int size()
{
return models.size();
}
// __________________________________________________________________________
/**
* Adds a <code>TableColumn</code> to the uppermost <code>TableColumnModel</code>
* in the stack.
*/
public void add(TableColumn column)
{
TableColumnModel model = (TableColumnModel) models.get(models.size() - 1);
column.setModelIndex(index++);
model.addColumn(column);
}
/**
* Adds a <code>TableColumnModel</code> which becomes the uppermost in the stack.
*/
public void add(TableColumnModel columnModel)
{
models.add(columnModel);
}
public ListSelectionModel getSelectionModel() {
return selectionModel;
}
}