Changeset 19666 in josm
- Timestamp:
- 2026-10-26T16:33:27+01:00 (2 days ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
r19123 r19666 94 94 fc = createAndOpenFileChooser(true, true, null, null, FILES_AND_DIRECTORIES, true, null); 95 95 } 96 if (fc == null) 96 if (fc == null) { 97 97 return; 98 File[] files = fc.getSelectedFiles(); 99 OpenFileTask task = new OpenFileTask(Arrays.asList(files), fc.getFileFilter()); 98 } 99 final File[] files = fc.getSelectedFiles(); 100 final OpenFileTask task = new OpenFileTask(Arrays.asList(files), fc.getFileFilter()); 100 101 task.setOptions(Options.RECORD_HISTORY); 101 102 MainApplication.worker.submit(task); … … 126 127 */ 127 128 public static Future<?> openFiles(List<File> fileList, Options... options) { 128 OpenFileTask task = new OpenFileTask(fileList, null); 129 final OpenFileTask task = new OpenFileTask(fileList, null); 129 130 task.setOptions(options); 130 131 return MainApplication.worker.submit(task); … … 168 169 } 169 170 } else { 170 String message = tr("Unable to locate file ''{0}''.", file.getPath()); 171 final String message = tr("Unable to locate file ''{0}''.", file.getPath()); 171 172 Logging.warn(message); 172 173 new Notification(message).setIcon(JOptionPane.WARNING_MESSAGE).show(); … … 221 222 @Override 222 223 protected void finish() { 223 MapFrame map = MainApplication.getMap(); 224 final MapFrame map = MainApplication.getMap(); 224 225 if (map != null) { 225 226 map.repaint(); … … 276 277 @Override 277 278 protected void realRun() throws SAXException, IOException, OsmTransferException { 278 if (Utils.isEmpty(files)) return; 279 List<Layer> oldLayers = MainApplication.getLayerManager().getLayers(); 279 if (Utils.isEmpty(files)) { 280 return; 281 } 282 final List<Layer> oldLayers = MainApplication.getLayerManager().getLayers(); 280 283 281 284 /* … … 301 304 if (chosenImporter != null) { 302 305 // The importer was explicitly chosen, so use it. 303 List<File> filesNotMatchingWithImporter = new LinkedList<>(); 304 List<File> filesMatchingWithImporter = new LinkedList<>(); 306 final List<File> filesNotMatchingWithImporter = new LinkedList<>(); 307 final List<File> filesMatchingWithImporter = new LinkedList<>(); 305 308 for (final File f : files) { 306 309 if (!chosenImporter.acceptFile(f)) { … … 328 331 } else { 329 332 // find appropriate importer 330 MultiMap<FileImporter, File> importerMap = new MultiMap<>(); 331 List<File> filesWithUnknownImporter = new LinkedList<>(); 332 List<File> urlFiles = new LinkedList<>(); 333 FILES: for (File f : files) { 333 final MultiMap<FileImporter, File> importerMap = new MultiMap<>(); 334 final List<File> filesWithUnknownImporter = new LinkedList<>(); 335 final List<File> urlFiles = new LinkedList<>(); 336 for (File f : files) { 337 boolean imported = false; 334 338 for (FileImporter importer : ExtensionFileFilter.getImporters()) { 335 339 if (importer.acceptFile(f)) { 336 340 importerMap.put(importer, f); 337 continue FILES; 341 imported = true; 342 break; 338 343 } 339 344 } 340 if (URL_FILE_FILTER.accept(f)) { 341 urlFiles.add(f); 342 } else { 343 filesWithUnknownImporter.add(f); 344 } 345 } 345 if (!imported) { 346 if (URL_FILE_FILTER.accept(f)) { 347 urlFiles.add(f); 348 } else { 349 filesWithUnknownImporter.add(f); 350 } 351 } 352 } 353 346 354 if (!filesWithUnknownImporter.isEmpty()) { 347 355 alertFilesWithUnknownImporter(filesWithUnknownImporter); 348 356 } 349 List<FileImporter> importers = new ArrayList<>(importerMap.keySet()); 350 Collections.sort(importers); 351 Collections.reverse(importers); 357 final List<FileImporter> importers = new ArrayList<>(importerMap.keySet()); 358 importers.sort(Collections.reverseOrder()); 352 359 353 360 for (FileImporter importer : importers) { … … 355 362 } 356 363 357 Pattern urlPattern = Pattern.compile(".*(https?://.*)"); 364 final Pattern urlPattern = Pattern.compile(".*(https?://.*)"); 358 365 for (File urlFile: urlFiles) { 359 366 try (BufferedReader reader = Files.newBufferedReader(urlFile.toPath(), StandardCharsets.UTF_8)) { 360 367 String line; 361 368 while ((line = reader.readLine()) != null) { 362 Matcher m = urlPattern.matcher(line); 369 final Matcher m = urlPattern.matcher(line); 363 370 if (m.matches()) { 364 String url = m.group(1); 371 final String url = m.group(1); 365 372 MainApplication.getMenu().openLocation.openUrl(false, url); 366 373 } … … 375 382 376 383 if (this.options.contains(Options.RECORD_HISTORY)) { 377 Collection<String> oldFileHistory = Config.getPref().getList("file-open.history"); 384 final Collection<String> oldFileHistory = Config.getPref().getList("file-open.history"); 378 385 fileHistory.addAll(oldFileHistory); 379 386 // remove the files which failed to load from the list 380 387 fileHistory.removeAll(failedAll); 381 int maxsize = Math.max(0, Config.getPref().getInt("file-open.history.max-size", 15)); 388 final int maxsize = Math.max(0, Config.getPref().getInt("file-open.history.max-size", 15)); 382 389 PreferencesUtils.putListBounded(Config.getPref(), "file-open.history", maxsize, new ArrayList<>(fileHistory)); 383 390 } … … 391 398 // And the layer(s) must be added to the layer list in order for the dialog to work properly. 392 399 MainApplication.worker.execute(() -> GuiHelper.runInEDT(() -> { 393 List<Layer> newLayers = MainApplication.getLayerManager().getLayers(); 400 final List<Layer> newLayers = MainApplication.getLayerManager().getLayers(); 394 401 // see #23728: open first image of topmost new image layer 395 402 for (Layer l : newLayers) { 396 if (oldLayers.contains(l)) 403 if (oldLayers.contains(l)) { 397 404 return; 405 } 398 406 if (l instanceof GeoImageLayer) { 399 GeoImageLayer imageLayer = (GeoImageLayer) l; 407 final GeoImageLayer imageLayer = (GeoImageLayer) l; 400 408 imageLayer.jumpToNextMarker(); 401 409 return; … … 413 421 importer.setOptions(this.options.toArray(new Options[0])); 414 422 if (importer.isBatchImporter()) { 415 if (canceled) return; 416 String msg = trn("Opening {0} file...", "Opening {0} files...", files.size(), files.size()); 423 if (canceled) { 424 return; 425 } 426 final String msg = trn("Opening {0} file...", "Opening {0} files...", files.size(), files.size()); 417 427 getProgressMonitor().setCustomText(msg); 418 428 getProgressMonitor().indeterminateSubTask(msg); … … 422 432 } else { 423 433 for (File f : files) { 424 if (canceled) return; 434 if (canceled) { 435 return; 436 } 425 437 getProgressMonitor().indeterminateSubTask(tr("Opening file ''{0}'' ...", f.getAbsolutePath())); 426 438 if (importer.importDataHandleExceptions(f, getProgressMonitor().createSubTaskMonitor(1, false))) {
Note:
See TracChangeset
for help on using the changeset viewer.
