001package jmri.jmrix.tams.swing.monitor; 002 003import javax.swing.JCheckBox; 004import javax.swing.JPanel; 005import jmri.jmrix.tams.TamsListener; 006import jmri.jmrix.tams.TamsMessage; 007import jmri.jmrix.tams.TamsReply; 008import jmri.jmrix.tams.TamsSystemConnectionMemo; 009import jmri.jmrix.tams.swing.TamsPanelInterface; 010 011/** 012 * Swing action to create and register a MonFrame object. 013 * 014 * Based on work by Bob Jacobsen 015 * 016 * @author Kevin Dickerson Copyright (C) 2012 017 */ 018public class TamsMonPane extends jmri.jmrix.AbstractMonPane implements TamsListener, TamsPanelInterface { 019 020 private TamsMessage tm; // Keeping a local copy of the latest TamsMessage for helping with decoding 021 022 public TamsMonPane() { 023 super(); 024 } 025 026 @Override 027 public String getHelpTarget() { 028 return null; 029 } 030 031 @Override 032 public String getTitle() { 033 return Bundle.getMessage("CommandMonitor"); 034 } 035 036 @Override 037 public void dispose() { 038 // disconnect from the TamsTrafficController 039 memo.getTrafficController().removeTamsListener(this); 040 // and unwind swing 041 super.dispose(); 042 } 043 044 @Override 045 public void init() { 046 } 047 048 TamsSystemConnectionMemo memo; 049 050 JCheckBox disablePollingCheckBox = new JCheckBox(); 051 052 @Override 053 public void initContext(Object context) { 054 if (context instanceof TamsSystemConnectionMemo) { 055 initComponents((TamsSystemConnectionMemo) context); 056 } 057 } 058 059 @Override 060 public void initComponents(TamsSystemConnectionMemo memo) { 061 this.memo = memo; 062 // connect to the TamsTrafficController 063 memo.getTrafficController().addTamsListener(this); 064 disablePollingCheckBox.setSelected(memo.getTrafficController().getPollQueueDisabled()); 065 } 066 067 @Override 068 public void initComponents() { 069 super.initComponents(); 070 JPanel check = new JPanel(); 071 disablePollingCheckBox.setText(Bundle.getMessage("DisablePollingBoxLabel")); 072 disablePollingCheckBox.setVisible(true); 073 disablePollingCheckBox.setToolTipText(Bundle.getMessage("DisablePollingToolTip")); 074 disablePollingCheckBox.addActionListener(new java.awt.event.ActionListener() { 075 @Override 076 public void actionPerformed(java.awt.event.ActionEvent e) { 077 if (memo != null) { 078 memo.getTrafficController().setPollQueueDisabled(disablePollingCheckBox.isSelected()); 079 } 080 } 081 }); 082 check.add(disablePollingCheckBox); 083 add(check); 084 } 085 086 @Override 087 public synchronized void message(TamsMessage tm) { // receive a message and log it 088 if (tm.isBinary()) { 089 logMessage("Binary cmd: ", tm); 090 } else { 091 logMessage("ASCII cmd: ", tm); 092 } 093 } 094 095 @Override 096 public synchronized void reply(TamsReply l) { // receive a reply message and log it 097 String raw = ""; 098 for (int i = 0; i < l.getNumDataElements(); i++) { 099 if (i > 0) { 100 raw += " "; 101 } 102 raw = jmri.util.StringUtil.appendTwoHexFromInt(l.getElement(i) & 0xFF, raw); 103 } 104 if (l.isUnsolicited()) { 105 logMessage("msg: ", l); 106 } else { 107 if (tm.isBinary()){ 108 logMessage("Binary rep: ", l); 109 } else { 110 logMessage("ASCII rep: " , l); 111 } 112 } 113 } 114 115}