source: josm/trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java@ 8285

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

fix sonar squid:S2039 - Member variable visibility should be specified

  • Property svn:eol-style set to native
File size: 3.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.layer.gpx;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.Component;
8import java.awt.Dimension;
9import java.awt.Toolkit;
10import java.awt.event.ActionEvent;
11import java.util.LinkedList;
12import java.util.List;
13
14import javax.swing.AbstractAction;
15import javax.swing.Action;
16import javax.swing.BorderFactory;
17import javax.swing.JMenuItem;
18import javax.swing.JOptionPane;
19import javax.swing.JScrollPane;
20
21import org.openstreetmap.josm.Main;
22import org.openstreetmap.josm.gui.layer.GpxLayer;
23import org.openstreetmap.josm.gui.layer.Layer;
24import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
25import org.openstreetmap.josm.gui.layer.Layer.MultiLayerAction;
26import org.openstreetmap.josm.gui.preferences.display.GPXSettingsPanel;
27import org.openstreetmap.josm.gui.util.GuiHelper;
28import org.openstreetmap.josm.tools.ImageProvider;
29
30public class CustomizeDrawingAction extends AbstractAction implements LayerAction, MultiLayerAction {
31 private List<Layer> layers;
32
33 public CustomizeDrawingAction(List<Layer> l) {
34 this();
35 layers = l;
36 }
37
38 public CustomizeDrawingAction(Layer l) {
39 this();
40 layers = new LinkedList<>();
41 layers.add(l);
42 }
43
44 private CustomizeDrawingAction() {
45 super(tr("Customize track drawing"), ImageProvider.get("mapmode/addsegment"));
46 putValue("help", ht("/Action/GPXLayerCustomizeLineDrawing"));
47 }
48
49 @Override
50 public boolean supportLayers(List<Layer> layers) {
51 for (Layer layer : layers) {
52 if (!(layer instanceof GpxLayer)) {
53 return false;
54 }
55 }
56 return true;
57 }
58
59 @Override
60 public Component createMenuComponent() {
61 return new JMenuItem(this);
62 }
63
64 @Override
65 public Action getMultiLayerAction(List<Layer> layers) {
66 return new CustomizeDrawingAction(layers);
67 }
68
69 @Override
70 public void actionPerformed(ActionEvent e) {
71 boolean hasLocal = false;
72 boolean hasNonlocal = false;
73 for (Layer layer : layers) {
74 if (layer instanceof GpxLayer) {
75 if (((GpxLayer) layer).isLocalFile()) {
76 hasLocal = true;
77 } else {
78 hasNonlocal = true;
79 }
80 }
81 }
82 GPXSettingsPanel panel = new GPXSettingsPanel(layers.get(0).getName(), hasLocal, hasNonlocal);
83 JScrollPane scrollpane = GuiHelper.embedInVerticalScrollPane(panel);
84 scrollpane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
85 int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
86 if (screenHeight < 700) {
87 // to fit on screen 800x600
88 scrollpane.setPreferredSize(new Dimension(panel.getPreferredSize().width, Math.min(panel.getPreferredSize().height, 450)));
89 }
90 int answer = JOptionPane.showConfirmDialog(Main.parent, scrollpane, tr("Customize track drawing"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
91 if (answer == JOptionPane.CANCEL_OPTION || answer == JOptionPane.CLOSED_OPTION) {
92 return;
93 }
94 for (Layer layer : layers) {
95 // save preferences for all layers
96 boolean f = false;
97 if (layer instanceof GpxLayer) {
98 f = ((GpxLayer) layer).isLocalFile();
99 }
100 panel.savePreferences(layer.getName(), f);
101 }
102 Main.map.repaint();
103 }
104
105}
Note: See TracBrowser for help on using the repository browser.