/* * Configure Zeroconf networking advertisements to use only the IPv4 or IPv6 * Internet Protocol versions as well as to use link-local or loopback * interfaces. This can also effectively disable Zeroconf networking * advertisements by deselecting both protocols. * * Works with JMRI 4.15.1 or newer. */ // Define Java classes var InstanceManager = Java.type("jmri.InstanceManager"); var Preferences = Java.type("jmri.util.zeroconf.ZeroConfPreferences"); var ZeroConfServiceManager = Java.type("jmri.util.zeroconf.ZeroConfServiceManager"); var JCheckBox = Java.type("javax.swing.JCheckBox"); var JLabel = Java.type("javax.swing.JLabel"); var JPanel = Java.type("javax.swing.JPanel"); var JOptionPane = Java.type("javax.swing.JOptionPane"); var BoxLayout = Java.type("javax.swing.BoxLayout"); // Get preferences var preferences = InstanceManager.getDefault(ZeroConfServiceManager.class).getPreferences(); // Build dialog var useIPv4 = new JCheckBox("IPv4", preferences.isUseIPv4()); var useIPv6 = new JCheckBox("IPv6", preferences.isUseIPv6()); var useLinkLocal = new JCheckBox("Link Local", preferences.isUseLinkLocal()); var useLoopback = new JCheckBox("Loopback", preferences.isUseLoopback()); var panel = new JPanel(); panel.layout = new BoxLayout(panel, BoxLayout.PAGE_AXIS); panel.add(new JLabel("Zeroconf service advertisements will
be for the following Internet Protocol versions and interface types:")); panel.add(useIPv4); panel.add(useIPv6); panel.add(useLinkLocal); panel.add(useLoopback); panel.add(new JLabel("Note that this is a per-computer setting,
and applies to all profiles used on this computer.")); // Present preferences if (JOptionPane.OK_OPTION === JOptionPane.showConfirmDialog( null, panel, "Zeroconf Service Advertisements", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE )) { // Save preferences print("Setting Zeroconf configuration:"); print("Advertise on IPv4: " + useIPv4.selected); print("Advertise on IPv6: " + useIPv6.selected); print("Advertise on LinkLocal: " + useLinkLocal.selected); print("Advertise on Loopback: " + useLoopback.selected); preferences.setUseIPv4(useIPv4.selected); preferences.setUseIPv6(useIPv6.selected); preferences.setUseLinkLocal(useLinkLocal.selected); preferences.setUseLoopback(useLoopback.selected); } else { print("Not changing Zeroconf configuration"); }