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