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}