001package jmri.jmrix.loconet.logixng;
002
003import java.util.AbstractMap;
004import java.util.HashSet;
005import java.util.Map;
006import java.util.Set;
007
008import jmri.Category;
009import jmri.jmrit.logixng.LogixNG_Category;
010import jmri.jmrit.logixng.DigitalExpressionFactory;
011import jmri.jmrit.logixng.DigitalExpressionBean;
012
013import org.openide.util.lookup.ServiceProvider;
014
015/**
016 * The factory for LogixNG LocoNet classes.
017 */
018@ServiceProvider(service = DigitalExpressionFactory.class)
019public class ExpressionFactory implements DigitalExpressionFactory {
020
021    @Override
022    public void init() {
023        CategoryLocoNet.registerCategory();
024    }
025
026    @Override
027    public Set<Map.Entry<Category, Class<? extends DigitalExpressionBean>>> getExpressionClasses() {
028        Set<Map.Entry<Category, Class<? extends DigitalExpressionBean>>> expressionClasses = new HashSet<>();
029
030        // We don't want to add these classes if we don't have a LocoNet connection
031        if (CategoryLocoNet.hasLocoNet()) {
032            expressionClasses.add(new AbstractMap.SimpleEntry<>(CategoryLocoNet.LOCONET, ExpressionSlotUsage.class));
033        }
034
035        return expressionClasses;
036    }
037
038
039
040    public static final class LocoNet extends LogixNG_Category {
041
042        public LocoNet() {
043            super("LOCONET", Bundle.getMessage("MenuLocoNet"), 1100);
044        }
045    }
046
047}