/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.ptc.tifworkbench.worker;
import com.ptc.tifworkbench.model.SolutionDifferencer;
import com.ptc.tifworkbench.model.SolutionViewer;
import javax.swing.SwingWorker;
/**
*
* @author pbowden
*/
public class DifferenceWorker extends SwingWorker<Integer, Status> implements StatusReporter
{
private Status currStatus;
private SolutionDifferencer diff;
private SolutionViewer viewer;
public DifferenceWorker(SolutionDifferencer diff, SolutionViewer viewer)
{
currStatus = new Status(0, "Differencing solutions.");
this.diff=diff;
this.viewer=viewer;
}
@Override
protected void done()
{
viewer.setSolution(diff.getDifferenceSolution());
this.firePropertyChange(StatusReporter.FINISHED_PROP, "Finished", "Done");
}
@Override
protected Integer doInBackground() throws Exception
{
try
{
diff.doDifference();
}catch(Exception ex)
{
publish(new Status(0, "Error: " + ex.getMessage()));
return new Integer(-1);
}
return 1;
}
@Override
public void reportStatus(int progress, String message)
{
Status stat = new Status(progress, message);
this.firePropertyChange(StatusReporter.STATUS_PROP, currStatus, stat);
currStatus = stat;
}
@Override
public void reportDetail(String message)
{
this.firePropertyChange(StatusReporter.DETAIL_PROP, "", message);
}
}