001/*-
002 * Copyright 2015, 2016 Diamond Light Source Ltd.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 */
009
010package org.eclipse.january.dataset;
011
012import java.util.Collections;
013import java.util.Set;
014import java.util.concurrent.ConcurrentHashMap;
015
016/**
017 * Class used by DynamicDataset to delegate
018 */
019public class DataListenerDelegate {
020
021        private Set<IDataListener> listeners;
022
023        public DataListenerDelegate() {
024                listeners = Collections.newSetFromMap(new ConcurrentHashMap<IDataListener, Boolean>());
025        }
026
027        public void addDataListener(IDataListener l) {
028                listeners.add(l);
029        }
030
031        public void removeDataListener(IDataListener l) {
032                listeners.remove(l);
033        }
034
035        public void fire(DataEvent evt) {
036                for (IDataListener listener : listeners) {
037                        listener.dataChangePerformed(evt);
038                }
039        }
040
041        public boolean hasDataListeners() {
042                return listeners.size() > 0;
043        }
044
045        public void clear() {
046                listeners.clear();
047        }
048
049}