package me.legrange.panstamp.gui.model.tree; import me.legrange.panstamp.Endpoint; import me.legrange.panstamp.Parameter; import me.legrange.panstamp.Register; import me.legrange.panstamp.RegisterListener; /** * * @author gideon */ public class RegisterNode extends NetworkTreeNode<Register, Endpoint> implements RegisterListener { public RegisterNode(Register reg) { super(reg); } public Register getRegister() { return (Register) getUserObject(); } @Override public String toString() { return String.format("Register %d: %s", getRegister().getId(), getRegister().getName()); } @Override protected synchronized void start() { getRegister().addListener(this); for (Endpoint ep : getRegister().getEndpoints()) { EndpointNode epn = new EndpointNode(ep); addToTree(epn, this); epn.start(); } } @Override protected void stop() { getRegister().removeListener(this); super.stop(); } void update(Register reg) { if (reg.getEndpoints().size() != getRegister().getEndpoints().size()) { for (Endpoint ep : getRegister().getEndpoints()) { EndpointNode epn = new EndpointNode(ep); addToTree(epn, this); epn.start(); } reload(); } setUserObject(reg); } @Override public Type getType() { return Type.REGISTER; } @Override public void valueReceived(Register reg, byte[] value) { } @Override public void valueSet(Register reg, byte[] value) { } @Override public void endpointAdded(Register reg, Endpoint ep) { addChild(ep); reload(); } @Override public void parameterAdded(Register reg, Parameter par) { } @Override void addChild(Endpoint ep) { EndpointNode epn = new EndpointNode(ep); addToTree(epn, this); epn.start(); } @Override public int compareTo(NetworkTreeNode<Register, Endpoint> o) { RegisterNode rn = (RegisterNode) o; return getRegister().getId() - rn.getRegister().getId(); } }