/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.ui.common.util; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; import org.teiid.core.designer.util.CoreArgCheck; /** * */ public class CompositeProgressMonitor implements IProgressMonitor { private final Set<IProgressMonitor> monitors = new HashSet<IProgressMonitor>(); /** * @param monitors delegate monitors */ public CompositeProgressMonitor(IProgressMonitor... monitors) { CoreArgCheck.isNotNull(monitors); this.monitors.addAll(Arrays.asList(monitors)); } @Override public void beginTask(String name, int totalWork) { for (IProgressMonitor monitor : monitors) { monitor.beginTask(name, totalWork); } } @Override public void done() { for (IProgressMonitor monitor : monitors) { monitor.done(); } } @Override public void internalWorked(double work) { for (IProgressMonitor monitor : monitors) { monitor.internalWorked(work); } } @Override public boolean isCanceled() { for (IProgressMonitor monitor : monitors) { if (monitor.isCanceled()) return true; } return false; } @Override public void setCanceled(boolean value) { for (IProgressMonitor monitor : monitors) { monitor.setCanceled(value); } } @Override public void setTaskName(String name) { for (IProgressMonitor monitor : monitors) { monitor.setTaskName(name); } } @Override public void subTask(String name) { for (IProgressMonitor monitor : monitors) { monitor.subTask(name); } } @Override public void worked(int work) { for (IProgressMonitor monitor : monitors) { monitor.worked(work); } } }