Ticket #18389: 18389-2.patch

File 18389-2.patch, 3.2 KB (added by Bjoeni, 6 years ago)
  • src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java

     
    33
    44import static org.openstreetmap.josm.tools.I18n.tr;
    55
     6import java.awt.Color;
    67import java.awt.Component;
    78import java.awt.Dimension;
    89import java.awt.Font;
     10import java.awt.Graphics;
     11import java.awt.Graphics2D;
    912import java.awt.GraphicsEnvironment;
     13import java.awt.RenderingHints;
    1014import java.awt.event.ActionEvent;
    1115import java.awt.event.InputEvent;
    1216import java.awt.event.KeyEvent;
     
    1620import java.util.ArrayList;
    1721import java.util.Arrays;
    1822import java.util.List;
    19 import java.util.Optional;
    2023import java.util.concurrent.CopyOnWriteArrayList;
    2124
    2225import javax.swing.AbstractAction;
     
    455458        private final ImageIcon iconEye;
    456459        private final ImageIcon iconEyeTranslucent;
    457460        private boolean isTranslucent;
     461        private Layer layer;
    458462
    459463        /**
    460464         * Constructs a new {@code LayerVisibleCheckBox}.
     
    466470            setPressedIcon(ImageProvider.get("dialogs/layerlist", "eye-pressed"));
    467471            setSelectedIcon(iconEye);
    468472            isTranslucent = false;
     473            setBackground(new Color(0, 0, 0, 0));
    469474        }
    470475
    471476        public void setTranslucent(boolean isTranslucent) {
     
    479484        }
    480485
    481486        public void updateStatus(Layer layer) {
     487            this.layer = layer;
    482488            boolean visible = layer.isVisible();
    483489            setSelected(visible);
    484490            if (displayLayerNumbers()) {
     
    493499                tr("layer is currently visible (click to hide layer)") :
    494500                tr("layer is currently hidden (click to show layer)"));
    495501        }
     502
     503        @Override
     504        protected void paintComponent(Graphics g) {
     505            if (Config.getPref().getBoolean("dialog.layer.colorname", true)
     506                    && layer != null && layer.getColor() != null) {
     507                if (g instanceof Graphics2D) {
     508                    Graphics2D g2d = (Graphics2D) g;
     509                    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
     510                            RenderingHints.VALUE_ANTIALIAS_ON);
     511                }
     512                g.setColor(layer.getColor());
     513                g.fillRoundRect(0, 0, getHeight() + 7, getHeight(), 20, 20);
     514            }
     515            super.paintComponent(g);
     516        }
    496517    }
    497518
    498519    private static class NativeScaleLayerCheckBox extends JCheckBox {
     
    649670            if (isActiveLayer(layer)) {
    650671                label.setFont(label.getFont().deriveFont(Font.BOLD));
    651672            }
    652             if (Config.getPref().getBoolean("dialog.layer.colorname", true)) {
    653                 label.setForeground(Optional
    654                         .ofNullable(layer.getColor())
    655                         .orElse(UIManager.getColor(isSelected ? "Table.selectionForeground" : "Table.foreground")));
    656             }
    657673            label.setIcon(layer.getIcon());
    658674            label.setToolTipText(layer.getToolTipText());
    659675            return label;