From 15c1b30e8bf9165b3c2dc5ea51e6ace4d4f1b749 Mon Sep 17 00:00:00 2001 From: Bob Jacobsen Date: Tue, 5 Nov 2024 12:10:35 -0500 Subject: [PATCH 1/3] properly create UTF-8 strings from input --- .../openlcb/cdi/jdom/CdiMemConfigReader.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/org/openlcb/cdi/jdom/CdiMemConfigReader.java b/src/org/openlcb/cdi/jdom/CdiMemConfigReader.java index 522cf458..c6361229 100644 --- a/src/org/openlcb/cdi/jdom/CdiMemConfigReader.java +++ b/src/org/openlcb/cdi/jdom/CdiMemConfigReader.java @@ -2,6 +2,7 @@ package org.openlcb.cdi.jdom; +import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import static java.util.logging.Logger.getLogger; @@ -42,19 +43,19 @@ public CdiMemConfigReader(NodeID node, OlcbInterface iface, int space) { long nextAddress = 0; - StringBuffer buf; + ArrayList buf = new ArrayList(); ReaderAccess retval; public void startLoadReader(ReaderAccess retval) { this.retval = retval; nextAddress = 0; - buf = new StringBuffer(); + buf = new ArrayList(); nextRequest(); } void nextRequest() { if (retval != null) { - retval.progressNotify(buf.length(), -1); + retval.progressNotify(buf.size(), -1); } MemoryConfigurationService.McsReadHandler memo = new MemoryConfigurationService.McsReadHandler() { @@ -92,7 +93,7 @@ public void handleReadData(NodeID dest, int space, long address, byte[] data) { done(); return; // don't do next request } - buf.append((char)data[i]); + buf.add(data[i]); } // repeat if not done nextAddress = nextAddress + LENGTH; @@ -105,9 +106,18 @@ public void handleReadData(NodeID dest, int space, long address, byte[] data) { private void done() { // done, pass back a reader based on the current buffer contents if (retval != null) { - retval.progressNotify(buf.length(), buf.length()); - logger.log(Level.FINE, "Retrieved XML: \n{0}", buf); - retval.provideReader(new java.io.StringReader(new String(buf))); + retval.progressNotify(buf.size(), buf.size()); + byte[] byteArray = new byte[buf.size()]; + for (int i = 0 ; i Date: Tue, 5 Nov 2024 12:10:51 -0500 Subject: [PATCH 2/3] force use of Dialog font for CDI tabs --- src/org/openlcb/cdi/swing/CdiPanel.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/org/openlcb/cdi/swing/CdiPanel.java b/src/org/openlcb/cdi/swing/CdiPanel.java index 53786bb2..37469aa1 100644 --- a/src/org/openlcb/cdi/swing/CdiPanel.java +++ b/src/org/openlcb/cdi/swing/CdiPanel.java @@ -149,10 +149,22 @@ public class CdiPanel extends JPanel { private List navPanels = new ArrayList<>(); private final Color COLOR_BACKGROUND; private CollapsiblePanel sensorHelperPanel; - /// Panel at the bottom of the window with command buttons. - //private JPanel bottomPanel; /// To get focus to the bottom panel, this component needs to be activated. private JComponent bottomPanelHead; + + static private Font tabFont; // this will be referenced in getTabLabel below + static { + // ensure that JTabbedPane pane labels use + // the specific Dialog font + int size = 12; + Font defaultTabbedFont = UIManager.getFont("TabbedPane.font"); + if (defaultTabbedFont != null) { + size = defaultTabbedFont.getSize(); + } else { + logger.log(Level.WARNING, "Did not find default TabbedPane font, please report this."); + } + tabFont = new Font("Dialog", Font.PLAIN, size); + } public CdiPanel () { super(); @@ -1190,6 +1202,7 @@ public void propertyChange(PropertyChangeEvent event) { */ protected JComponent getTabLabel(JTabbedPane parentTabbedPane, int index, String name, ConfigRepresentation.GroupRep rep) { JLabel tabLabel = new JLabel(name); + tabLabel.setFont(tabFont); tabLabel.addMouseListener(new MouseAdapter() { From 4978d9cdb48d4c3b524ee32fe10197f188f19842 Mon Sep 17 00:00:00 2001 From: Bob Jacobsen Date: Tue, 5 Nov 2024 13:37:25 -0500 Subject: [PATCH 3/3] provide stand-in with error --- src/org/openlcb/cdi/jdom/CdiMemConfigReader.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/org/openlcb/cdi/jdom/CdiMemConfigReader.java b/src/org/openlcb/cdi/jdom/CdiMemConfigReader.java index c6361229..e9a84d0f 100644 --- a/src/org/openlcb/cdi/jdom/CdiMemConfigReader.java +++ b/src/org/openlcb/cdi/jdom/CdiMemConfigReader.java @@ -117,6 +117,8 @@ private void done() { retval.provideReader(new java.io.StringReader(xml)); } catch (java.io.UnsupportedEncodingException e) { logger.warning("UnsupportedEncodingException while preparing XML data"); + // provide a stand-in + retval.provideReader(new java.io.StringReader("")); } } }