/**
* @(#)AbstractJTableList.java
*
* Copyright 2002 EGANTT LLP. All rights reserved.
* PROPRIETARY/QPL. Use is subject to license terms.
*/
package com.egantt.swing.table.list;
import java.awt.Color;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.table.TableColumnModel;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.decorator.ColorHighlighter;
import org.jdesktop.swingx.decorator.HighlightPredicate;
import org.jdesktop.swingx.decorator.HighlighterFactory;
import com.egantt.model.component.ComponentList;
import com.egantt.model.component.ComponentManager;
import com.egantt.swing.component.ComponentContext;
import com.egantt.swing.component.context.DummyComponentContext;
import com.egantt.swing.table.model.column.ColumnManager;
/**
* Generates JTable's based on the Component list
*/
public abstract class AbstractTableList implements ComponentList {
protected final Map<Integer, JTable> cache = new HashMap<Integer, JTable>(1);
protected ColumnManager columnManager;
protected ComponentManager componentManager;
protected ComponentContext headerComponentContext = DummyComponentContext.instance;
protected ComponentContext rendererComponentContext = DummyComponentContext.instance;
public ColumnManager getColumnManager() {
return columnManager;
}
// __________________________________________________________________________
public void setColumnManager(ColumnManager columns) {
this.columnManager = columns;
}
public void setComponentManager(ComponentManager manager) {
this.componentManager = manager;
}
public void setRendererComponentContext(
ComponentContext rendererComponentContext) {
this.rendererComponentContext = rendererComponentContext;
}
public void setHeaderComponentContext(
ComponentContext headerComponentContext) {
this.headerComponentContext = headerComponentContext;
}
// __________________________________________________________________________
public int size() {
return columnManager.size();
}
// __________________________________________________________________________
public JComponent get(int index) {
JXTable table = cache.containsKey(new Integer(index)) ? (JXTable) cache
.get(new Integer(index)) : null;
if (table == null) {
table = createTable();
initializeTable(table);
cache.put(new Integer(index), table);
}
componentManager.registerComponent(table, rendererComponentContext);
componentManager.registerComponent(table.getTableHeader(),
headerComponentContext);
{
TableColumnModel columnModel = columnManager.get(index);
if (columnModel != null)
table.setColumnModel(columnModel);
}
return table;
}
// __________________________________________________________________________
protected void initializeTable(JXTable table) {
//table.setAutoscrolls(true);
//table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
table.setModel(columnManager.getModel());
table.setSelectionModel(columnManager.getSelectionModel());
table.setRowHeight(25);
//jXTable.setColumnControlVisible(true);
//jXTable.setHorizontalScrollEnabled(true);
//jXTable.setVisibleRowCount(20);
table.setSortable(false);
table.setHighlighters(
HighlighterFactory.createSimpleStriping());
table.addHighlighter(new ColorHighlighter(
HighlightPredicate.ROLLOVER_ROW, Color.LIGHT_GRAY,
Color.WHITE));
}
protected abstract JXTable createTable();
}