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}