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}