package org.objectstyle.wolips.eogenerator.ui;
import org.eclipse.core.resources.IFile;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.objectstyle.wolips.eogenerator.core.model.IEOGeneratorListener;
import org.objectstyle.wolips.eogenerator.ui.dialogs.EOGeneratorResultsDialog;
public class DialogEOGeneratorListener implements IEOGeneratorListener {
private StringBuffer _output;
private Shell _shell;
private boolean _succeeded;
public DialogEOGeneratorListener(Shell shell) {
_shell = shell;
}
public Shell getShell() {
return _shell;
}
public void eogeneratorStarted() {
_output = new StringBuffer();
_succeeded = true;
}
public void eogeneratorFailed(IFile eogenFile, String results) {
appendLines(eogenFile, results);
_succeeded = false;
}
public void eogeneratorSucceeded(IFile eogenFile, String results) {
appendLines(eogenFile, results);
}
public void eogeneratorFinished() {
if (_output.length() > 0 && !_succeeded) {
final String output = _output.toString();
Display.getDefault().asyncExec(new Runnable() {
public void run() {
EOGeneratorResultsDialog resultsDialog = new EOGeneratorResultsDialog(DialogEOGeneratorListener.this.getShell(), output.toString());
resultsDialog.open();
}
});
}
}
protected void appendLines(IFile eogenFile, String results) {
_output.append(eogenFile.getLocation().toOSString());
_output.append(":\n");
if (results.length() == 0) {
_output.append("\tFinished.\n");
}
else {
for (String line : results.split("\n")) {
_output.append("\t");
_output.append(line);
_output.append("\n");
}
}
_output.append("\n\n");
}
}