source: josm/trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java@ 8792

Last change on this file since 8792 was 8513, checked in by Don-vip, 9 years ago

checkstyle: blocks

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.layer;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.Color;
8import java.awt.Component;
9import java.awt.event.ActionEvent;
10import java.util.LinkedList;
11import java.util.List;
12
13import javax.swing.AbstractAction;
14import javax.swing.Action;
15import javax.swing.JColorChooser;
16import javax.swing.JMenuItem;
17import javax.swing.JOptionPane;
18
19import org.openstreetmap.josm.Main;
20import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
21import org.openstreetmap.josm.gui.layer.Layer.MultiLayerAction;
22import org.openstreetmap.josm.tools.ImageProvider;
23
24public class CustomizeColor extends AbstractAction implements LayerAction, MultiLayerAction {
25 private transient List<Layer> layers;
26
27 public CustomizeColor(List<Layer> l) {
28 this();
29 layers = l;
30 }
31
32 public CustomizeColor(Layer l) {
33 this();
34 layers = new LinkedList<>();
35 layers.add(l);
36 }
37
38 private CustomizeColor() {
39 super(tr("Customize Color"), ImageProvider.get("colorchooser"));
40 putValue("help", ht("/Action/LayerCustomizeColor"));
41 }
42
43 @Override
44 public boolean supportLayers(List<Layer> layers) {
45 for (Layer layer: layers) {
46 if (layer.getColor(false) == null)
47 return false;
48 }
49 return true;
50 }
51
52 @Override
53 public Component createMenuComponent() {
54 return new JMenuItem(this);
55 }
56
57 @Override
58 public Action getMultiLayerAction(List<Layer> layers) {
59 return new CustomizeColor(layers);
60 }
61
62 @Override
63 public void actionPerformed(ActionEvent e) {
64 Color cl = layers.get(0).getColor(false);
65 if (cl == null) cl = Color.gray;
66 JColorChooser c = new JColorChooser(cl);
67 Object[] options = new Object[]{tr("OK"), tr("Cancel"), tr("Default")};
68 int answer = JOptionPane.showOptionDialog(
69 Main.parent,
70 c,
71 tr("Choose a color"),
72 JOptionPane.OK_CANCEL_OPTION,
73 JOptionPane.PLAIN_MESSAGE,
74 null,
75 options,
76 options[0]
77 );
78 switch (answer) {
79 case 0:
80 for (Layer layer : layers) {
81 Main.pref.putColor("layer "+layer.getName(), c.getColor());
82 }
83 break;
84 case 1:
85 return;
86 case 2:
87 for (Layer layer : layers) {
88 Main.pref.putColor("layer "+layer.getName(), null);
89 }
90 break;
91 }
92 Main.map.repaint();
93 }
94}
Note: See TracBrowser for help on using the repository browser.