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.ActionLightIntensity; 012import jmri.jmrit.logixng.util.parser.ParserException; 013import jmri.jmrit.logixng.util.swing.LogixNG_SelectNamedBeanSwing; 014import jmri.util.swing.BeanSelectPanel; 015 016/** 017 * Configures an ActionLightIntensity object with a Swing JPanel. 018 * 019 * @author Daniel Bergqvist Copyright 2021 020 */ 021public class ActionLightIntensitySwing extends AbstractDigitalActionSwing { 022 023 private LogixNG_SelectNamedBeanSwing<VariableLight> _selectNamedBeanSwing; 024 025 026 @Override 027 protected void createPanel(@CheckForNull Base object, @Nonnull JPanel buttonPanel) { 028 ActionLightIntensity action = (ActionLightIntensity)object; 029 030 _selectNamedBeanSwing = new LogixNG_SelectNamedBeanSwing<>( 031 InstanceManager.getDefault(VariableLightManager.class), getJDialog(), this); 032 033 panel = new JPanel(); 034 panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 035 036 JPanel _tabbedPaneNamedBean; 037 if (action != null) { 038 _tabbedPaneNamedBean = _selectNamedBeanSwing.createPanel(action.getSelectNamedBean()); 039 } else { 040 _tabbedPaneNamedBean = _selectNamedBeanSwing.createPanel(null); 041 } 042 043 panel.add(_tabbedPaneNamedBean); 044 045 panel.add(javax.swing.Box.createVerticalStrut(10)); 046 047 JPanel labelPanel = new JPanel(); 048 labelPanel.add(new JLabel(Bundle.getMessage("ActionLightIntensity_Descr"))); 049 panel.add(labelPanel); 050 } 051 052 /** {@inheritDoc} */ 053 @Override 054 public boolean validate(@Nonnull List<String> errorMessages) { 055 // Create a temporary action to test formula 056 ActionLightIntensity action = new ActionLightIntensity("IQDA1", null); 057 058 _selectNamedBeanSwing.validate(action.getSelectNamedBean(), errorMessages); 059 return errorMessages.isEmpty(); 060 } 061 062 /** {@inheritDoc} */ 063 @Override 064 public MaleSocket createNewObject(@Nonnull String systemName, @CheckForNull String userName) { 065 ActionLightIntensity action = new ActionLightIntensity(systemName, userName); 066 updateObject(action); 067 return InstanceManager.getDefault(DigitalActionManager.class).registerAction(action); 068 } 069 070 /** {@inheritDoc} */ 071 @Override 072 public void updateObject(@Nonnull Base object) { 073 if (! (object instanceof ActionLightIntensity)) { 074 throw new IllegalArgumentException("object must be an ActionLightIntensity but is a: "+object.getClass().getName()); 075 } 076 ActionLightIntensity action = (ActionLightIntensity)object; 077 _selectNamedBeanSwing.updateObject(action.getSelectNamedBean()); 078 } 079 080 /** {@inheritDoc} */ 081 @Override 082 public String toString() { 083 return Bundle.getMessage("ActionLightIntensity_Short"); 084 } 085 086 @Override 087 public void dispose() { 088 } 089 090}