001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.progress; 003 004import java.util.ArrayList; 005import java.util.List; 006 007import org.openstreetmap.josm.gui.progress.ProgressMonitor.CancelListener; 008 009public class CancelHandler { 010 011 private boolean isCanceled; 012 private List<CancelListener> listeners = new ArrayList<>(); 013 014 public synchronized void cancel() { 015 if (!isCanceled) { 016 isCanceled = true; 017 for (CancelListener listener:listeners) { 018 listener.operationCanceled(); 019 } 020 } 021 } 022 023 public synchronized boolean isCanceled() { 024 return isCanceled; 025 } 026 027 public synchronized void addCancelListener(CancelListener listener) { 028 listeners.add(listener); 029 } 030 031 public synchronized void removeCancelListener(CancelListener listener) { 032 listeners.remove(listener); 033 } 034 035}