package com.ppfold.main; import java.util.ArrayList; import javax.swing.JProgressBar; import com.ppfold.algo.Progress; public class PPfoldProgressBar implements Progress { private JProgressBar barGUI; private PPfoldProgressBar parent; private double contribution; private double progress; private String message; public PPfoldProgressBar(JProgressBar bar, PPfoldProgressBar parin, double contrib){ barGUI = bar; parent = parin; contribution = contrib; } public double getProgress() { return progress; } public void setProgress(double newprogress) { double oldprogress = this.progress; this.progress = newprogress; if(barGUI!=null){ //if it has a bar then it has no parent barGUI.setValue((int)(progress*100)); barGUI.setString(barGUI.getValue() + "% (" + message + ")"); } else{ //in this case it has a parent this.parent.childReportActivity(oldprogress, newprogress, contribution); } } private void childReportActivity(double oldprogress, double newprogress, double contribution){ this.setProgress(this.progress - oldprogress*contribution + newprogress*contribution); } public Progress getChildProgress(double fraction) { PPfoldProgressBar child = new PPfoldProgressBar(null, this, fraction); return child; } public boolean isSuspended() { //Not suspending return false; } public void setSuspended(boolean isSuspended) { //Not suspending } public boolean shouldStop() { // Returns true if folding should stop return PPfoldMain.shouldstop; } public void checkStop() throws InterruptedException { if(shouldStop()){ throw new InterruptedException("Process has been interrupted!"); } } public void setCurrentActivity(String activity) { message = activity; if(barGUI!=null){ barGUI.setString(barGUI.getValue() + "% (" + message + ")"); } else{ parent.setCurrentActivity(activity); } } public String getCurrentActivity() { return message; } }