171 lines
3.5 KiB
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;
|
|
}
|
|
|
|
}
|