001package jmri.jmrit.logixng.actions.swing;
002
003import java.util.List;
004
005import javax.annotation.CheckForNull;
006import javax.annotation.Nonnull;
007import javax.swing.*;
008
009import jmri.*;
010import jmri.jmrit.logixng.*;
011import jmri.jmrit.logixng.actions.ForEachRoster;
012
013/**
014 * Configures an ForEachRoster object with a Swing JPanel.
015 *
016 * @author Daniel Bergqvist Copyright 2026
017 */
018public class ForEachRosterSwing extends AbstractDigitalActionSwing {
019
020    private JTextField _localVariable;
021
022    @Override
023    protected void createPanel(@CheckForNull Base object, @Nonnull JPanel buttonPanel) {
024        if ((object != null) && !(object instanceof ForEachRoster)) {
025            throw new IllegalArgumentException("object must be an ForEachRoster but is a: "+object.getClass().getName());
026        }
027
028        ForEachRoster action = (ForEachRoster)object;
029
030        panel = new JPanel();
031        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
032
033        JPanel localVariablePanel = new JPanel();
034        localVariablePanel.add(new JLabel(Bundle.getMessage("ForEachRosterSwing_LocalVariable")));
035        _localVariable = new JTextField(20);
036        localVariablePanel.add(_localVariable);
037        panel.add(localVariablePanel);
038
039        if (action != null) {
040            _localVariable.setText(action.getLocalVariableName());
041        }
042
043        panel.add(localVariablePanel);
044    }
045
046    /** {@inheritDoc} */
047    @Override
048    public boolean validate(@Nonnull List<String> errorMessages) {
049        return true;
050    }
051
052    /** {@inheritDoc} */
053    @Override
054    public MaleSocket createNewObject(@Nonnull String systemName, @CheckForNull String userName) {
055        ForEachRoster action = new ForEachRoster(systemName, userName);
056        updateObject(action);
057        return InstanceManager.getDefault(DigitalActionManager.class).registerAction(action);
058    }
059
060    /** {@inheritDoc} */
061    @Override
062    public void updateObject(@Nonnull Base object) {
063        if (!(object instanceof ForEachRoster)) {
064            throw new IllegalArgumentException("object must be an ForEachRoster but is a: "+object.getClass().getName());
065        }
066
067        ForEachRoster action = (ForEachRoster)object;
068
069        action.setLocalVariableName(_localVariable.getText());
070    }
071
072    /** {@inheritDoc} */
073    @Override
074    public String toString() {
075        return Bundle.getMessage("ForEachRoster_Short");
076    }
077
078    @Override
079    public void dispose() {
080    }
081
082//    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ForEachSwing.class);
083
084}