Skip to content

Commit

Permalink
Merge a181664 into 9d0a124
Browse files Browse the repository at this point in the history
  • Loading branch information
icklesteve committed Aug 21, 2018
2 parents 9d0a124 + a181664 commit b40c981
Show file tree
Hide file tree
Showing 7 changed files with 135 additions and 77 deletions.
5 changes: 3 additions & 2 deletions java/src/jmri/jmrix/can/Bundle.properties
Expand Up @@ -17,7 +17,8 @@ PacketToolTip = <html>Enter the Frame packet as hex pairs, e.g. 82 7D;
SendSeqTitle = Send sequence of frames
PacketLabel = Frame packet
WaitLabel = then wait (msec)
ButtonStart = Start Sending
ButtonStart = Start
ButtonStop = Stop
StartToolTip = <html>Press once to start sending the above series of packets repeatedly<br>Press again to stop</html>
NoSelectionDialog = No Packets are selected or configured.\nPlease review entries.
NoMakeFrame = <html>Unable to send the CAN frame.<br>See Help > Window Help for some example frames,<br>or check your CAN connection.</html>
NoMakeFrame = <html>Unable to send the CAN frame.<br>See Help > Window Help for some example frames.</html>
33 changes: 22 additions & 11 deletions java/src/jmri/jmrix/can/cbus/CbusBundle.properties
Expand Up @@ -3,10 +3,8 @@
# Default properties for the jmri.jmrix.can.cbus package

# menu items
MenuTools = Systems

MenuItemCommandMonitor = Command Monitor
MenuItemSendFrame = Send Frame
MenuItemCommandMonitor = Network Monitor
MenuItemSendFrame = Send Event Frame
MenuItemConsole = Console
MenuItemConfigTool = Configure Bus Connection
MenuItemEventCapture = Event Capture Tool
Expand All @@ -24,6 +22,9 @@ CbusSendOn = Send On
CbusSendOff = Send Off
ConfirmOverwriteFile = Do you want to replace the existing file?
ConfirmQuestion = Please Confirm
Display = Display
Options = Options
Statistics = Stats

# Console (sub)panel titles
CbusConsoleTitle = CBUS Console
Expand Down Expand Up @@ -106,17 +107,15 @@ ButtonEither = Either
EventTableTitle = CBUS Event Table
ColumnID = CAN ID
IDColTip = CAN ID of event producer
ColumnNode = Node
NodeColTip = CBUS Node Number reported by event
ColumnName = Event Name
NameColTip = Name of Event
ColumnEvent = Event
EventColTip = Event message contents
ColumnType = Type
TypeColTip = Type of Event, on or off.
ColumnComment = Event Comment
CommentColTip = Enter event comments in this column
EmptyTableDialogString = Your Event Table is empty and cannot be saved to a file.
EmptyTableDialogString = Your Event Table is empty and cannot be saved.
ColumnEventID = ID
ColumnEventIDTip = Event Table Internal ID
ColumnEventDelete = Delete
Expand All @@ -131,27 +130,39 @@ ColumnTotalSession = Total Session
ColumnLastHeard = Last Heard
SendOntip = Send On Event. Long if node, Short if no node.
SendOfftip = Send Off Event. Long if node, Short if no node.
SendToggleTip = Toggle between sending On and Off events.
SendToggleTip = Toggle between sending On and Off events. \n Long if node, Short if no node.
NewEvent = New Event
PopupSessionConfirmDel = Hide confirmation for rest of session.
DelConfirmOne = Delete the event from this table?
DelConfirmTwo = Will not affect Sensors, Turnouts or Lights.
DelEvPopTitle = Confirm Delete Event
ShowInfoPanel = Info Panel
NoMakeEvent = <html>Unable to Create New Event, <br>event already exists in the table.</html>
NoMakeEvent = <html>Unable to Create New Event, <br> already exists in the table.</html>
NewNodeTip = To create a short event, set node to 0.

# Cbus Network Monitor
StatsTip = Total CAN frames, including those not displayed.
ConfigMonToolTip = All other non event or non DCC, including unrecognised Ops Codes

# Cbus configure pane items
ToolTipNodeNumber = Enter Node number from 256 to 65535 (decimal)

# Ops Codes
CBUS_ASON = Short event On
CBUS_ASOF = Short event Off
CBUS_ACON = Long event On
CBUS_ACOF = Long event Off


# CbusTurnout (Add to table pane) items
AddOutputEntryToolTip = <html>+18 (Event 18 On Thrown; 18 Off Closed)<br>\
+18;-21 (Event 18 On Thrown; 21 Off Closed)<br>\
+N2E18 (Node 2 Event 18; On Thrown; Off Closed)<br>\
See JMRI CBUS Support for more options</html>

