113 lines
3.1 KiB
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);
|
|
// }
|
|
// }
|
|
}
|