001package jmri.jmrix.cmri.serial.serialdriver;
002
003import java.util.ResourceBundle;
004
005import javax.annotation.Nonnull;
006import javax.swing.JButton;
007import javax.swing.JPanel;
008
009import jmri.jmrix.cmri.CMRISystemConnectionMemo;
010import jmri.jmrix.cmri.serial.nodeconfigmanager.NodeConfigManagerAction;
011
012/**
013 * Definition of objects to handle configuring a layout connection via a C/MRI
014 * SerialDriverAdapter object.
015 *
016 * @author Bob Jacobsen Copyright (C) 2001, 2003
017 * @author Chuck Catania Copyright (C) 2017
018 */
019public class ConnectionConfig extends jmri.jmrix.AbstractSerialConnectionConfig {
020
021    public static final String NAME = Bundle.getMessage("TypeSerial");
022
023    /**
024     * Ctor for an object being created during load process; Swing init is
025     * deferred.
026     * @param p serial port adapter.
027     */
028    public ConnectionConfig(jmri.jmrix.SerialPortAdapter p) {
029        super(p);
030    }
031
032    /**
033     * Ctor for a connection configuration with no preexisting adapter.
034     * {@link #setInstance()} will fill the adapter member.
035     */
036    public ConnectionConfig() {
037        super();
038    }
039
040    @Override
041    public String name() {
042        return NAME;
043    }
044
045    private JButton b;
046
047    /**
048     * {@inheritDoc}
049     */
050    @Override
051    public void loadDetails(JPanel details) {
052
053        setInstance();
054        b = new JButton(Bundle.getMessage("ConfigureNodesTitle"));
055        b.addActionListener(new NodeConfigManagerAction((CMRISystemConnectionMemo)adapter.getSystemConnectionMemo()));
056        if (!additionalItems.contains(b)) {
057            additionalItems.add(b);
058        }
059        super.loadDetails(details);
060
061    }
062
063    @Override
064    protected ResourceBundle getActionModelResourceBundle() {
065        return ResourceBundle.getBundle("jmri.jmrix.cmri.CmriActionListBundle");
066    }
067
068    /**
069     * {@inheritDoc}
070     */
071    @Override
072    protected void setInstance() {
073        if (adapter == null) {
074            adapter = new SerialDriverAdapter();
075        }
076    }
077
078    /** {@inheritDoc} */
079    @Override
080    public Config getConfig() {
081        return ((CMRISystemConnectionMemo) getAdapter().getSystemConnectionMemo())
082                .getConfig();
083    }
084
085    /** {@inheritDoc} */
086    @Override
087    public void setConfig(@Nonnull Config config) {
088        if (config instanceof CMRISystemConnectionMemo.Config) {
089            ((CMRISystemConnectionMemo) getAdapter().getSystemConnectionMemo())
090                    .setConfig((CMRISystemConnectionMemo.Config) config);
091        } else {
092            log.info("Can't set config. Expected {} but got {}",
093                    config.getClass().getName(),
094                    CMRISystemConnectionMemo.Config.class.getName());
095        }
096    }
097
098    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ConnectionConfig.class);
099}