AddInputEntryToolTip = <html>+18 (Event 18 On Active; 18 Off Inactive)<br>\
+18;-21 ( Event 18 On Active; 21 Off Closed )<br>\
+N2E18 (Node 2 Event 18; On Active; Off Inactive)<br>\
+18;-21 ( Event 18 On Active; 21 Off Inactive )<br>\
+N2E18 (Node 2 Event 18 On Active; Off Inactive)<br>\
See JMRI CBUS Support for more options</html>


Expand Down
24 changes: 12 additions & 12 deletions java/src/jmri/jmrix/can/cbus/CbusOpCodes.java
Expand Up @@ -162,21 +162,21 @@ private static Map<Integer, String> createMap() {
result.put(CbusConstants.CBUS_QCVS, "Read CV (QCVS) Session:,%1, CV:,%2, Mode:,%1");
result.put(CbusConstants.CBUS_PCVS, "Report CV (PCVS) Session:,%1, CV:,%2, Data:,%1");

result.put(CbusConstants.CBUS_ACON, "Long Event On (ACON) NN:,%2, EN:,%2");
result.put(CbusConstants.CBUS_ACOF, "Long Event Off (ACOF) NN:,%2, EN:,%2");
result.put(CbusConstants.CBUS_ACON, (Bundle.getMessage("CBUS_ACON")) + " (ACON) NN:,%2, EN:,%2"); // NOI18N
result.put(CbusConstants.CBUS_ACOF, (Bundle.getMessage("CBUS_ACOF")) + " (ACOF) NN:,%2, EN:,%2"); // NOI18N
result.put(CbusConstants.CBUS_AREQ, "Accessory Request (AREQ) NN:,%2, EN:,%2");
result.put(CbusConstants.CBUS_ARON, "Accessory Response ON (ARON) [NN:,%2,] EN:,%2");
result.put(CbusConstants.CBUS_AROF, "Accessory Response OFF (AROF) [NN:,%2,] EN:,%2");
result.put(CbusConstants.CBUS_EVULN, "Unlearn Event (EVULN) NN:,%2 EN:,%2");
result.put(CbusConstants.CBUS_NVSET, "Set Node Variable (NVSET) NN:,%2 NV:,%1, VAL:,%1");
result.put(CbusConstants.CBUS_NVANS, "Returned Node Variable (NVANS) NN:,%2 NV:,%1 VAL:,%1");
result.put(CbusConstants.CBUS_ASON, "Short Event On (ASON) NN:,%2, DN:,%2");
result.put(CbusConstants.CBUS_ASOF, "Short Event Off (ASOF) NN:,%2, DN:,%2");
result.put(CbusConstants.CBUS_ASON, (Bundle.getMessage("CBUS_ASON")) + " (ASON) NN:,%2, EN:,%2"); // NOI18N
result.put(CbusConstants.CBUS_ASOF, (Bundle.getMessage("CBUS_ASOF")) + " (ASOF) NN:,%2, EN:,%2"); // NOI18N
result.put(CbusConstants.CBUS_ASRQ, "Accessory Short Request (ASRQ) NN:,%2, DN:,%2");
result.put(CbusConstants.CBUS_PARAN, "Accessory Short Request (PARAN) NN:,%2, Para:,%1, Val:,%1");
result.put(CbusConstants.CBUS_REVAL, "Accessory Short Request (REVAL) NN:,%2, EN:,%1, EV:,%1");
result.put(CbusConstants.CBUS_ARSON, "Accessory Short Request (ARSON) NN:,%2, DN:,%2");
result.put(CbusConstants.CBUS_ARSOF, "Accessory Short Request (ARSOF) NN:,%2, DN:,%2");
result.put(CbusConstants.CBUS_ARSON, "Accessory Short Request On (ARSON) NN:,%2, DN:,%2");
result.put(CbusConstants.CBUS_ARSOF, "Accessory Short Request Off (ARSOF) NN:,%2, DN:,%2");
result.put(CbusConstants.CBUS_EXTC3, "Extended Op-code (EXTC3):,%1, Data:,%1, ,%1, ,%1");

// Opcodes with 5 data
Expand All @@ -192,8 +192,8 @@ private static Map<Integer, String> createMap() {
result.put(CbusConstants.CBUS_PNN, "Query Node Response (NEVAL) NN:,%2, Man ID:,%1, Mod ID:,%1, Flags:,%1");
result.put(CbusConstants.CBUS_ASON1, "Accessory Short ON (ASON1) NN:,%2, DN:,%2, Data:,%1");
result.put(CbusConstants.CBUS_ASOF1, "Accessory Short OFF (ASOF1) NN:,%2, DN:,%2, Data:,%1");
result.put(CbusConstants.CBUS_ARSON1, "Accessory Short Request (ARSON1) NN:,%2, DN:,%2, Data:,%1");
result.put(CbusConstants.CBUS_ARSOF1, "Accessory Short Request (ARSOF1) NN:,%2, DN:,%2, Data:,%1");
result.put(CbusConstants.CBUS_ARSON1, "Accessory Short Request On (ARSON1) NN:,%2, DN:,%2, Data:,%1");
result.put(CbusConstants.CBUS_ARSOF1, "Accessory Short Request Off (ARSOF1) NN:,%2, DN:,%2, Data:,%1");
result.put(CbusConstants.CBUS_EXTC4, "Extended Op-code (EXTC4):,%1, Data:,%1, ,%1, ,%1, ,%1");

// Opcodes with 6 data
Expand All @@ -212,8 +212,8 @@ private static Map<Integer, String> createMap() {
result.put(CbusConstants.CBUS_ASON2, "Accessory Short ON (ASON2) NN:,%2, DN:,%2, Data:,%1, ,%1");
result.put(CbusConstants.CBUS_ASOF2, "Accessory Short OFF (ASOF2) NN:,%2, DN:,%2, Data:,%1, ,%1");

result.put(CbusConstants.CBUS_ARSON2, "Accessory Short Request (ARSON2) NN:,%2, DN:,%2, Data:,%1, ,%1");
result.put(CbusConstants.CBUS_ARSOF2, "Accessory Short Request (ARSOF2) NN:,%2, DN:,%2, Data:,%1, ,%1");
result.put(CbusConstants.CBUS_ARSON2, "Accessory Short Request On (ARSON2) NN:,%2, DN:,%2, Data:,%1, ,%1");
result.put(CbusConstants.CBUS_ARSOF2, "Accessory Short Request Off (ARSOF2) NN:,%2, DN:,%2, Data:,%1, ,%1");
result.put(CbusConstants.CBUS_EXTC5, "Extended Op-code (EXTC5):,%1, Data:,%1, ,%1, ,%1, ,%1, ,%1");

// Opcodes with 7 data
Expand All @@ -237,8 +237,8 @@ private static Map<Integer, String> createMap() {
result.put(CbusConstants.CBUS_DDES, "Device Data Event Short (DDES) DN:,%2, Data:,%1, ,%1, ,%1, ,%1, ,%1");
result.put(CbusConstants.CBUS_DDRS, "Device Data Response Short (DDRS) DN:,%2, Data:,%1, ,%1, ,%1, ,%1, ,%1");

result.put(CbusConstants.CBUS_ARSON3, "Accessory Short Request (ARSON3) NN:,%2, DN:,%2, Data:,%1, ,%1, ,%1");
result.put(CbusConstants.CBUS_ARSOF3, "Accessory Short Request (ARSOF3) NN:,%2, DN:,%2, Data:,%1, ,%1, ,%1");
result.put(CbusConstants.CBUS_ARSON3, "Accessory Short Request On (ARSON3) NN:,%2, DN:,%2, Data:,%1, ,%1, ,%1");
result.put(CbusConstants.CBUS_ARSOF3, "Accessory Short Request Off (ARSOF3) NN:,%2, DN:,%2, Data:,%1, ,%1, ,%1");
result.put(CbusConstants.CBUS_EXTC6, "Extended Op-code (EXTC6):,%1, Data:,%1, ,%1, ,%1, ,%1, ,%1, ,%1");

return Collections.unmodifiableMap(result);
Expand Down
Expand Up @@ -124,7 +124,7 @@ public class CbusEventTableDataModel extends javax.swing.table.AbstractTableMode
* Return the number of rows to be displayed.
*/
@Override
public int getRowCount() {
public synchronized int getRowCount() {
return _rowCount;
}

Expand All @@ -148,11 +148,11 @@ public String getColumnName(int col) { // not in any order
case CANID_COLUMN:
return Bundle.getMessage("ColumnID");
case NODE_COLUMN:
return Bundle.getMessage("ColumnNode");
return Bundle.getMessage("CbusNode");
case NAME_COLUMN:
return Bundle.getMessage("ColumnName");
case EVENT_COLUMN:
return Bundle.getMessage("ColumnEvent");
return Bundle.getMessage("CbusEvent");
case TYPE_COLUMN:
return Bundle.getMessage("CbusEventOnOrOff");
case COMMENT_COLUMN:
Expand Down Expand Up @@ -844,11 +844,16 @@ public void run() {


/**
* Does Nothing
* disconnect from the CBUS
*/
public void dispose() {
// eventTable.removeAllElements();
// eventTable = null;

if (tc != null) {
tc.removeCanListener(this);
}

}


Expand Down Expand Up @@ -996,8 +1001,6 @@ protected void saveToCSV() {






// move this to global cbus for sending events from other swing

Expand Down
Expand Up @@ -48,6 +48,7 @@
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableRowSorter;

import java.text.DateFormat;
Expand Down Expand Up @@ -131,23 +132,34 @@ public String getToolTipText(MouseEvent e) {
eventTable.setColumnSelectionAllowed(false);
eventTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

eventTable.getColumnModel().getColumn(eventModel.DELETE_BUTTON_COLUMN).setCellEditor(new ButtonEditor(new JButton()));
eventTable.getColumnModel().getColumn(eventModel.DELETE_BUTTON_COLUMN).setCellRenderer(new ButtonRenderer());
TableColumnModel eventTableModel = eventTable.getColumnModel();

eventTable.getColumnModel().getColumn(eventModel.ON_BUTTON_COLUMN).setCellEditor(new ButtonEditor(new JButton()));
eventTable.getColumnModel().getColumn(eventModel.ON_BUTTON_COLUMN).setCellRenderer(new ButtonRenderer());

eventTable.getColumnModel().getColumn(eventModel.OFF_BUTTON_COLUMN).setCellEditor(new ButtonEditor(new JButton()));
eventTable.getColumnModel().getColumn(eventModel.OFF_BUTTON_COLUMN).setCellRenderer(new ButtonRenderer());
TableColumn evIdColumn = eventTableModel.getColumn(eventModel.EVENTID_COLUMN);
TableColumn caIdColumn = eventTableModel.getColumn(eventModel.CANID_COLUMN);

eventTable.getColumnModel().getColumn(eventModel.TOGGLE_BUTTON_COLUMN).setCellEditor(new ButtonEditor(new JButton()));
eventTable.getColumnModel().getColumn(eventModel.TOGGLE_BUTTON_COLUMN).setCellRenderer(new ButtonRenderer());

eventTable.getColumnModel().getColumn(eventModel.STATUS_REQUEST_BUTTON_COLUMN).setCellEditor(new ButtonEditor(new JButton()));
eventTable.getColumnModel().getColumn(eventModel.STATUS_REQUEST_BUTTON_COLUMN).setCellRenderer(new ButtonRenderer());
TableColumn delBColumn = eventTableModel.getColumn(eventModel.DELETE_BUTTON_COLUMN);
delBColumn.setCellEditor(new ButtonEditor(new JButton()));
delBColumn.setCellRenderer(new ButtonRenderer());

TableColumn onBColumn = eventTableModel.getColumn(eventModel.ON_BUTTON_COLUMN);
onBColumn.setCellEditor(new ButtonEditor(new JButton()));
onBColumn.setCellRenderer(new ButtonRenderer());

TableColumn offBColumn = eventTableModel.getColumn(eventModel.OFF_BUTTON_COLUMN);
offBColumn.setCellEditor(new ButtonEditor(new JButton()));
offBColumn.setCellRenderer(new ButtonRenderer());

TableColumn togBColumn = eventTableModel.getColumn(eventModel.TOGGLE_BUTTON_COLUMN);
togBColumn.setCellEditor(new ButtonEditor(new JButton()));
togBColumn.setCellRenderer(new ButtonRenderer());

TableColumn rqStatColumn = eventTableModel.getColumn(eventModel.STATUS_REQUEST_BUTTON_COLUMN);
rqStatColumn.setCellEditor(new ButtonEditor(new JButton()));
rqStatColumn.setCellRenderer(new ButtonRenderer());

// format the last updated date time
eventTable.getColumnModel().getColumn(eventModel.LATEST_TIMESTAMP_COLUMN).setCellRenderer(new DefaultTableCellRenderer() {
TableColumn timeColumn = eventTableModel.getColumn(eventModel.LATEST_TIMESTAMP_COLUMN);
timeColumn.setCellRenderer(new DefaultTableCellRenderer() {
@Override
protected void setValue(Object value) {
if (value != null && value instanceof Date) {
Expand All @@ -163,17 +175,15 @@ protected void setValue(Object value) {

// general GUI config

tcm.setColumnVisible(tcm.getColumnByModelIndex(eventModel.EVENTID_COLUMN), false);
tcm.setColumnVisible(tcm.getColumnByModelIndex(eventModel.CANID_COLUMN), false);
tcm.setColumnVisible(tcm.getColumnByModelIndex(eventModel.DELETE_BUTTON_COLUMN), false);
tcm.setColumnVisible(tcm.getColumnByModelIndex(eventModel.ON_BUTTON_COLUMN), false);
tcm.setColumnVisible(tcm.getColumnByModelIndex(eventModel.OFF_BUTTON_COLUMN), false);
tcm.setColumnVisible(tcm.getColumnByModelIndex(eventModel.STATUS_REQUEST_BUTTON_COLUMN), false);
tcm.setColumnVisible(evIdColumn, false);
tcm.setColumnVisible(caIdColumn, false);
tcm.setColumnVisible(delBColumn, false);
tcm.setColumnVisible(onBColumn, false);
tcm.setColumnVisible(offBColumn, false);
tcm.setColumnVisible(rqStatColumn, false);

addMouseListenerToHeader(eventTable);



setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));


Expand All @@ -199,6 +209,8 @@ protected void setValue(Object value) {
newnode.add(new JLabel(Bundle.getMessage("CbusNode")));
JSpinner newnodenumberSpinner = new JSpinner(new SpinnerNumberModel(0, 0, 65535, 1));
newnode.add(newnodenumberSpinner);
newnode.setToolTipText(Bundle.getMessage("NewNodeTip"));
newnodenumberSpinner.setToolTipText(Bundle.getMessage("NewNodeTip"));

JPanel newev = new JPanel();
newev.add(new JLabel("Event"));
Expand All @@ -211,17 +223,20 @@ protected void setValue(Object value) {
int nd = (Integer) newnodenumberSpinner.getValue();
// log.warn("new event button clicked ev {} nd {} ");
int response=eventModel.newEventFromButton(ev,nd);

tablefeedback.append("\n");
if (nd>0) {
tablefeedback.append (Bundle.getMessage("CbusNode") + nd + " ");
}
tablefeedback.append (Bundle.getMessage("CbusEvent") + ev + " ");
if (response==-1){
tablefeedback.append("\n" + Bundle.getMessage("CbusNode") + nd + Bundle.getMessage("CbusEvent") + ev + " already on table.");
tablefeedback.append("already on table.");
JOptionPane.showMessageDialog(null,
(Bundle.getMessage("NoMakeEvent")), Bundle.getMessage("WarningTitle"),
JOptionPane.ERROR_MESSAGE);
}
if (response==1) {
tablefeedback.append("\n" + Bundle.getMessage("CbusNode") + nd + Bundle.getMessage("CbusEvent") + ev + " added to table.");
tablefeedback.append("added to table.");
}

});

neweventcontainer.add(newnode);
Expand All @@ -235,7 +250,7 @@ protected void setValue(Object value) {

split = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
eventScroll, scrolltablefeedback);
split.setResizeWeight(0.9);
split.setResizeWeight(0.95);
split.setContinuousLayout(true);


Expand All @@ -246,19 +261,29 @@ protected void setValue(Object value) {

}

/**
* {@inheritDoc}
*/
@Override
public String getHelpTarget() {
return "package.jmri.jmrix.can.cbus.swing.eventtable.EventTablePane";
}


/**
* Creates a Menu List
* <p>
* File - Print, Print Preview, Save, SaveAs csv
* Display - show / hide Create new event pane, show/hide bottom feedback pane
* </p>
*/
@Override
public List<JMenu> getMenus() {
List<JMenu> menuList = new ArrayList<JMenu>();
Frame mFrame = new Frame();

ResourceBundle rb = ResourceBundle.getBundle("apps.AppsBundle");
JMenu fileMenu = new JMenu(Bundle.getMessage("MenuFile"));
JMenu displayMenu = new JMenu("Display");
JMenu displayMenu = new JMenu(Bundle.getMessage("Display"));

// Not currently implemented
// JMenuItem openItem = new JMenuItem(rb.getString("MenuItemOpen"));
Expand Down
2 changes: 1 addition & 1 deletion java/src/jmri/jmrix/can/cbus/swing/eventtable/package.html
Expand Up @@ -17,7 +17,7 @@

<p>
More information on the protocols is available on the
<a href="http://www.merg.org.uk/resources/lcb.html">MERG CBUS web site</a>.
<a href="https://www.merg.org.uk/merg_resources/cbus.php">MERG CBUS web site</a>.

<!-- Put @see and @since tags down here. -->
<!-- @see jmri.InstanceManager -->
Expand Down

0 comments on commit b40c981

Please sign in to comment.