/******************************************************************************* * Copyright (c) 2016 Weasis Team and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.acquire.explorer.util; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import javax.swing.event.SwingPropertyChangeSupport; /** * An encapsulation of the PropertyChangeSupport methods based on java.beans.PropertyChangeSupport.<br> * PropertyChangeListeners are fired on the event dispatching thread. * */ public abstract class AbstractBean<E extends Enum<E>> { private final PropertyChangeSupport pcs; public AbstractBean() { pcs = new SwingPropertyChangeSupport(this, true); } public void addPropertyChangeListener(PropertyChangeListener listener) { pcs.addPropertyChangeListener(listener); } public void addPropertyChangeListener(E property, PropertyChangeListener listener) { pcs.addPropertyChangeListener(property.name(), listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { pcs.removePropertyChangeListener(listener); } public void removePropertyChangeListener(E property, PropertyChangeListener listener) { pcs.removePropertyChangeListener(property.name(), listener); } public PropertyChangeListener[] getPropertyChangeListeners() { return pcs.getPropertyChangeListeners(); } public PropertyChangeListener[] getPropertyChangeListeners(E property) { return pcs.getPropertyChangeListeners(property.name()); } public Boolean hasListener(E property) { return pcs.hasListeners(property.name()); } protected void firePropertyChange(E property, Object oldValue, Object newValue) { pcs.firePropertyChange(property.name(), oldValue, newValue); } protected void firePropertyChange(E property) { pcs.firePropertyChange(property.name(), null, null); } }