001package jmri.jmrit.permission.swing;
002
003import java.awt.event.ActionEvent;
004
005import javax.swing.Icon;
006
007import jmri.InstanceManager;
008import jmri.PermissionManager;
009import jmri.util.swing.*;
010
011/**
012 * Let a user login to the permission manager.
013 *
014 * @author Daniel Bergqvist (C) 2024
015 */
016public class LoginAction extends JmriAbstractAction {
017
018    public LoginAction(String s, WindowInterface wi) {
019        super(s, wi);
020        checkPermission();
021    }
022
023    public LoginAction(String s, Icon i, WindowInterface wi) {
024        super(s, i, wi);
025        checkPermission();
026    }
027
028    public LoginAction() {
029        super(Bundle.getMessage("LoginAction_Menu"));
030        checkPermission();
031    }
032
033    private void checkPermission() {
034        var permissionManager = InstanceManager.getDefault(PermissionManager.class);
035        if (permissionManager.isEnabled()) {
036            setEnabled(!permissionManager.isLoggedIn());
037            permissionManager.addLoginListener((isLogin) -> {
038                setEnabled(!isLogin);
039            });
040        } else {
041            setEnabled(false);
042        }
043    }
044
045    @Override
046    public void actionPerformed(ActionEvent e) {
047        new LoginDialog(null).setVisible(true);
048    }
049
050    @Override
051    public JmriPanel makePanel() {
052        throw new IllegalArgumentException("Should not be invoked");
053    }
054
055}