001package jmri.jmrix.grapevine.simulator;
002
003import javax.swing.JButton;
004import javax.swing.JPanel;
005import jmri.jmrix.grapevine.GrapevineSystemConnectionMemo;
006import jmri.jmrix.grapevine.nodeconfig.NodeConfigAction;
007
008/**
009 * Handle configuring an Grapevine layout connection via a GrapevineSimulator
010 * adapter.
011 * <p>
012 * This uses the {@link SimulatorAdapter} class to do the actual connection.
013 *
014 * @author Bob Jacobsen Copyright (C) 2001, 2003
015 * @author Paul Bender Copyright (C) 2009
016 * @author Mark Underwood Copyright (C) 2015
017  *
018 * @see SimulatorAdapter
019 *
020 * Based on jmri.jmrix.lenz.xnetsimulator.ConnectionConfig, copied from EasyDCC
021 */
022public class ConnectionConfig extends jmri.jmrix.AbstractSimulatorConnectionConfig {
023
024    /**
025     * Ctor for an object being created during load process; Swing init is
026     * deferred.
027     * @param p serial port adapter.
028     */
029    public ConnectionConfig(jmri.jmrix.SerialPortAdapter p) {
030        super(p);
031    }
032
033    /**
034     * Ctor for a connection configuration with no preexisting adapter.
035     * {@link #setInstance()} will fill the adapter member.
036     */
037    public ConnectionConfig() {
038        super();
039    }
040
041    JButton b = new JButton(Bundle.getMessage("ConfigNodesTitle"));
042
043    /**
044     * {@inheritDoc}
045     */
046    @Override
047    public void loadDetails(JPanel details) {
048        setInstance();
049
050        // have to embed the usual one in a new JPanel
051        b.addActionListener(new NodeConfigAction((GrapevineSystemConnectionMemo)adapter.getSystemConnectionMemo()));
052        if (!additionalItems.contains(b)) {
053            additionalItems.add(b);
054        }
055        super.loadDetails(details);
056    }
057
058    @Override
059    public String name() {
060        return "Grapevine Simulator";
061    }
062
063    String manufacturerName = jmri.jmrix.grapevine.SerialConnectionTypeList.PROTRAK;
064
065    @Override
066    public String getManufacturer() {
067        return manufacturerName;
068    }
069
070    @Override
071    public void setManufacturer(String manu) {
072        manufacturerName = manu;
073    }
074
075    /**
076     * {@inheritDoc}
077     */
078    @Override
079    protected void setInstance() {
080        if (adapter == null) {
081            adapter = new SimulatorAdapter();
082        }
083    }
084
085}