001package jmri.jmrix.dccpp.swing.virtuallcd; 002 003// import java.awt.event.ActionListener; 004import java.util.List; 005 006import javax.annotation.Nonnull; 007 008// import jmri.jmrit.catalog.NamedIcon; 009 010import jmri.jmrit.display.*; 011// import static jmri.jmrit.display.Editor.CLOCK; 012import jmri.jmrix.dccpp.DCCppSystemConnectionMemo; 013 014import org.openide.util.lookup.ServiceProvider; 015 016/** 017 * A factory for a VirtualLCD that can be put on a panel. 018 * 019 * @author Daniel Bergqvist (C) 2026 020 */ 021@ServiceProvider(service = PositionableFactory.class) 022public class VirtualLcdPositionableFactory implements PositionableFactory { 023 024 public VirtualLcdPositionableFactory() { 025 } 026 027 @Nonnull 028 @Override 029 public String getIdentifier() { 030 return "DCC-EX-VirtualDisplay"; 031 } 032 033 @Nonnull 034 @Override 035 public String getDescription() { 036 return Bundle.getMessage("VirtualLCDFrameTitle"); 037 } 038 039 @Override 040 public boolean isEnabled() { 041 return hasDccEx(); 042 } 043 044 /** 045 * Do we have a LocoNet connection? 046 * @return true if we have LocoNet, false otherwise 047 */ 048 public static boolean hasDccEx() { 049 List<DCCppSystemConnectionMemo> list = jmri.InstanceManager.getList(DCCppSystemConnectionMemo.class); 050 051 // We have at least one DCC-EX connection if the list is not empty 052 return !list.isEmpty(); 053 } 054 055 @Override 056 public void addPositionable(@Nonnull Editor editor, DoAfter doAfter) { 057 ConfigureVirtualLCD.createConfigureVirtualLCD(editor, doAfter); 058 } 059 060// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(VirtualLcdPositionableFactory.class); 061}