source: josm/trunk/src/org/openstreetmap/josm/actions/DiskAccessAction.java@ 1808

Last change on this file since 1808 was 1808, checked in by Gubaer, 15 years ago

improved enabling/disabling of menu entries and action buttons depending on current state of JOSM (number of open layers, type of active layer, etc.)

  • Property svn:eol-style set to native
File size: 3.8 KB
Line 
1// License: GPL. Copyright 2007 by Immanuel Scholz and others
2package org.openstreetmap.josm.actions;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.io.File;
7import javax.swing.JFileChooser;
8import javax.swing.filechooser.FileFilter;
9import org.openstreetmap.josm.Main;
10import org.openstreetmap.josm.gui.ExtendedDialog;
11import org.openstreetmap.josm.tools.Shortcut;
12import org.openstreetmap.josm.io.FileImporter;
13
14/**
15 * Helper class for all actions that access the disk
16 */
17abstract public class DiskAccessAction extends JosmAction {
18
19 public DiskAccessAction(String name, String iconName, String tooltip, Shortcut shortcut) {
20 super(name, iconName, tooltip, shortcut, true);
21 }
22
23 public static JFileChooser createAndOpenFileChooser(boolean open, boolean multiple, String title) {
24 String curDir = Main.pref.get("lastDirectory");
25 if (curDir.equals("")) {
26 curDir = ".";
27 }
28 JFileChooser fc = new JFileChooser(new File(curDir));
29 if (title != null) {
30 fc.setDialogTitle(title);
31 }
32
33 fc.setMultiSelectionEnabled(multiple);
34 for (FileImporter imExporter: ExtensionFileFilter.importers) {
35 fc.addChoosableFileFilter(imExporter.filter);
36 }
37
38 fc.setAcceptAllFileFilterUsed(true);
39
40 int answer = open ? fc.showOpenDialog(Main.parent) : fc.showSaveDialog(Main.parent);
41 if (answer != JFileChooser.APPROVE_OPTION)
42 return null;
43
44 if (!fc.getCurrentDirectory().getAbsolutePath().equals(curDir)) {
45 Main.pref.put("lastDirectory", fc.getCurrentDirectory().getAbsolutePath());
46 }
47
48 if (!open) {
49 File file = fc.getSelectedFile();
50 if (file == null || (file.exists() && 1 !=
51 new ExtendedDialog(Main.parent,
52 tr("Overwrite"),
53 tr("File exists. Overwrite?"),
54 new String[] {tr("Overwrite"), tr("Cancel")},
55 new String[] {"save_as.png", "cancel.png"}).getValue()))
56 return null;
57 }
58
59 return fc;
60 }
61
62 public static File createAndOpenSaveFileChooser(String title, String extension) {
63 String curDir = Main.pref.get("lastDirectory");
64 if (curDir.equals("")) {
65 curDir = ".";
66 }
67 JFileChooser fc = new JFileChooser(new File(curDir));
68 if (title != null) {
69 fc.setDialogTitle(title);
70 }
71
72 fc.setMultiSelectionEnabled(false);
73 for (FileImporter imExporter: ExtensionFileFilter.importers) {
74 fc.addChoosableFileFilter(imExporter.filter);
75 }
76
77 fc.setAcceptAllFileFilterUsed(true);
78
79 int answer = fc.showSaveDialog(Main.parent);
80 if (answer != JFileChooser.APPROVE_OPTION)
81 return null;
82
83 if (!fc.getCurrentDirectory().getAbsolutePath().equals(curDir)) {
84 Main.pref.put("lastDirectory", fc.getCurrentDirectory().getAbsolutePath());
85 }
86
87 File file = fc.getSelectedFile();
88 if(extension != null){
89 String fn = file.getPath();
90 if(fn.indexOf('.') == -1)
91 {
92 FileFilter ff = fc.getFileFilter();
93 if (ff instanceof ExtensionFileFilter) {
94 fn += "." + ((ExtensionFileFilter)ff).defaultExtension;
95 } else {
96 fn += extension;
97 }
98 file = new File(fn);
99 }
100 }
101 if(file == null || (file.exists() && 1 != new ExtendedDialog(Main.parent,
102 tr("Overwrite"), tr("File exists. Overwrite?"),
103 new String[] {tr("Overwrite"), tr("Cancel")},
104 new String[] {"save_as.png", "cancel.png"}).getValue()))
105 return null;
106 return file;
107 }
108
109}
Note: See TracBrowser for help on using the repository browser.