001package jmri.jmrix.pi; 002 003/** 004 * Handle configuring a Raspberry Pi layout connection. 005 * <p> 006 * This uses the {@link RaspberryPiAdapter} class to do the actual connection. 007 * 008 * @author Paul Bender Copyright (C) 2015 009 * 010 * @see RaspberryPiAdapter 011 */ 012public class RaspberryPiConnectionConfig extends jmri.jmrix.AbstractConnectionConfig { 013 014 private boolean disabled = false; 015 private RaspberryPiAdapter adapter = null; 016 017 /** 018 * Ctor for an object being created during load process; Swing init is 019 * deferred. 020 * 021 * @param p the pre-existing adapter 022 */ 023 public RaspberryPiConnectionConfig(RaspberryPiAdapter p) { 024 super(); 025 adapter = p; 026 } 027 028 /** 029 * Ctor for a connection configuration with no preexisting adapter. 030 * {@link #setInstance()} will fill the adapter member. 031 */ 032 public RaspberryPiConnectionConfig() { 033 super(); 034 adapter = new RaspberryPiAdapter(); 035 } 036 037 protected boolean init = false; 038 039 /** 040 * {@inheritDoc} 041 */ 042 @Override 043 protected void checkInitDone() { 044 log.debug("init called for {}", name()); 045 if (init) { 046 return; 047 } 048 addNameEntryCheckers(adapter); 049 init = true; 050 } 051 052 @Override 053 public void updateAdapter() { 054 if (adapter.getSystemConnectionMemo() != null && !adapter.getSystemConnectionMemo().setSystemPrefix(systemPrefixField.getText())) { 055 systemPrefixField.setText(adapter.getSystemConnectionMemo().getSystemPrefix()); 056 connectionNameField.setText(adapter.getSystemConnectionMemo().getUserName()); 057 } 058 } 059 060 @Override 061 protected void showAdvancedItems() { 062 } 063 064 /** 065 * {@inheritDoc} 066 */ 067 @Override 068 public void loadDetails(final javax.swing.JPanel details) { 069 _details = details; 070 setInstance(); 071 if (!init) { 072 if (adapter.getSystemConnectionMemo() != null) { 073 systemPrefixField.setText(adapter.getSystemConnectionMemo().getSystemPrefix()); 074 connectionNameField.setText(adapter.getSystemConnectionMemo().getUserName()); 075 NUMOPTIONS = NUMOPTIONS + 2; 076 } 077 addStandardDetails(adapter, false, NUMOPTIONS); 078 init = false; 079 checkInitDone(); 080 } 081 } 082 083 /** 084 * {@inheritDoc} 085 */ 086 @Override 087 protected void setInstance() { 088 if (adapter == null) { 089 adapter = new RaspberryPiAdapter(); 090 } 091 } 092 093 @Override 094 public RaspberryPiAdapter getAdapter() { 095 return adapter; 096 } 097 098 @Override 099 public String getInfo() { 100 return "GPIO"; 101 } 102 103 String manuf = RaspberryPiConnectionTypeList.PI; 104 105 @Override 106 public String getManufacturer() { 107 return manuf; 108 } 109 110 @Override 111 public void setManufacturer(String manufacturer) { 112 manuf = manufacturer; 113 } 114 115 @Override 116 public String name() { 117 return getConnectionName(); 118 } 119 120 @Override 121 public String getConnectionName() { 122 return "Raspberry Pi GPIO"; // NOI18N 123 } 124 125 @Override 126 public boolean getDisabled() { 127 return disabled; 128 } 129 130 @Override 131 public void setDisabled(boolean disable) { 132 this.disabled = disable; 133 } 134 135 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(RaspberryPiConnectionConfig.class); 136 137}