Revision 37944 trunk/applications/appgvSIG/src/com/iver/cit/gvsig/addlayer/fileopen/FileOpenWizard.java

View differences:

FileOpenWizard.java
71 71
	 * Lista de manejadores de ficheros (extensiones)
72 72
	 */
73 73
	private ArrayList<IFileOpen> listFileOpen = new ArrayList<IFileOpen>();
74
	
75
	private class FileFilterAll extends FileFilter {
76
		private ArrayList<FileFilter> all = null;
77
		
78
		public void setAllFileFilters(ArrayList<FileFilter> all) {
79
			this.all = all;
80
		}
81
		
82
		public String getDescription() {
83
			return PluginServices.getText(null, "All_supported_files");
84
		}
85
		
86
		public boolean accept(File f) {
87
			for (int j = 0; j < all.size(); j++) {
88
				FileFilter fileFilter = all.get(j);
89
				if (fileFilter.accept(f)) {
90
					return true;
91
				}
92
			}
93
			return false;
94
		}
74 95

  
96
	};
97

  
75 98
	/**
76 99
	 * Construye un FileOpenWizard usando la extension por defecto
77 100
	 * 'FileExtendingOpenDialog'
......
287 310
		fileChooser.setMultiSelectionEnabled(true);
288 311
		fileChooser.setAcceptAllFileFilterUsed(false);
289 312

  
313
		FileFilterAll allFileFilter = new FileFilterAll();
314
		
290 315
		boolean finded = false;
291
		FileFilter auxFilter=null;
316
		FileFilter auxFilter=null;		
317
		ArrayList<FileFilter> allFileFilters = new ArrayList<FileFilter>();
292 318
		for (int i = 0; i < listFileOpen.size(); i++) {
293 319
			IFileOpen fileOpen = listFileOpen.get(i);
294 320
			fileOpen.pre();
......
297 323
			for (int j = 0; j < aux.size(); j++) {
298 324
				FileFilter fileFilter = aux.get(j);
299 325
				fileChooser.addChoosableFileFilter(fileFilter);
326
				allFileFilters.add(fileFilter);
300 327
				if (lastFileFilter!=null && lastFileFilter.getDescription().equals(fileFilter.getDescription())){
301 328
					auxFilter=fileFilter;
302 329
					finded = true;
303 330
				}
304 331
			}
305 332
		}
333
		allFileFilter.setAllFileFilters(allFileFilters);
334
		fileChooser.addChoosableFileFilter(allFileFilter);
306 335
		if (finded && (lastFileFilter != null))
307 336
			fileChooser.setFileFilter(auxFilter);
308 337

  
......
314 343
			lastPath = fileChooser.getCurrentDirectory().getAbsolutePath();
315 344
			lastFileFilter = (FileFilter) fileChooser.getFileFilter();
316 345
			newFiles = fileChooser.getSelectedFiles();
346
			
347
			FileFilter selectedFileFilter = fileChooser.getFileFilter();
348
			if (selectedFileFilter == allFileFilter) {
349
			}
317 350

  
318 351
			IFileOpen lastFileOpen = null;
352
			// Para cada fichero, queremos saber su fileFilter para llamar al post correspondiente
353
			
319 354
			for (int i = 0; i < listFileOpen.size(); i++) {
320 355
				IFileOpen fileOpen = listFileOpen.get(i);
321 356
				ArrayList<FileFilter> aux = fileOpen.getFileFilter();
322 357
				for (int j = 0; j < aux.size(); j++) {
323
					if (fileChooser.getFileFilter() == aux.get(j)) {
358
					//if (fileChooser.getFileFilter() == aux.get(j)) {
324 359
						for (int iFile = 0; iFile < newFiles.length; iFile++) {
325 360
							try {
326
								newFiles[iFile] = fileOpen.post(newFiles[iFile]);
361
								File f = newFiles[iFile];
362
								if (aux.get(j).accept(f)) {
363
									newFiles[iFile] = fileOpen.post(f);
364
									String driverName = aux.get(j).getDescription();
365
									toAdd.add(new MyFile(f, driverName, fileOpen));
366
									
367
								}
327 368
							} catch (LoadLayerException e) {
328 369
								newFiles[iFile] = null;
329 370
							}
330 371
						}
331 372
						lastFileOpen = fileOpen;
332
						break;
333
					}
373
//						break;
374
//					}
334 375
				}
335 376
			}
336 377

  
337
			for (int ind = 0; ind < newFiles.length; ind++) {
338
				if (newFiles[ind] == null)
339
					continue;
340
				String driverName = ((FileFilter) fileChooser.getFileFilter()).getDescription();
341
				toAdd.add(new MyFile(newFiles[ind], driverName, lastFileOpen));
342
			}
378
//			for (int ind = 0; ind < newFiles.length; ind++) {
379
//				if (newFiles[ind] == null)
380
//					continue;
381
//				String driverName = ((FileFilter) fileChooser.getFileFilter()).getDescription();
382
//				toAdd.add(new MyFile(newFiles[ind], driverName, lastFileOpen));
383
//			}
343 384

  
344 385
			return toAdd.toArray();
345 386
		} else

Also available in: Unified diff