001package jmri.jmrix.dccpp.swing.exrail;
002
003import java.awt.Frame;
004import java.awt.event.ActionEvent;
005
006import jmri.InstanceManager;
007import jmri.jmrix.dccpp.DCCppSystemConnectionMemo;
008import jmri.jmrix.dccpp.swing.DCCppSystemConnectionAction;
009
010/**
011 * Action to open the DCC-EX EXRAIL Automations window.
012 *
013 * @author Chad Francis Copyright (C) 2026
014 */
015public class DCCppExrailAction extends DCCppSystemConnectionAction {
016
017    private DCCppExrailFrame frame = null;
018
019    public DCCppExrailAction(String name, DCCppSystemConnectionMemo memo) {
020        super(name, memo);
021    }
022
023    public DCCppExrailAction(DCCppSystemConnectionMemo memo) {
024        super(Bundle.getMessage("ExrailFrameTitle"), memo);
025    }
026
027    public DCCppExrailAction() {
028        this(InstanceManager.getNullableDefault(DCCppSystemConnectionMemo.class));
029    }
030
031    @Override
032    public void actionPerformed(ActionEvent e) {
033        if (frame == null || !frame.isVisible()) {
034            DCCppSystemConnectionMemo memo = getSystemConnectionMemo();
035            if (memo == null) {
036                log.error("connection memo was null!");
037                return;
038            }
039            frame = new DCCppExrailFrame(memo);
040            frame.initComponents();
041            frame.setVisible(true);
042        }
043        frame.setExtendedState(Frame.NORMAL);
044        frame.toFront();
045    }
046
047    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(DCCppExrailAction.class);
048}