001package jmri.jmrit.logixng.actions.swing; 002 003import java.util.*; 004 005import javax.annotation.CheckForNull; 006import javax.annotation.Nonnull; 007import javax.swing.*; 008 009import jmri.InstanceManager; 010import jmri.jmrit.logixng.*; 011import jmri.jmrit.logixng.actions.ValidationError; 012import jmri.jmrit.logixng.util.swing.LogixNG_SelectStringSwing; 013 014/** 015 * Configures an ValidationError object with a Swing JPanel. 016 * 017 * @author Daniel Bergqvist Copyright 2025 018 */ 019public class ValidationErrorSwing extends AbstractDigitalActionSwing { 020 021 private JPanel _panelMessage; 022 private LogixNG_SelectStringSwing _selectMessageSwing; 023 024 @Override 025 protected void createPanel(@CheckForNull Base object, @Nonnull JPanel buttonPanel) { 026 if ((object != null) && (! (object instanceof ValidationError))) { 027 throw new IllegalArgumentException("object is not a ValidationError: " + object.getClass().getName()); 028 } 029 ValidationError action = (ValidationError)object; 030 031 panel = new JPanel(); 032 033 _panelMessage = new JPanel(); 034 _selectMessageSwing = new LogixNG_SelectStringSwing(getJDialog(), this); 035 if (action != null) { 036 _panelMessage = _selectMessageSwing.createPanel(action.getSelectMessage()); 037 } else { 038 _panelMessage = _selectMessageSwing.createPanel(null); 039 } 040 041 panel.add(new JLabel(Bundle.getMessage("ValidationError_Message"))); 042 panel.add(_panelMessage); 043 } 044 045 /** {@inheritDoc} */ 046 @Override 047 public boolean validate(@Nonnull List<String> errorMessages) { 048 // Create a temporary action to test formula 049 ValidationError action = new ValidationError("IQDA1", null); 050 _selectMessageSwing.validate(action.getSelectMessage(), errorMessages); 051 return errorMessages.isEmpty(); 052 } 053 054 /** {@inheritDoc} */ 055 @Override 056 public MaleSocket createNewObject(@Nonnull String systemName, @CheckForNull String userName) { 057 ValidationError action = new ValidationError(systemName, userName); 058 updateObject(action); 059 return InstanceManager.getDefault(DigitalActionManager.class).registerAction(action); 060 } 061 062 /** {@inheritDoc} */ 063 @Override 064 public void updateObject(@Nonnull Base object) { 065 if (! (object instanceof ValidationError)) { 066 throw new IllegalArgumentException("object is not a ValidationError: " + object.getClass().getName()); 067 } 068 ValidationError action = (ValidationError)object; 069 _selectMessageSwing.updateObject(action.getSelectMessage()); 070 } 071 072 /** {@inheritDoc} */ 073 @Override 074 public String toString() { 075 return Bundle.getMessage("ValidationError_Short"); 076 } 077 078 @Override 079 public void dispose() { 080 _selectMessageSwing.dispose(); 081 } 082 083}