java-org.hwo.ui/src/org/hwo/models/TableMapper/TableMapperColumnModel.java

171 lines
3.5 KiB
Java

package org.hwo.models.TableMapper;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.Vector;
import javax.swing.DefaultListSelectionModel;
import javax.swing.ListSelectionModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.TableColumnModelListener;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import org.hwo.models.TableMapper.TableMapper.ColumnInfo;
class TableMapperColumnModel implements TableColumnModel{
private TableMapper tableMapper;
private LinkedList<TableColumnModelListener> listeners;
private ArrayList<TableColumn> tableColumns;
private int margin;
private ListSelectionModel listSelectionModel;
public TableMapperColumnModel(TableMapper tableMapper)
{
this.tableMapper = tableMapper;
this.listeners = new LinkedList<TableColumnModelListener>();
this.tableColumns = new ArrayList<TableColumn>();
this.listSelectionModel = new DefaultListSelectionModel();
for (int i=0;i<tableMapper.getColumnCount();i++)
{
ColumnInfo ci = tableMapper.getColumnInfo().get(i);
TableColumn tc = new TableColumn(i, ci.getWidth());
tc.setPreferredWidth(ci.getWidth());
tc.setHeaderValue(ci.getLabel());
tc.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent arg0) {
fireColumnMarginChanged();
}
});
tableColumns.add(tc);
}
}
protected void fireColumnMarginChanged()
{
for (TableColumnModelListener listener:listeners)
listener.columnMarginChanged(new ChangeEvent(this));
}
@Override
public void addColumn(TableColumn aColumn) {
}
@Override
public void addColumnModelListener(TableColumnModelListener x) {
listeners.add(x);
}
@Override
public void removeColumnModelListener(TableColumnModelListener x) {
listeners.remove(x);
}
@Override
public TableColumn getColumn(int columnIndex) {
return tableColumns.get(columnIndex);
}
@Override
public int getColumnCount() {
return tableColumns.size();
}
@Override
public int getColumnIndex(Object columnIdentifier) {
return 0;
}
@Override
public int getColumnIndexAtX(int xPosition) {
int pos = 0;
for (int i=0;i<tableColumns.size();i++)
{
pos += tableColumns.get(i).getWidth();
if (xPosition < pos)
return i;
}
return -1;
}
@Override
public int getColumnMargin() {
return margin;
}
@Override
public boolean getColumnSelectionAllowed() {
return false;
}
@Override
public Enumeration<TableColumn> getColumns() {
return new Vector<TableColumn>(tableColumns).elements();
}
@Override
public int getSelectedColumnCount() {
return 0;
}
@Override
public int[] getSelectedColumns() {
return new int[0];
}
@Override
public ListSelectionModel getSelectionModel() {
return listSelectionModel;
}
@Override
public int getTotalColumnWidth() {
int width = 0;
for (TableColumn tc:tableColumns)
width += tc.getWidth();
return width;
}
@Override
public void moveColumn(int columnIndex, int newIndex) {
}
@Override
public void removeColumn(TableColumn column) {
}
@Override
public void setColumnMargin(int newMargin) {
margin = newMargin;
fireColumnMarginChanged();
}
@Override
public void setColumnSelectionAllowed(boolean flag) {
}
@Override
public void setSelectionModel(ListSelectionModel newModel) {
listSelectionModel = newModel;
}
}