package tirateima.ui; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Um modelo para os dados do mostrador. * * @author Luciano Santos */ public abstract class AbstractMostradorModel implements MostradorModel { protected Map<String, ComponenteTT> components; protected double proportion; protected List<MostradorModelListener> listeners; /** * Cria um novo AbstractModel. */ public AbstractMostradorModel() { components = new HashMap<String, ComponenteTT>(); proportion = 1.0; listeners = new ArrayList<MostradorModelListener>(); } /** * Cria um novo AbstractModel com os componentes dados. * * @param components Os componentes, num mapeamento. */ public AbstractMostradorModel(Map<String, ComponenteTT> components) { assert (components != null); this.components = components; } /** * Adiciona */ public void addMostradorModelListener(MostradorModelListener l) { assert (l != null); listeners.add(l); } public void addComponent(ComponenteTT component) { assert (component != null); String name = component.getName(); if (components.containsKey(name)) { ComponenteTT previous = components.get(name); components.put(name, component); fireComponentsChanged(MostradorModelEvent.ATUALIZADO, null, null, previous, component); } } public void removeComponent(ComponenteTT component) { } public void setProportion(double proportion) { assert (proportion >= 0.0 && proportion <= 10.0); if (this.proportion != proportion) { this.proportion = proportion; } } public double getProportion() { return proportion; } protected void fireComponentsChanged(int type, ComponenteTT added, ComponenteTT removed, ComponenteTT previous, ComponenteTT updated) { MostradorModelEvent e = new MostradorModelEvent(this, type, added, removed, previous, updated); for (MostradorModelListener listener : listeners) { listener.componentsChanged(e); } } }