How to reproduce:
New profile with connection Loconet Simulator.
In PanelPro Table Turnouts.
Add new Turnout, Loconet address 1, name TO-1.
Edit Turnout TO-1.
Change feedback to DELAYED.
Log:
19:22:58,084 apps.util.Log4JUtil INFO - ** JMRI log *** [main]
19:22:58,098 apps.util.Log4JUtil INFO - This log is stored in file: /home/tata/.jmri/log/session.log [main]
19:22:58,098 apps.util.Log4JUtil INFO - This log is appended to file: /home/tata/.jmri/log/messages.log [main]
19:22:58,150 apps.AppsBase INFO - DecoderPro version 5.5.6+Re5414c68ff starts under Java 11.0.20.1 on Linux amd64 v5.15.0-88-generic at Mon Nov 20 19:22:58 CET 2023 [main]
19:23:00,255 apps.gui3.Apps3 INFO - Starting with profile DELAYED.3f3ae9ee [main]
19:23:00,319 jmri.util.node.NodeIdentity INFO - Using eac7bdf2-aa5a-4f89-875e-13cad538655d as the JMRI storage identity for profile id 3f3ae9ee [AWT-EventQueue-0]
19:23:00,607 jmri.jmrix.loconet.LnPacketizer INFO - lnPacketizer Started [main]
19:23:00,631 i.jmrix.loconet.hexfile.LnHexFilePort INFO - LocoNet Simulator Started [LocoNet HexFileFrame]
19:23:00,788 jmri.jmrit.roster.Roster INFO - Reading roster file with rootFromName(/home/tata/.jmri/DELAYED.jmri/roster.xml) [main]
19:23:00,807 jmri.util.FileUtilSupport INFO - File path program: is /home/tata/bin/JMRI/ [main]
19:23:00,807 jmri.util.FileUtilSupport INFO - File path preference: is /home/tata/.jmri/DELAYED.jmri/ [main]
19:23:00,808 jmri.util.FileUtilSupport INFO - File path profile: is /home/tata/.jmri/DELAYED.jmri/ [main]
19:23:00,808 jmri.util.FileUtilSupport INFO - File path settings: is /home/tata/.jmri/ [main]
19:23:00,808 jmri.util.FileUtilSupport INFO - File path home: is /home/tata/ [main]
19:23:00,808 jmri.util.FileUtilSupport INFO - File path scripts: is /home/tata/bin/JMRI/jython/ [main]
19:23:21,303 jmri.jmrit.audio.JoalAudioFactory INFO - Initialised JOAL using OpenAL: vendor - OpenAL Community version - 1.1 ALSOFT 1.20.0 [Listed Table Generation]
19:23:40,958 ptionhandler.UncaughtExceptionHandler ERROR - Uncaught Exception caught by jmri.util.exceptionhandler.UncaughtExceptionHandler [AWT-EventQueue-0]
java.lang.NullPointerException: null
at jmri.TurnoutOperationManager.getTooltipForOperator(TurnoutOperationManager.java:295) ~[jmri.jar:?]
at jmri.jmrit.beantable.TurnoutTableAction$1.getListCellRendererComponent(TurnoutTableAction.java:220) ~[jmri.jar:?]
at javax.swing.plaf.basic.BasicComboBoxUI.getDisplaySize(BasicComboBoxUI.java:1407) ~[?:?]
at javax.swing.plaf.metal.MetalComboBoxUI.getMinimumSize(MetalComboBoxUI.java:351) ~[?:?]
at javax.swing.plaf.basic.BasicComboBoxUI.getPreferredSize(BasicComboBoxUI.java:949) ~[?:?]
at javax.swing.JComponent.getPreferredSize(JComponent.java:1680) ~[?:?]
at java.awt.GridBagLayout.GetLayoutInfo(GridBagLayout.java:1127) ~[?:?]
at java.awt.GridBagLayout.getLayoutInfo(GridBagLayout.java:922) ~[?:?]
at java.awt.GridBagLayout.preferredLayoutSize(GridBagLayout.java:742) ~[?:?]
at java.awt.Container.preferredSize(Container.java:1823) ~[?:?]
at java.awt.Container.getPreferredSize(Container.java:1807) ~[?:?]
at javax.swing.JComponent.getPreferredSize(JComponent.java:1682) ~[?:?]
at java.awt.FlowLayout.layoutContainer(FlowLayout.java:609) ~[?:?]
at java.awt.Container.layout(Container.java:1537) ~[?:?]
at java.awt.Container.doLayout(Container.java:1526) ~[?:?]
at java.awt.Container.validateTree(Container.java:1722) ~[?:?]
at java.awt.Container.validateTree(Container.java:1731) ~[?:?]
at java.awt.Container.validateTree(Container.java:1731) ~[?:?]
at java.awt.Container.validateTree(Container.java:1731) ~[?:?]
at java.awt.Container.validateTree(Container.java:1731) ~[?:?]
at java.awt.Container.validate(Container.java:1657) ~[?:?]
at javax.swing.RepaintManager$3.run(RepaintManager.java:745) ~[?:?]
at javax.swing.RepaintManager$3.run(RepaintManager.java:743) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) ~[?:?]
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:742) ~[?:?]
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1889) ~[?:?]
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:721) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:715) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) ~[?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:740) ~[?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?]
How to reproduce: New profile with connection Loconet Simulator. In PanelPro Table Turnouts. Add new Turnout, Loconet address 1, name TO-1. Edit Turnout TO-1. Change feedback to DELAYED.
Log: 19:22:58,084 apps.util.Log4JUtil INFO - ** JMRI log *** [main] 19:22:58,098 apps.util.Log4JUtil INFO - This log is stored in file: /home/tata/.jmri/log/session.log [main] 19:22:58,098 apps.util.Log4JUtil INFO - This log is appended to file: /home/tata/.jmri/log/messages.log [main] 19:22:58,150 apps.AppsBase INFO - DecoderPro version 5.5.6+Re5414c68ff starts under Java 11.0.20.1 on Linux amd64 v5.15.0-88-generic at Mon Nov 20 19:22:58 CET 2023 [main] 19:23:00,255 apps.gui3.Apps3 INFO - Starting with profile DELAYED.3f3ae9ee [main] 19:23:00,319 jmri.util.node.NodeIdentity INFO - Using eac7bdf2-aa5a-4f89-875e-13cad538655d as the JMRI storage identity for profile id 3f3ae9ee [AWT-EventQueue-0] 19:23:00,607 jmri.jmrix.loconet.LnPacketizer INFO - lnPacketizer Started [main] 19:23:00,631 i.jmrix.loconet.hexfile.LnHexFilePort INFO - LocoNet Simulator Started [LocoNet HexFileFrame] 19:23:00,788 jmri.jmrit.roster.Roster INFO - Reading roster file with rootFromName(/home/tata/.jmri/DELAYED.jmri/roster.xml) [main] 19:23:00,807 jmri.util.FileUtilSupport INFO - File path program: is /home/tata/bin/JMRI/ [main] 19:23:00,807 jmri.util.FileUtilSupport INFO - File path preference: is /home/tata/.jmri/DELAYED.jmri/ [main] 19:23:00,808 jmri.util.FileUtilSupport INFO - File path profile: is /home/tata/.jmri/DELAYED.jmri/ [main] 19:23:00,808 jmri.util.FileUtilSupport INFO - File path settings: is /home/tata/.jmri/ [main] 19:23:00,808 jmri.util.FileUtilSupport INFO - File path home: is /home/tata/ [main] 19:23:00,808 jmri.util.FileUtilSupport INFO - File path scripts: is /home/tata/bin/JMRI/jython/ [main] 19:23:21,303 jmri.jmrit.audio.JoalAudioFactory INFO - Initialised JOAL using OpenAL: vendor - OpenAL Community version - 1.1 ALSOFT 1.20.0 [Listed Table Generation] 19:23:40,958 ptionhandler.UncaughtExceptionHandler ERROR - Uncaught Exception caught by jmri.util.exceptionhandler.UncaughtExceptionHandler [AWT-EventQueue-0] java.lang.NullPointerException: null at jmri.TurnoutOperationManager.getTooltipForOperator(TurnoutOperationManager.java:295) ~[jmri.jar:?] at jmri.jmrit.beantable.TurnoutTableAction$1.getListCellRendererComponent(TurnoutTableAction.java:220) ~[jmri.jar:?] at javax.swing.plaf.basic.BasicComboBoxUI.getDisplaySize(BasicComboBoxUI.java:1407) ~[?:?] at javax.swing.plaf.metal.MetalComboBoxUI.getMinimumSize(MetalComboBoxUI.java:351) ~[?:?] at javax.swing.plaf.basic.BasicComboBoxUI.getPreferredSize(BasicComboBoxUI.java:949) ~[?:?] at javax.swing.JComponent.getPreferredSize(JComponent.java:1680) ~[?:?] at java.awt.GridBagLayout.GetLayoutInfo(GridBagLayout.java:1127) ~[?:?] at java.awt.GridBagLayout.getLayoutInfo(GridBagLayout.java:922) ~[?:?] at java.awt.GridBagLayout.preferredLayoutSize(GridBagLayout.java:742) ~[?:?] at java.awt.Container.preferredSize(Container.java:1823) ~[?:?] at java.awt.Container.getPreferredSize(Container.java:1807) ~[?:?] at javax.swing.JComponent.getPreferredSize(JComponent.java:1682) ~[?:?] at java.awt.FlowLayout.layoutContainer(FlowLayout.java:609) ~[?:?] at java.awt.Container.layout(Container.java:1537) ~[?:?] at java.awt.Container.doLayout(Container.java:1526) ~[?:?] at java.awt.Container.validateTree(Container.java:1722) ~[?:?] at java.awt.Container.validateTree(Container.java:1731) ~[?:?] at java.awt.Container.validateTree(Container.java:1731) ~[?:?] at java.awt.Container.validateTree(Container.java:1731) ~[?:?] at java.awt.Container.validateTree(Container.java:1731) ~[?:?] at java.awt.Container.validate(Container.java:1657) ~[?:?] at javax.swing.RepaintManager$3.run(RepaintManager.java:745) ~[?:?] at javax.swing.RepaintManager$3.run(RepaintManager.java:743) ~[?:?] at java.security.AccessController.doPrivileged(Native Method) ~[?:?] at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) ~[?:?] at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:742) ~[?:?] at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1889) ~[?:?] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) ~[?:?] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) ~[?:?] at java.awt.EventQueue$4.run(EventQueue.java:721) ~[?:?] at java.awt.EventQueue$4.run(EventQueue.java:715) ~[?:?] at java.security.AccessController.doPrivileged(Native Method) ~[?:?] at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) ~[?:?] at java.awt.EventQueue.dispatchEvent(EventQueue.java:740) ~[?:?] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?] at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?]