package com.superliminal.uiutil;
import java.util.ArrayList;
/**
* Description: Selection objects are shared containers used to coordinate selection events
* between graphical viewers and objects dependant upon selections made in viewers.
* Copyright 2005 - Superliminal Software
* @author Melinda Green
*/
public class Selection<type> {
private type selected;
public void setSelection(type newsel) {
if((selected == null && (newsel == null) || selected != null && selected.equals(newsel)))
return; // no change
selected = newsel;
fireSelectionChanged();
}
public type getSelection() { return selected; }
private ArrayList<Listener<type>> listeners = new ArrayList<Listener<type>>();
public interface Listener<type> { public void selectionChanged(type newSelection); }
public void addSelectionListener(Listener<type> sl) { listeners.add(sl); }
public void removeSelectionListener(Listener<type> sl) { listeners.remove(sl); }
protected void fireSelectionChanged() { for(Listener<type> sl : listeners) sl.selectionChanged(selected); }
}