Changeset 2029 in josm
- Timestamp:
- 2009-09-02T23:37:57+02:00 (15 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/actions
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/DiskAccessAction.java
r2020 r2029 7 7 8 8 import javax.swing.JFileChooser; 9 import javax.swing.filechooser.FileFilter;10 9 11 10 import org.openstreetmap.josm.Main; 12 11 import org.openstreetmap.josm.gui.ExtendedDialog; 13 import org.openstreetmap.josm.io.FileImporter;14 12 import org.openstreetmap.josm.tools.Shortcut; 15 13 … … 39 37 fc.setMultiSelectionEnabled(multiple); 40 38 fc.setAcceptAllFileFilterUsed(false); 41 FileFilter defaultFilter = null; 42 for (FileImporter imExporter: ExtensionFileFilter.importers) { 43 fc.addChoosableFileFilter(imExporter.filter); 44 if (extension != null && extension.endsWith(imExporter.filter.defaultExtension)) { 45 defaultFilter = imExporter.filter; 46 } 47 } 48 49 if (defaultFilter == null) { 50 defaultFilter = new ExtensionFileFilter.AllFormatsImporter().filter; 51 } 52 fc.setFileFilter(defaultFilter); 39 System.out.println("opening fc for extension " + extension); 40 ExtensionFileFilter.applyChoosableImportFileFilters(fc, extension); 53 41 54 42 int answer = open ? fc.showOpenDialog(Main.parent) : fc.showSaveDialog(Main.parent); -
trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
r2001 r2029 7 7 import java.util.ArrayList; 8 8 import java.util.Arrays; 9 9 import java.util.Collections; 10 import java.util.Comparator; 11 import java.util.LinkedList; 12 import java.util.List; 13 14 import javax.swing.JFileChooser; 10 15 import javax.swing.filechooser.FileFilter; 11 16 … … 26 31 * filters used in JOSM. 27 32 * 28 * @author imi29 33 */ 30 34 public class ExtensionFileFilter extends FileFilter { 31 private final String extension;32 private final String description;33 public final String defaultExtension;34 35 35 36 /** … … 41 42 public static ArrayList<FileExporter> exporters = new ArrayList<FileExporter>(Arrays.asList(new GpxExporter(), 42 43 new OsmExporter(), new OsmGzipExporter(), new OsmBzip2Exporter())); 43 44 45 46 private final String extensions; 47 private final String description; 48 /** 49 * @deprecated use {@see #getDefaultExtension() 50 */ 51 @Deprecated 52 public final String defaultExtension; 53 54 55 static protected void sort(List<ExtensionFileFilter> filters) { 56 Collections.sort( 57 filters, 58 new Comparator<ExtensionFileFilter>() { 59 private AllFormatsImporter all = new AllFormatsImporter(); 60 public int compare(ExtensionFileFilter o1, ExtensionFileFilter o2) { 61 if (o1.getDescription().equals(all.filter.getDescription())) return 1; 62 if (o2.getDescription().equals(all.filter.getDescription())) return -1; 63 return o1.getDescription().compareTo(o2.getDescription()); 64 } 65 } 66 ); 67 } 68 69 /** 70 * Replies an ordered list of {@see ExtensionFileFilter}s for importing. 71 * The list is ordered according to their description, an {@see AllFormatsImporter} 72 * is append at the end. 73 * 74 * @return an ordered list of {@see ExtensionFileFilter}s for importing. 75 */ 76 public static List<ExtensionFileFilter> getImportExtensionFileFilters() { 77 LinkedList<ExtensionFileFilter> filters = new LinkedList<ExtensionFileFilter>(); 78 for (FileImporter importer : importers) { 79 if (filters.contains(importer.filter)) { 80 continue; 81 } 82 filters.add(importer.filter); 83 } 84 sort(filters); 85 return filters; 86 } 87 88 /** 89 * Replies an ordered list of {@see ExtensionFileFilter}s for exporting. 90 * The list is ordered according to their description, an {@see AllFormatsImporter} 91 * is append at the end. 92 * 93 * @return an ordered list of {@see ExtensionFileFilter}s for exporting. 94 */ 95 public static List<ExtensionFileFilter> getExportExtensionFileFilters() { 96 LinkedList<ExtensionFileFilter> filters = new LinkedList<ExtensionFileFilter>(); 97 for (FileExporter exporter : exporters) { 98 if (filters.contains(exporter.filter)) { 99 continue; 100 } 101 filters.add(exporter.filter); 102 } 103 sort(filters); 104 return filters; 105 } 106 107 /** 108 * Replies the default {@see ExtensionFileFilter} for a given extension 109 * 110 * @param extension the extension 111 * @return the default {@see ExtensionFileFilter} for a given extension 112 */ 113 public static ExtensionFileFilter getDefaultImportExtensionFileFilter(String extension) { 114 if (extension == null) return new AllFormatsImporter().filter; 115 for (FileImporter importer : importers) { 116 if (extension.equals(importer.filter.getDefaultExtension())) 117 return importer.filter; 118 } 119 return new AllFormatsImporter().filter; 120 } 121 122 /** 123 * Replies the default {@see ExtensionFileFilter} for a given extension 124 * 125 * @param extension the extension 126 * @return the default {@see ExtensionFileFilter} for a given extension 127 */ 128 public static ExtensionFileFilter getDefaultExportExtensionFileFilter(String extension) { 129 if (extension == null) return new AllFormatsImporter().filter; 130 for (FileExporter exporter : exporters) { 131 if (extension.equals(exporter.filter.getDefaultExtension())) 132 return exporter.filter; 133 } 134 return new AllFormatsImporter().filter; 135 } 136 137 /** 138 * Applies the choosable {@see FileFilter} to a {@see JFileChooser} before using the 139 * file chooser for selecting a file for reading. 140 * 141 * @param fileChooser the file chooser 142 * @param extension the default extension 143 */ 144 public static void applyChoosableImportFileFilters(JFileChooser fileChooser, String extension) { 145 for (ExtensionFileFilter filter: getImportExtensionFileFilters()) { 146 fileChooser.addChoosableFileFilter(filter); 147 } 148 fileChooser.setFileFilter(getDefaultImportExtensionFileFilter(extension)); 149 } 150 151 /** 152 * Applies the choosable {@see FileFilter} to a {@see JFileChooser} before using the 153 * file chooser for selecting a file for writing. 154 * 155 * @param fileChooser the file chooser 156 * @param extension the default extension 157 */ 158 public static void applyChoosableExportFileFilters(JFileChooser fileChooser, String extension) { 159 for (ExtensionFileFilter filter: getExportExtensionFileFilters()) { 160 fileChooser.addChoosableFileFilter(filter); 161 } 162 fileChooser.setFileFilter(getDefaultExportExtensionFileFilter(extension)); 163 } 164 44 165 /** 45 166 * Construct an extension file filter by giving the extension to check after. 46 167 */ 47 public ExtensionFileFilter(String extension, String def Ext, String description) {48 this.extension = extension;49 defaultExtension = defExt;168 public ExtensionFileFilter(String extension, String defaultExtension, String description) { 169 this.extensions = extension; 170 this.defaultExtension = defaultExtension; 50 171 this.description = description; 51 172 } … … 53 174 public boolean acceptName(String filename) { 54 175 String name = filename.toLowerCase(); 55 for (String ext : extension .split(","))176 for (String ext : extensions.split(",")) 56 177 if (name.endsWith("."+ext)) 57 178 return true; … … 68 189 return description; 69 190 } 70 191 192 public String getDefaultExtension() { 193 return defaultExtension; 194 } 195 71 196 /** 72 197 * Dummy importer that adds the "All Formats"-Filter when opening files … … 75 200 public AllFormatsImporter() { 76 201 super( 77 new ExtensionFileFilter("osm,xml,osm.gz,osm.bz2,osm.bz,gpx,gpx.gz,nmea,nme,nma,txt", "", tr("All Formats")78 + " (*.gpx *.osm *.nmea ...)"));202 new ExtensionFileFilter("osm,xml,osm.gz,osm.bz2,osm.bz,gpx,gpx.gz,nmea,nme,nma,txt,wms", "", tr("All Formats") 203 + " (*.gpx *.osm *.nmea ...)")); 79 204 } 80 205 @Override public boolean acceptFile(File pathname) { … … 82 207 } 83 208 } 209 210 @Override 211 public int hashCode() { 212 final int prime = 31; 213 int result = 1; 214 result = prime * result + ((defaultExtension == null) ? 0 : defaultExtension.hashCode()); 215 result = prime * result + ((description == null) ? 0 : description.hashCode()); 216 result = prime * result + ((extensions == null) ? 0 : extensions.hashCode()); 217 return result; 218 } 219 220 @Override 221 public boolean equals(Object obj) { 222 if (this == obj) 223 return true; 224 if (obj == null) 225 return false; 226 if (getClass() != obj.getClass()) 227 return false; 228 ExtensionFileFilter other = (ExtensionFileFilter) obj; 229 if (defaultExtension == null) { 230 if (other.defaultExtension != null) 231 return false; 232 } else if (!defaultExtension.equals(other.defaultExtension)) 233 return false; 234 if (description == null) { 235 if (other.description != null) 236 return false; 237 } else if (!description.equals(other.description)) 238 return false; 239 if (extensions == null) { 240 if (other.extensions != null) 241 return false; 242 } else if (!extensions.equals(other.extensions)) 243 return false; 244 return true; 245 } 84 246 } -
trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
r2025 r2029 112 112 public static File openFileDialog(Layer layer) { 113 113 if (layer instanceof OsmDataLayer) 114 return createAndOpenSaveFileChooser(tr("Save OSM file"), " .osm");114 return createAndOpenSaveFileChooser(tr("Save OSM file"), "osm"); 115 115 else if (layer instanceof GpxLayer) 116 return createAndOpenSaveFileChooser(tr("Save GPX file"), " .gpx");117 return createAndOpenSaveFileChooser(tr("Save Layer"), " .lay");116 return createAndOpenSaveFileChooser(tr("Save GPX file"), "gpx"); 117 return createAndOpenSaveFileChooser(tr("Save Layer"), "lay"); 118 118 } 119 119 … … 167 167 fc.setMultiSelectionEnabled(false); 168 168 fc.setAcceptAllFileFilterUsed(false); 169 170 FileFilter defaultFilter = null; 171 for (FileExporter exporter : ExtensionFileFilter.exporters) { 172 fc.addChoosableFileFilter(exporter.filter); 173 if (extension.endsWith(exporter.filter.defaultExtension)) { 174 defaultFilter = exporter.filter; 175 } 176 } 177 if (defaultFilter != null) { 178 fc.setFileFilter(defaultFilter); 179 } 180 169 ExtensionFileFilter.applyChoosableExportFileFilters(fc, extension); 181 170 int answer = fc.showSaveDialog(Main.parent); 182 171 if (answer != JFileChooser.APPROVE_OPTION) … … 194 183 FileFilter ff = fc.getFileFilter(); 195 184 if (ff instanceof ExtensionFileFilter) { 196 fn += "." + ((ExtensionFileFilter)ff). defaultExtension;185 fn += "." + ((ExtensionFileFilter)ff).getDefaultExtension(); 197 186 } else { 198 187 fn += extension;
Note:
See TracChangeset
for help on using the changeset viewer.