/* * GroupSync.java * Eisenkraut * * Copyright (c) 2004-2016 Hanns Holger Rutz. All rights reserved. * * This software is published under the GNU General Public License v3+ * * * For further information, please contact Hanns Holger Rutz at * contact@sciss.de */ package de.sciss.eisenkraut.net; import java.util.ArrayList; import java.util.List; import de.sciss.net.OSCBundle; import de.sciss.util.Disposable; public class GroupSync implements Disposable { private final List<Slave> collSlaves = new ArrayList<Slave>(); protected boolean active = false; public GroupSync() { /* empty */ } public void addSlave(Slave s) { collSlaves.add(s); } public void removeSlave(Slave s) { collSlaves.remove(s); } public boolean isActive() { return active; } public void activate( OSCBundle bndl ) { active = true; for (Slave collSlave : collSlaves) { collSlave.groupActivate(bndl); } } public void deactivate( OSCBundle bndl ) { active = false; for (Slave collSlave : collSlaves) { collSlave.groupDeactivate(bndl); } } // -------------- Disposable interface -------------- public void dispose() { collSlaves.clear(); active = false; } // -------------- internal interfaces -------------- public static interface Slave { public void groupActivate( OSCBundle bndl ); public void groupDeactivate( OSCBundle bndl ); } }