DefaultBuildProgressMonitor.java
/* *******************************************************************
 * Copyright (c) 1999-2001 Xerox Corporation,
 *               2002 Palo Alto Research Center, Incorporated (PARC).
 * All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v 2.0
 * which accompanies this distribution and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
 *
 * Contributors:
 *     Xerox/PARC     initial implementation
 *     Helen Hawkins  Converted to new interface (bug 148190)
 * ******************************************************************/
package org.aspectj.ajde.ui.swing;
import java.awt.Frame;
import javax.swing.JDialog;
import org.aspectj.ajde.Ajde;
import org.aspectj.ajde.core.IBuildProgressMonitor;
/**
 * This dialog box is open while ajc is compiling the system and displays
 * a corresponding progress bar.
 *
 * @author  Mik Kersten
 */
public class DefaultBuildProgressMonitor extends Thread implements IBuildProgressMonitor {
	public static final String PROGRESS_HEADING = "AspectJ Build";
	private BuildProgressPanel progressDialog = null;
	private JDialog dialog = null;
	public DefaultBuildProgressMonitor(Frame parent) {
        dialog = new JDialog(parent, PROGRESS_HEADING, false);
        progressDialog = new BuildProgressPanel();
        dialog.setContentPane(progressDialog);
        dialog.setSize(550, 120);
        try {
	        dialog.setLocationRelativeTo(parent);
		} catch (NoSuchMethodError nsme) {
			// running on 1.3
		}
	}
    /**
     * Start the progress monitor.
     */
    public void begin() {
    	progressDialog.setProgressBarVal(0);
    	progressDialog.setProgressText("starting build...");
		dialog.setLocationRelativeTo(Ajde.getDefault().getRootFrame());
		dialog.setVisible(true);
    }
	/**
	 * Sets the label describing the current progress phase.
	 */
    public void setProgressText(String text) {
    	progressDialog.setProgressText(text);
    }
    /**
     * Jump the progress bar to the end and finish progress monitoring.
     */
    public void finish(boolean wasFullBuild) {
		progressDialog.finish();
		dialog.dispose();
    }
	public boolean isCancelRequested() {
		return progressDialog.isCancelRequested();
	}
	public void setProgress(double percentDone) {
		progressDialog.setProgressBarVal((int) (percentDone*progressDialog.getProgressBarMax()));
	}
}