001package jmri.jmrit.logixng.actions;
002
003import jmri.*;
004
005/**
006 * Enum of common managers.
007 *
008 * @author Daniel Bergqvist (C) 2023
009 */
010public enum CommonManager {
011
012    Sensors(() -> InstanceManager.getNullableDefault(SensorManager.class), Bundle.getMessage("CommonManager_Sensors")),
013    Turnouts(() -> InstanceManager.getNullableDefault(TurnoutManager.class), Bundle.getMessage("CommonManager_Turnouts")),
014    Lights(() -> InstanceManager.getNullableDefault(LightManager.class), Bundle.getMessage("CommonManager_Lights")),
015    SignalHeads(() -> InstanceManager.getNullableDefault(SignalHeadManager.class), Bundle.getMessage("CommonManager_SignalHeads")),
016    SignalMasts(() -> InstanceManager.getNullableDefault(SignalMastManager.class), Bundle.getMessage("CommonManager_SignalMasts")),
017    Routes(() -> InstanceManager.getNullableDefault(RouteManager.class), Bundle.getMessage("CommonManager_Routes")),
018    Blocks(() -> InstanceManager.getNullableDefault(BlockManager.class), Bundle.getMessage("CommonManager_Blocks")),
019    OBlocks(() -> InstanceManager.getNullableDefault(jmri.jmrit.logix.OBlockManager.class), Bundle.getMessage("CommonManager_OBlocks")),
020    Reporters(() -> InstanceManager.getNullableDefault(ReporterManager.class), Bundle.getMessage("CommonManager_Reporters")),
021    Memories(() -> InstanceManager.getNullableDefault(MemoryManager.class), Bundle.getMessage("CommonManager_Memories")),
022    Audio(() -> InstanceManager.getNullableDefault(AudioManager.class), Bundle.getMessage("CommonManager_Audio")),
023    LayoutBlocks(() -> InstanceManager.getNullableDefault(jmri.jmrit.display.layoutEditor.LayoutBlockManager.class), Bundle.getMessage("CommonManager_LayoutBlocks")),
024    EntryExit(() -> InstanceManager.getNullableDefault(jmri.jmrit.entryexit.EntryExitPairs.class), Bundle.getMessage("CommonManager_EntryExit")),
025    Warrants(() -> InstanceManager.getNullableDefault(jmri.jmrit.logix.WarrantManager.class), Bundle.getMessage("CommonManager_Warrants")),
026    Sections(() -> InstanceManager.getNullableDefault(SectionManager.class), Bundle.getMessage("CommonManager_Sections")),
027    Transits(() -> InstanceManager.getNullableDefault(TransitManager.class), Bundle.getMessage("CommonManager_Transits"));
028
029    private final String _description;
030    private final GetManager _getManager;
031    private Manager<? extends NamedBean> _manager;
032
033    private CommonManager(GetManager getManager, String description) {
034        _getManager = getManager;
035        _manager = _getManager.getManager();
036        _description = description;
037    }
038
039    public Manager<? extends NamedBean> getManager() {
040        return _manager;
041    }
042
043    @Override
044    public String toString() {
045        return _description;
046    }
047
048    // This method is used by test classes to reset this enum.
049    // Each test resets the InstanceManager so we need to reset the
050    // managers in this enum.
051    public static void reset() {
052        for (CommonManager manager : CommonManager.values()) {
053            manager._manager = manager._getManager.getManager();
054        }
055    }
056
057    private interface GetManager {
058
059        Manager<? extends NamedBean> getManager();
060    }
061
062}