package timeflow.app.ui;
|
|
import timeflow.data.db.*;
|
import timeflow.model.*;
|
import timeflow.views.*;
|
|
import javax.swing.*;
|
import javax.swing.table.*;
|
|
import java.awt.*;
|
import java.util.*;
|
|
public class ReorderFieldsPanel extends ModelPanel
|
{
|
TableView table;
|
|
public ReorderFieldsPanel(TFModel model)
|
{
|
super(model);
|
setLayout(new BorderLayout());
|
|
JPanel top=new JPanel();
|
top.setLayout(new GridLayout(3,1));
|
top.add(new JPanel());
|
JLabel instructions=new JLabel("Drag and drop the column headers to reorder fields.");
|
top.add(instructions);
|
top.add(new JPanel());
|
add(top, BorderLayout.NORTH);
|
|
table=new TableView(model);
|
add(table, BorderLayout.CENTER);
|
table.setEditable(false);
|
table.setReorderable(true);
|
table.onscreen(true);
|
}
|
|
public void applyReordering()
|
{
|
Enumeration<TableColumn> columns=table.getTable().getTableHeader().getColumnModel().getColumns();
|
ArrayList<Field> newOrder=new ArrayList<Field>();
|
while (columns.hasMoreElements())
|
{
|
TableColumn col=columns.nextElement();
|
String name=col.getHeaderValue().toString();
|
newOrder.add(getModel().getDB().getField(name));
|
}
|
getModel().getDB().setNewFieldOrder(newOrder);
|
}
|
|
public void detachFromModel()
|
{
|
TFModel model=getModel();
|
model.removeListener(table);
|
model.removeListener(this);
|
}
|
|
public Dimension getPreferredSize()
|
{
|
Dimension d=super.getPreferredSize();
|
return new Dimension(Math.max(700, d.width), 250);
|
}
|
|
@Override
|
public void note(TFEvent e) {
|
// TODO Auto-generated method stub
|
|
}
|
}
|