- Timestamp:
- 2010-02-14T13:49:15+01:00 (14 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
r2946 r2980 12 12 import java.util.ArrayList; 13 13 import java.util.Arrays; 14 import java.util.Collection; 14 15 import java.util.Collections; 16 import java.util.LinkedList; 15 17 import java.util.List; 16 18 … … 20 22 21 23 import org.openstreetmap.josm.Main; 24 import org.openstreetmap.josm.gui.HelpAwareOptionPane; 22 25 import org.openstreetmap.josm.gui.PleaseWaitRunnable; 26 import org.openstreetmap.josm.gui.help.HelpUtil; 23 27 import org.openstreetmap.josm.io.AllFormatsImporter; 24 28 import org.openstreetmap.josm.io.FileImporter; … … 89 93 } 90 94 95 protected void alertFilesNotMatchingWithImporter(Collection<File> files, FileImporter importer) { 96 StringBuffer msg = new StringBuffer(); 97 msg.append("<html>"); 98 msg.append( 99 trn( 100 "Cannot open {0} file with the file importer ''{1}''. Skipping the following files:", 101 "Cannot open {0} files with the file importer ''{1}''. Skipping the following files:", 102 files.size(), 103 files.size(), 104 importer.filter.getDescription() 105 ) 106 ).append("<br>"); 107 msg.append("<ul>"); 108 for (File f: files) { 109 msg.append("<li>").append(f.getAbsolutePath()).append("</li>"); 110 } 111 msg.append("</ul>"); 112 113 HelpAwareOptionPane.showOptionDialog( 114 Main.parent, 115 msg.toString(), 116 tr("Warning"), 117 JOptionPane.WARNING_MESSAGE, 118 HelpUtil.ht("/Action/OpenFile#ImporterCantImportFiles") 119 ); 120 } 121 122 protected void alertFilesWithUnknownImporter(Collection<File> files) { 123 StringBuffer msg = new StringBuffer(); 124 msg.append("<html>"); 125 msg.append( 126 trn( 127 "Cannot open {0} file because no suitable file importer is available. Skipping the following files:", 128 "Cannot open {0} files because no suitable file importer is available. Skipping the following files:", 129 files.size(), 130 files.size() 131 ) 132 ).append("<br>"); 133 msg.append("<ul>"); 134 for (File f: files) { 135 msg.append("<li>").append(f.getAbsolutePath()).append("</li>"); 136 } 137 msg.append("</ul>"); 138 139 HelpAwareOptionPane.showOptionDialog( 140 Main.parent, 141 msg.toString(), 142 tr("Warning"), 143 JOptionPane.WARNING_MESSAGE, 144 HelpUtil.ht("/Action/OpenFile#MissingImporterForFiles") 145 ); 146 } 147 91 148 @Override 92 149 protected void realRun() throws SAXException, IOException, OsmTransferException { … … 111 168 getProgressMonitor().setTicksCount(files.size()); 112 169 113 if (chosenImporter != null) { // The importer was expicitely chosen, so use it. 114 //System.err.println("Importer: " +chosenImporter.getClass().getName()); 170 if (chosenImporter != null) { 171 // The importer was expicitely chosen, so use it. 172 List<File> filesNotMatchingWithImporter = new LinkedList<File>(); 173 List<File> filesMatchingWithImporter = new LinkedList<File>(); 115 174 for (File f : files) { 116 175 if (!chosenImporter.acceptFile(f)) { 117 176 if (f.isDirectory()) { 118 JOptionPane.showMessageDialog( 119 Main.parent, 120 tr("<html>Cannot open directory.<br>Please select a file!</html>"), 121 tr("Open file"), 122 JOptionPane.INFORMATION_MESSAGE 123 ); 124 return; 125 } else 126 throw new IllegalStateException(); 177 JOptionPane.showMessageDialog(Main.parent, tr( 178 "<html>Cannot open directory ''{0}''.<br>Please select a file.</html>", f 179 .getAbsolutePath()), tr("Open file"), JOptionPane.ERROR_MESSAGE); 180 } else { 181 filesNotMatchingWithImporter.add(f); 182 } 183 } else { 184 filesMatchingWithImporter.add(f); 127 185 } 128 186 } 129 importData(chosenImporter, files); 130 } 131 else { // find apropriate importer 187 188 if (!filesNotMatchingWithImporter.isEmpty()) { 189 alertFilesNotMatchingWithImporter(filesNotMatchingWithImporter, chosenImporter); 190 } 191 if (!filesNotMatchingWithImporter.isEmpty()) { 192 importData(chosenImporter, filesMatchingWithImporter); 193 } 194 } else { 195 // find appropriate importer 132 196 MultiMap<FileImporter, File> map = new MultiMap<FileImporter, File>(); 133 FILES: 134 for (File f: files) { 135 for (FileImporter importer : ExtensionFileFilter.importers) { 136 if (importer.acceptFile(f)) { 137 map.put(importer, f); 138 continue FILES; 139 } 197 List<File> filesWithKnownImporter = new LinkedList<File>(); 198 List<File> filesWithUnknownImporter = new LinkedList<File>(); 199 FILES: for (File f : files) { 200 for (FileImporter importer : ExtensionFileFilter.importers) { 201 if (importer.acceptFile(f)) { 202 map.put(importer, f); 203 filesWithKnownImporter.add(f); 204 continue FILES; 140 205 } 141 throw new RuntimeException(); // no importer found142 206 } 207 filesWithUnknownImporter.add(f); 208 } 209 if (!filesWithUnknownImporter.isEmpty()) { 210 alertFilesWithUnknownImporter(filesWithUnknownImporter); 211 } 143 212 List<FileImporter> ims = new ArrayList<FileImporter>(map.keySet()); 144 213 Collections.sort(ims); 145 214 Collections.reverse(ims); 146 215 for (FileImporter importer : ims) { 147 //System.err.println("Using "+importer.getClass().getName());148 216 List<File> files = new ArrayList<File>(map.get(importer)); 149 //System.err.println("for files: "+files);150 217 importData(importer, files); 151 218 } … … 162 229 msg = trn("Opening {0} file...", "Opening {0} files...", files.size(), files.size()); 163 230 } 231 getProgressMonitor().setCustomText(msg); 164 232 getProgressMonitor().indeterminateSubTask(msg); 165 233 importer.importDataHandleExceptions(files, getProgressMonitor().createSubTaskMonitor(files.size(), false)); -
trunk/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
r2689 r2980 13 13 import org.openstreetmap.josm.gui.progress.ProgressMonitor.CancelListener; 14 14 import org.openstreetmap.josm.io.OsmTransferException; 15 import org.openstreetmap.josm.tools.BugReportExceptionHandler; 15 16 import org.openstreetmap.josm.tools.CheckParameterUtil; 16 17 import org.xml.sax.SAXException; … … 103 104 SwingUtilities.invokeLater(new Runnable() { 104 105 public void run() { 105 ExceptionDialogUtil.explainException(e); 106 if (e instanceof RuntimeException) { 107 BugReportExceptionHandler.handleException(e); 108 } else { 109 ExceptionDialogUtil.explainException(e); 110 } 106 111 } 107 112 });
Note:
See TracChangeset
for help on using the changeset viewer.