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 MassDeletePanel extends ModelPanel
{
TableView table;
ActList keepers;
public MassDeletePanel(TFModel model, ActList keepers, String title)
{
super(model);
this.keepers=keepers;
setLayout(new BorderLayout());
JPanel top=new JPanel();
top.setLayout(new GridLayout(4,1));
top.add(new JPanel());
top.add(new JLabel(title));
int n=keepers.size();
String message=null;
if (n>1)
message="These are the "+n+" items that will remain.";
else if (n==1)
message="This in the only item that will remain.";
else
message="No items will remain!";
JLabel instructions=new JLabel(message);
top.add(instructions);
top.add(new JPanel());
add(top, BorderLayout.NORTH);
table=new TableView(model);
model.removeListener(table);
add(table, BorderLayout.CENTER);
table.setEditable(false);
table.setActs(keepers);
}
public void applyAction()
{
ActDB db=getModel().getDB();
HashSet<Act> keepSet=new HashSet<Act>();
keepSet.addAll(keepers);
for (Act a: db.all())
if (!keepSet.contains(a))
db.delete(a);
// we assume the caller will decide what event to fire.
}
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
}
}