001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.gui.progress;
003
004 import java.util.ArrayList;
005 import java.util.List;
006
007 import org.openstreetmap.josm.gui.progress.ProgressMonitor.CancelListener;
008
009 public class CancelHandler {
010
011 private boolean isCanceled;
012 private List<CancelListener> listeners = new ArrayList<CancelListener>();
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 }