source: josm/trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java@ 7937

Last change on this file since 7937 was 7937, checked in by bastiK, 9 years ago

add subversion property svn:eol=native

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1// License: GPL. See LICENSE file for details.
2package org.openstreetmap.josm.gui.preferences.advanced;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.event.ActionEvent;
7import java.io.File;
8import java.util.ArrayList;
9import java.util.List;
10import java.util.Map;
11
12import javax.swing.AbstractAction;
13import javax.swing.JFileChooser;
14import javax.swing.JOptionPane;
15import javax.swing.filechooser.FileFilter;
16
17import org.openstreetmap.josm.Main;
18import org.openstreetmap.josm.actions.DiskAccessAction;
19import org.openstreetmap.josm.data.CustomConfigurator;
20import org.openstreetmap.josm.data.Preferences;
21import org.openstreetmap.josm.data.Preferences.Setting;
22import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
23
24/**
25 * Action that exports some fragment of settings to custom configuration file
26 */
27public class ExportProfileAction extends AbstractAction {
28 private final String prefPattern;
29 private final String schemaKey;
30 private final Preferences prefs;
31
32 /**
33 * Constructs a new {@code ExportProfileAction}.
34 */
35 public ExportProfileAction(Preferences prefs, String schemaKey, String prefPattern) {
36 super(tr("Save {0} profile", tr(schemaKey)));
37 this.prefs = prefs;
38 this.prefPattern = prefPattern;
39 this.schemaKey = schemaKey;
40 }
41
42 @Override
43 public void actionPerformed(ActionEvent ae) {
44 List<String> keys = new ArrayList<>();
45 Map<String, Setting<?>> all = prefs.getAllSettings();
46 for (String key: all.keySet()) {
47 if (key.matches(prefPattern)) {
48 keys.add(key);
49 }
50 }
51 if (keys.isEmpty()) {
52 JOptionPane.showMessageDialog(Main.parent,
53 tr("All the preferences of this group are default, nothing to save"), tr("Warning"), JOptionPane.WARNING_MESSAGE);
54 return;
55 }
56 File f = askUserForCustomSettingsFile();
57 if (f!=null)
58 CustomConfigurator.exportPreferencesKeysToFile(f.getAbsolutePath(), false, keys);
59 }
60
61 private File askUserForCustomSettingsFile() {
62 String title = tr("Choose profile file");
63
64 FileFilter filter = new FileFilter() {
65 @Override
66 public boolean accept(File f) {
67 return f.isDirectory() || f.getName().toLowerCase().endsWith(".xml") && f.getName().toLowerCase().startsWith(schemaKey);
68 }
69 @Override
70 public String getDescription() {
71 return tr("JOSM custom settings files (*.xml)");
72 }
73 };
74 AbstractFileChooser fc = DiskAccessAction.createAndOpenFileChooser(false, false, title, filter, JFileChooser.FILES_ONLY, "customsettings.lastDirectory");
75 if (fc != null) {
76 File sel = fc.getSelectedFile();
77 if (!sel.getName().endsWith(".xml")) sel=new File(sel.getAbsolutePath()+".xml");
78 if (!sel.getName().startsWith(schemaKey)) {
79 sel = new File(sel.getParentFile().getAbsolutePath()+"/"+schemaKey+"_"+sel.getName());
80 }
81 return sel;
82 }
83 return null;
84 }
85}
Note: See TracBrowser for help on using the repository browser.