Ticket #18389: 18389-3.patch
File 18389-3.patch, 4.5 KB (added by , 5 years ago) |
---|
-
src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
Cannot display: file marked as a binary type. svn:mime-type = image/png Cannot display: file marked as a binary type. svn:mime-type = image/png
3 3 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 import java.awt.Color; 6 7 import java.awt.Component; 7 8 import java.awt.Dimension; 8 9 import java.awt.Font; 10 import java.awt.Graphics; 11 import java.awt.Graphics2D; 9 12 import java.awt.GraphicsEnvironment; 13 import java.awt.RenderingHints; 10 14 import java.awt.event.ActionEvent; 11 15 import java.awt.event.InputEvent; 12 16 import java.awt.event.KeyEvent; … … 16 20 import java.util.ArrayList; 17 21 import java.util.Arrays; 18 22 import java.util.List; 19 import java.util.Optional;20 23 import java.util.concurrent.CopyOnWriteArrayList; 21 24 22 25 import javax.swing.AbstractAction; … … 455 458 private final ImageIcon iconEye; 456 459 private final ImageIcon iconEyeTranslucent; 457 460 private boolean isTranslucent; 461 private Layer layer; 458 462 459 463 /** 460 464 * Constructs a new {@code LayerVisibleCheckBox}. 461 465 */ 462 466 LayerVisibleCheckBox() { 463 iconEye = ImageProvider.get("dialogs/layerlist","eye");464 iconEyeTranslucent = ImageProvider.get("dialogs/layerlist", "eye-translucent");467 iconEye = new EyeIcon("eye"); 468 iconEyeTranslucent = new EyeIcon("eye-translucent", true); 465 469 setIcon(ImageProvider.get("dialogs/layerlist", "eye-off")); 466 setPressedIcon( ImageProvider.get("dialogs/layerlist","eye-pressed"));470 setPressedIcon(new EyeIcon("eye-pressed")); 467 471 setSelectedIcon(iconEye); 468 472 isTranslucent = false; 469 473 } … … 479 483 } 480 484 481 485 public void updateStatus(Layer layer) { 486 this.layer = layer; 482 487 boolean visible = layer.isVisible(); 483 488 setSelected(visible); 484 489 if (displayLayerNumbers()) { … … 493 498 tr("layer is currently visible (click to hide layer)") : 494 499 tr("layer is currently hidden (click to show layer)")); 495 500 } 501 502 class EyeIcon extends ImageIcon { 503 private boolean translucent; 504 public EyeIcon(String name) { 505 this(name, false); 506 } 507 public EyeIcon(String name, boolean translucent) { 508 super(ImageProvider.get("dialogs/layerlist", name).getImage()); 509 this.translucent = translucent; 510 } 511 @Override 512 public synchronized void paintIcon(Component comp, Graphics g, int x, int y) { 513 Color c; 514 if (Config.getPref().getBoolean("dialog.layer.colorname", true) 515 && layer != null && (c = layer.getColor()) != null) { 516 if (g instanceof Graphics2D) { 517 Graphics2D g2d = (Graphics2D) g; 518 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 519 RenderingHints.VALUE_ANTIALIAS_ON); 520 } 521 if (translucent) { 522 g.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), 125)); 523 } else { 524 g.setColor(c); 525 } 526 g.fillOval(x, y + 1, getIconWidth(), getIconHeight() - 2); 527 } 528 super.paintIcon(comp, g, x, y); 529 } 530 } 496 531 } 497 532 498 533 private static class NativeScaleLayerCheckBox extends JCheckBox { … … 649 684 if (isActiveLayer(layer)) { 650 685 label.setFont(label.getFont().deriveFont(Font.BOLD)); 651 686 } 652 if (Config.getPref().getBoolean("dialog.layer.colorname", true)) {653 label.setForeground(Optional654 .ofNullable(layer.getColor())655 .orElse(UIManager.getColor(isSelected ? "Table.selectionForeground" : "Table.foreground")));656 }657 687 label.setIcon(layer.getIcon()); 658 688 label.setToolTipText(layer.getToolTipText()); 659 689 return label;