Package ch.rakudave.jnetmap

Source Code of ch.rakudave.jnetmap.MapModel

package ch.rakudave.jnetmap;

import java.util.LinkedList;

import ch.rakudave.jnetmap.device.Host;
import ch.rakudave.jnetmap.device.DeviceEvent;
import ch.rakudave.jnetmap.device.DeviceListener;
import ch.rakudave.jnetmap.device.Device;

public class MapModel implements Model, DeviceListener {
  private LinkedList<ModelListener> listeners;
  private LinkedList<Host> devices;
 
  public MapModel() {
    devices = new LinkedList<Host>();
    listeners = new LinkedList<ModelListener>();
  }
 
  @Override
  public void addDevice(Host item) {
    if (item != null && devices.add(item)) {
      notifyListeners(new ModelEvent(this, new DeviceEvent(item, DeviceEvent.Type.DEVICE_ADDED)));
    }
  }

  @Override
  public void addModelListener(ModelListener listener) {
    if (listener != null && !listeners.contains(listener)) listeners.add(listener);
  }

  @Override
  @SuppressWarnings("unchecked")
  public Iterable<Host> getDevices() {
    return (Iterable<Host>) devices.clone();
  }

  @Override
  public void itemChanged(DeviceEvent event) {
    notifyListeners(new ModelEvent(this, event));
  }

  public void notifyListeners(ModelEvent e) {
    for (ModelListener l : listeners) l.modelChanged(e);
  }

  @Override
  public void removeAllItems() {
    //TODO
  }

  @Override
  public void removeDevice(Device item) {
    if (devices.remove(item)) {
      notifyListeners(new ModelEvent(this, new DeviceEvent(item, DeviceEvent.Type.DEVICE_REMOVED)));
    }
  }
 
  @Override
  public void removeModelListener(ModelListener listener) {
    listeners.remove(listener);
  }
}
TOP

Related Classes of ch.rakudave.jnetmap.MapModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.