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}