package name.abuchen.portfolio.ui.util; import java.util.ArrayList; import java.util.List; import javax.inject.Singleton; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.ProgressProvider; import org.eclipse.e4.core.di.annotations.Creatable; @Creatable @Singleton public class ProgressMonitorFactory extends ProgressProvider { private List<ProgressProvider> providers = new ArrayList<ProgressProvider>(); @Override public IProgressMonitor createMonitor(Job job) { for (ProgressProvider p : providers) { IProgressMonitor monitor = p.createMonitor(job); if (monitor != null) return monitor; } return new NullProgressMonitor(); } public void addProgressProvider(ProgressProvider provider) { providers.add(provider); } public void removeProgressProvider(ProgressProvider provider) { providers.remove(provider); } }