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}