package net.dirtyfilthy.Bitten;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import javax.swing.BoxLayout;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingWorker;
import javax.swing.table.DefaultTableModel;
import org.jdesktop.swingx.JXTreeTable;
import org.jdesktop.swingx.rollover.RolloverController;
import org.jdesktop.swingx.treetable.DefaultTreeTableModel;
import org.jdesktop.swingx.treetable.TreeTableModel;
import com.google.bitcoin.core.Accountable;
import com.google.bitcoin.core.GraphTransaction;
import com.google.bitcoin.core.TransactionOutput;
public class TransactionResultPanel extends ResultSetPanel implements Closeable {
protected ArrayList<GraphTransaction> transactions;
protected TransactionTreeTable table;
protected ControlPanel panel;
protected TransactionInfoPanel info;
protected TransactionOptionsPanel options;
public Accountable target;
TransactionResultPanel(ControlPanel p,SwingWorker<ArrayList<GraphTransaction>, Object> task){
super(task);
this.panel=p;
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
}
@Override
protected void processResultSet(ArrayList<GraphTransaction> transactions) {
System.out.println("process transactions");
String columns[]={"id","time","from","btc","to","btc","V"};
TransactionTreeTableModel treeTableModel = new TransactionTreeTableModel( new RootTransactionTreeNode(panel, transactions), Arrays.asList(columns));
System.out.println("transactions "+transactions.size() );
if(target!=null){
info=new TransactionInfoPanel(target, transactions);
this.add(info);
}
options=new TransactionOptionsPanel(panel,target, treeTableModel);
this.add(options);
table=new TransactionTreeTable(panel, treeTableModel);
table.setTreeCellRenderer(new AddressTreeCellRenderer(target));
// RolloverController controller = new HighlightRolloverController(panel.getView());
//table=new JTable(m);
table.setVisible(true);
//controller.install(table);
this.add(new JScrollPane(table));
table.getModel().addTableModelListener(panel);
panel.registerTransactionTreeTable(table);
this.repaint();
options.processViz();
}
public void close() {
if(table!=null){
panel.unregisterTransactionTreeTable(table);
}
}
}