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 }