WALA/com.ibm.wala.util/src/com/ibm/wala/util/MonitorUtil.java

113 lines
3.1 KiB
Java

/*******************************************************************************
* Copyright (c) 2007 IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package com.ibm.wala.util;
/**
* Simple utilities for Eclipse progress monitors
*/
public class MonitorUtil {
/**
* Use this interface to decouple core utilities from the Eclipse layer
*/
public interface IProgressMonitor {
/** Constant indicating an unknown amount of work. */
public static final int UNKNOWN = -1;
void beginTask(String task, int totalWork);
/** BEGIN Custom change: subtasks and canceling */
void subTask(String subTask);
void cancel();
/** END Custom change: subtasks and canceling */
boolean isCanceled();
void done();
void worked(int units);
String getCancelMessage();
}
public static void beginTask(IProgressMonitor monitor, String task, int totalWork) throws CancelException {
if (monitor != null) {
monitor.beginTask(task, totalWork);
if (monitor.isCanceled()) {
throw CancelException.make("cancelled in " + task);
}
}
}
public static void done(IProgressMonitor monitor) throws CancelException {
if (monitor != null) {
monitor.done();
if (monitor.isCanceled()) {
throw CancelException.make("cancelled in " + monitor.toString());
}
}
}
public static void worked(IProgressMonitor monitor, int units) throws CancelException {
if (monitor != null) {
monitor.worked(units);
if (monitor.isCanceled()) {
throw CancelException.make("cancelled in " + monitor.toString());
}
}
}
public static void throwExceptionIfCanceled(IProgressMonitor progressMonitor) throws CancelException {
if (progressMonitor != null) {
if (progressMonitor.isCanceled()) {
throw CancelException.make(progressMonitor.getCancelMessage());
}
}
}
/** BEGIN Custom change: more on subtasks */
public static void subTask(IProgressMonitor progressMonitor, String subTask) throws CancelException {
if (progressMonitor != null) {
progressMonitor.subTask(subTask);
if (progressMonitor.isCanceled()) {
throw CancelException.make("cancelled in " + subTask);
}
}
}
public static boolean isCanceled(IProgressMonitor progressMonitor) {
if (progressMonitor == null) {
return false;
} else {
return progressMonitor.isCanceled();
}
}
public static void cancel(IProgressMonitor progress) {
if (progress != null) {
progress.cancel();
}
}
/** END Custom change: more on subtasks */
// public static IProgressMonitor subProgress(ProgressMaster progress, int i) {
// if (progress == null) {
// return null;
// } else {
// return new SubProgressMonitor(progress, i);
// }
// }
}