package org.eclipse.jdt.internal.core; import org.eclipse.core.runtime.IProgressMonitor; /******************************************************************************* * Copyright (c) 2000, 2009 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 Corporation - initial API and implementation *******************************************************************************/ public class BatchInitializationMonitor implements IProgressMonitor { public ThreadLocal initializeAfterLoadMonitor= new ThreadLocal(); public String subTaskName= ""; //$NON-NLS-1$ public int worked= 0; private IProgressMonitor getMonitor() { return (IProgressMonitor)this.initializeAfterLoadMonitor.get(); } public void beginTask(String name, int totalWork) { IProgressMonitor monitor= getMonitor(); if (monitor != null) monitor.beginTask(name, totalWork); } public void done() { IProgressMonitor monitor= getMonitor(); if (monitor != null) monitor.done(); this.worked= 0; this.subTaskName= ""; //$NON-NLS-1$ } public void internalWorked(double work) { IProgressMonitor monitor= getMonitor(); if (monitor != null) monitor.internalWorked(work); } public boolean isCanceled() { IProgressMonitor monitor= getMonitor(); if (monitor != null) return monitor.isCanceled(); return false; } public void setCanceled(boolean value) { IProgressMonitor monitor= getMonitor(); if (monitor != null) monitor.setCanceled(value); } public void setTaskName(String name) { IProgressMonitor monitor= getMonitor(); if (monitor != null) monitor.setTaskName(name); } public void subTask(String name) { IProgressMonitor monitor= getMonitor(); if (monitor != null) monitor.subTask(name); this.subTaskName= name; } public void worked(int work) { IProgressMonitor monitor= getMonitor(); if (monitor != null) monitor.worked(work); synchronized (this) { this.worked+= work; } } public synchronized int getWorked() { int result= this.worked; this.worked= 0; return result; } }