001package jmri.jmrix.can.cbus; 002 003import java.util.Vector; 004 005import jmri.implementation.*; 006import jmri.CommandStation; 007import jmri.ConsistManager.EnableListener; 008 009/** 010 * The CBUS Consist Manager which uses the NmraConsist class for 011 * the consists it builds. This implementation just tracks the 012 * consist via a table of {@link jmri.implementation.DccConsist} objects 013 * that handle the actual operations. 014 * 015 * @author Andrew Crosland Copyright (C) 2022 016 */ 017public class CbusConsistManager extends NmraConsistManager implements EnableListener { 018 019 public CbusConsistManager(CommandStation cs) { 020 super(cs); 021 } 022 023 /** 024 * Can this consist manager be disabled? 025 * 026 * @return true if the manager can be disabled, false otherwise 027 */ 028 @Override 029 public boolean canBeDisabled() { 030 return true; 031 } 032 033 // per-instance, listeners must not be shared between connections 034 protected final Vector<EnableListener> enableListeners = new Vector<>(); 035 protected boolean _enabled = false; 036 037 /** 038 * Register a listener that is called if this manager is enabled or disabled. 039 * @param listener the listener 040 */ 041 @Override 042 public void registerEnableListener(EnableListener listener) { 043 // add only if not already registered 044 if (listener == null) { 045 throw new java.lang.NullPointerException(); 046 } 047 if (!enableListeners.contains(listener)) { 048 enableListeners.addElement(listener); 049 } 050 } 051 052 /** 053 * Unregister a listener that is called if this manager is enabled or disabled. 054 * @param listener the listener 055 */ 056 @Override 057 public void unregisterEnableListener(EnableListener listener) { 058 if (enableListeners.contains(listener)) { 059 enableListeners.removeElement(listener); 060 } 061 } 062 063 /** 064 * Check if this manager is enabled 065 * @return true if enabled 066 */ 067 @Override 068 public boolean isEnabled() { 069 return _enabled; 070 } 071 072 /** 073 * A listener that listens to whether the manager is enabled or disabled. 074 * 075 * Call each listeners setEnabled() method. 076 * 077 * @param value true to enable 078 */ 079 @Override 080 public void setEnabled(boolean value) { 081 _enabled = value; 082 for (int i = 0; i < enableListeners.size(); i++) { 083 enableListeners.elementAt(i).setEnabled(value); 084 } 085 } 086 087}