001package jmri.jmrit.z21server;
002
003import jmri.InstanceManager;
004import jmri.ThrottleManager;
005import jmri.util.swing.JmriAbstractAction;
006import jmri.util.swing.WindowInterface;
007
008import javax.swing.*;
009import java.awt.*;
010import java.awt.event.ActionEvent;
011
012/**
013 * Start, and create if needed, the server.
014 *
015 * @author Brett Hoffman Copyright (C) 2009
016 * @author Jean-Yves RODA
017 *
018 */
019public class Z21serverCreationAction extends JmriAbstractAction {
020
021    public Z21serverCreationAction(String s, WindowInterface wi) {
022        super(s, wi);
023    }
024
025    public Z21serverCreationAction(String s, Icon i, WindowInterface wi) {
026        super(s, i, wi);
027    }
028
029    /**
030     * Create a new network server.
031     *
032     * @param name Labels frame in GUI
033     */
034    public Z21serverCreationAction(String name) {
035        super(name);
036        if (InstanceManager.getNullableDefault(ThrottleManager.class) == null) {
037            super.setEnabled(false);
038        }
039        //FacelessServer.getInstance().start(); //Mey - test
040    }
041
042    /**
043     * Create a new network server.
044     */
045    public Z21serverCreationAction() {
046        this(Bundle.getMessage("MenuStartz21serverServer"));
047    }
048
049    /**
050     * Start the server end.
051     *
052     * @param e The event causing the action.
053     */
054    @Override
055    public void actionPerformed(ActionEvent e) {
056
057        FacelessServer server = FacelessServer.getInstance();
058        server.start();
059
060        // ensure the GUI is visible if we are not in headless mode.
061        if (!GraphicsEnvironment.isHeadless()) {
062            UserInterface ui = InstanceManager.getOptionalDefault(UserInterface.class).orElseGet(() -> {
063                return InstanceManager.setDefault(UserInterface.class, new UserInterface());
064            });
065            ui.setVisible(true);
066        }
067    }
068
069    // never invoked, because we overrode actionPerformed above
070    @Override
071    public jmri.util.swing.JmriPanel makePanel() {
072        throw new IllegalArgumentException("Should not be invoked");
073    }
074
075}