package net.dirtyfilthy.Bitten; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.SwingWorker; import com.google.bitcoin.core.GraphTransaction; public abstract class ResultSetPanel extends JPanel implements PropertyChangeListener{ protected PreparedStatement query; protected JProgressBar progress; protected SwingWorker<ArrayList<GraphTransaction>, Object> task; ResultSetPanel(){ } ResultSetPanel(SwingWorker<ArrayList<GraphTransaction>, Object> task){ this.task=task; } @Override public void propertyChange(PropertyChangeEvent arg0) { if(arg0.getPropertyName().equals("resultset")){ processResultSet((ArrayList<GraphTransaction>) arg0.getNewValue()); progress.setVisible(false); } } protected void createStatusBar(){ progress=new JProgressBar(0,100); progress.setVisible(true); progress.setIndeterminate(true); progress.setString("Working..."); progress.setStringPainted(true); this.add(progress); this.repaint(); } public void execute(){ createStatusBar(); task.addPropertyChangeListener(this); task.execute(); } protected abstract void processResultSet(ArrayList<GraphTransaction> arrayList); }