/**
* Copyright (c) 2005-2010 IBM Corporation and others.
* 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 - Initial API and implementation
*/
package org.eclipse.emf.common.util;
import java.io.PrintStream;
/**
* The most basic implementation of a task monitor.
*/
public class BasicMonitor implements Monitor
{
private boolean isCanceled;
private Diagnostic blockedReason;
public BasicMonitor()
{
super();
}
public boolean isCanceled()
{
return isCanceled;
}
public void setCanceled(boolean isCanceled)
{
this.isCanceled = isCanceled;
}
/**
* Returns the current reason for task being blocked, or <code>null</code>.
*/
public Diagnostic getBlockedReason()
{
return blockedReason;
}
public void setBlocked(Diagnostic reason)
{
this.blockedReason = reason;
}
public void clearBlocked()
{
this.blockedReason = null;
}
public void beginTask(String name, int totalWork)
{
// Do nothing.
}
public void setTaskName(String name)
{
// Do nothing.
}
public void subTask(String name)
{
// Do nothing.
}
public void worked(int work)
{
// Do nothing.
}
public void internalWorked(double work)
{
// Do nothing.
}
public void done()
{
// Do nothing.
}
/**
* A simple monitor that delegates to another monitor.
*/
public static class Delegating
{
protected Monitor monitor;
public Delegating(Monitor monitor)
{
this.monitor = monitor;
}
public boolean isCanceled()
{
return monitor.isCanceled();
}
public void setCanceled(boolean value)
{
monitor.setCanceled(value);
}
public void setBlocked(Diagnostic reason)
{
monitor.setBlocked(reason);
}
public void clearBlocked()
{
monitor.clearBlocked();
}
public void beginTask(String name, int totalWork)
{
monitor.beginTask(name, totalWork);
}
public void setTaskName(String name)
{
monitor.setTaskName(name);
}
public void subTask(String name)
{
monitor.subTask(name);
}
public void worked(int work)
{
monitor.worked(work);
}
public void internalWorked(double work)
{
monitor.internalWorked(work);
}
public void done()
{
monitor.done();
}
}
/**
* A simple monitor that prints progress to a print stream.
*/
public static class Printing extends BasicMonitor
{
protected PrintStream printStream;
public Printing(PrintStream printStream)
{
this.printStream = printStream;
}
@Override
public void beginTask(String name, int totalWork)
{
if (name != null && name.length() != 0)
{
printStream.println(">>> " + name);
}
}
@Override
public void setTaskName(String name)
{
if (name != null && name.length() != 0)
{
printStream.println("<>> " + name);
}
}
@Override
public void subTask(String name)
{
if (name != null && name.length() != 0)
{
printStream.println(">> " + name);
}
}
@Override
public void setBlocked(Diagnostic reason)
{
super.setBlocked(reason);
printStream.println("#> " + reason.getMessage());
}
@Override
public void clearBlocked()
{
printStream.println("=> " + getBlockedReason().getMessage());
super.clearBlocked();
}
}
}