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 keepSet=new HashSet(); 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 } }