### Eclipse Workspace Patch 1.0 #P JMapViewer Index: src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeRenderer.java =================================================================== --- src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeRenderer.java (revision 36494) +++ src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeRenderer.java (working copy) @@ -33,9 +33,14 @@ final Font fontValue = UIManager.getFont("Tree.font"); if (fontValue != null) panel.getLabel().setFont(fontValue); + + /* final Boolean focusPainted = (Boolean) UIManager.get("Tree.drawsFocusBorderAroundIcon"); panel.check.setFocusPainted(focusPainted != null && focusPainted); + */ + // Compact check for Focus Border + panel.check.setFocusPainted(Boolean.TRUE.equals(UIManager.get("Tree.drawsFocusBorderAroundIcon"))); selectionForeground = UIManager.getColor("Tree.selectionForeground"); selectionBackground = UIManager.getColor("Tree.selectionBackground"); @@ -69,11 +74,20 @@ //final String stringValue = // tree.convertValueToText(value, selected, expanded, leaf, row, false); //panel.label.setText(stringValue); + + // Order adjusted: Fallback to DefaultRenderer inserted further up the list if no CheckBox data is available. + if (data == null) { + // not a check box node; return default cell renderer + return defaultRenderer.getTreeCellRendererComponent(tree, value, + selected, expanded, leaf, row, hasFocus); + } + // panel.setSelected(Boolean.FALSE); panel.setEnabled(tree.isEnabled()); + /* if (selected) { panel.setForeground(selectionForeground); panel.setBackground(selectionBackground); @@ -85,12 +99,17 @@ panel.getLabel().setForeground(textForeground); panel.getLabel().setBackground(textBackground); } + */ + // Centralized color management for improved readability. + updateColors(selected); + /* if (data == null) { // not a check box node; return default cell renderer return defaultRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); } + */ //panel.label.setText(data.getText()); panel.setData(data); @@ -98,6 +117,17 @@ return panel; } + + private void updateColors(boolean selected) { + Color fg = selected ? selectionForeground : textForeground; + Color bg = selected ? selectionBackground : textBackground; + + panel.setForeground(fg); + panel.setBackground(bg); + panel.getLabel().setForeground(fg); + panel.getLabel().setBackground(bg); + } + /* private JPopupMenu createPopupMenu(final AbstractLayer layer) { JMenuItem menuItem;