Changeset 6523 in josm for trunk/src/org/openstreetmap/josm/gui/MainApplication.java
- Timestamp:
- 2013-12-24T20:26:51+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/MainApplication.java
r6471 r6523 7 7 import gnu.getopt.LongOpt; 8 8 9 import java.awt.Dimension; 9 10 import java.awt.Image; 10 11 import java.awt.Toolkit; … … 28 29 29 30 import javax.swing.JFrame; 31 import javax.swing.JOptionPane; 30 32 import javax.swing.RepaintManager; 31 33 import javax.swing.SwingUtilities; … … 33 35 import org.jdesktop.swinghelper.debug.CheckThreadViolationRepaintManager; 34 36 import org.openstreetmap.josm.Main; 37 import org.openstreetmap.josm.actions.PreferencesAction; 35 38 import org.openstreetmap.josm.data.AutosaveTask; 36 39 import org.openstreetmap.josm.data.CustomConfigurator; 37 import org.openstreetmap.josm.data.Preferences;38 40 import org.openstreetmap.josm.data.Version; 39 41 import org.openstreetmap.josm.gui.download.DownloadDialog; 40 42 import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder; 43 import org.openstreetmap.josm.gui.preferences.server.ProxyPreference; 41 44 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 42 45 import org.openstreetmap.josm.gui.util.GuiHelper; … … 340 343 DefaultAuthenticator.createInstance(); 341 344 Authenticator.setDefault(DefaultAuthenticator.getInstance()); 342 ProxySelector.setDefault(new DefaultProxySelector(ProxySelector.getDefault())); 345 DefaultProxySelector proxySelector = new DefaultProxySelector(ProxySelector.getDefault()); 346 ProxySelector.setDefault(proxySelector); 343 347 OAuthAccessTokenHolder.getInstance().init(Main.pref, CredentialsManager.getInstance()); 344 348 … … 407 411 } 408 412 409 final Map<Option, Collection<String>> args_final = args; 410 411 SwingUtilities.invokeLater(new Runnable() { 412 @Override 413 public void run() { 414 if (AutosaveTask.PROP_AUTOSAVE_ENABLED.get()) { 415 AutosaveTask autosaveTask = new AutosaveTask(); 416 List<File> unsavedLayerFiles = autosaveTask.getUnsavedLayersFiles(); 417 if (!unsavedLayerFiles.isEmpty()) { 418 ExtendedDialog dialog = new ExtendedDialog( 419 Main.parent, 420 tr("Unsaved osm data"), 421 new String[] {tr("Restore"), tr("Cancel"), tr("Discard")} 422 ); 423 dialog.setContent( 424 trn("JOSM found {0} unsaved osm data layer. ", 425 "JOSM found {0} unsaved osm data layers. ", unsavedLayerFiles.size(), unsavedLayerFiles.size()) + 426 tr("It looks like JOSM crashed last time. Would you like to restore the data?")); 427 dialog.setButtonIcons(new String[] {"ok", "cancel", "dialogs/delete"}); 428 int selection = dialog.showDialog().getValue(); 429 if (selection == 1) { 430 autosaveTask.recoverUnsavedLayers(); 431 } else if (selection == 3) { 432 autosaveTask.dicardUnsavedLayers(); 433 } 434 } 435 autosaveTask.schedule(); 436 } 437 438 postConstructorProcessCmdLine(args_final); 439 440 DownloadDialog.autostartIfNeeded(); 441 } 442 }); 413 SwingUtilities.invokeLater(new GuiFinalizationWorker(args, proxySelector)); 443 414 444 415 if (RemoteControl.PROP_REMOTECONTROL_ENABLED.get()) { … … 456 427 } 457 428 } 429 430 private static class GuiFinalizationWorker implements Runnable { 431 432 private final Map<Option, Collection<String>> args; 433 private final DefaultProxySelector proxySelector; 434 435 public GuiFinalizationWorker(Map<Option, Collection<String>> args, DefaultProxySelector proxySelector) { 436 this.args = args; 437 this.proxySelector = proxySelector; 438 } 439 440 @Override 441 public void run() { 442 443 // Handle proxy errors early to inform user he should change settings to be able to use JOSM correctly 444 handleProxyErrors(); 445 446 // Restore autosave layers after crash and start autosave thread 447 handleAutosave(); 448 449 // Handle command line instructions 450 postConstructorProcessCmdLine(args); 451 452 // Show download dialog if autostart is enabled 453 DownloadDialog.autostartIfNeeded(); 454 } 455 456 private void handleAutosave() { 457 if (AutosaveTask.PROP_AUTOSAVE_ENABLED.get()) { 458 AutosaveTask autosaveTask = new AutosaveTask(); 459 List<File> unsavedLayerFiles = autosaveTask.getUnsavedLayersFiles(); 460 if (!unsavedLayerFiles.isEmpty()) { 461 ExtendedDialog dialog = new ExtendedDialog( 462 Main.parent, 463 tr("Unsaved osm data"), 464 new String[] {tr("Restore"), tr("Cancel"), tr("Discard")} 465 ); 466 dialog.setContent( 467 trn("JOSM found {0} unsaved osm data layer. ", 468 "JOSM found {0} unsaved osm data layers. ", unsavedLayerFiles.size(), unsavedLayerFiles.size()) + 469 tr("It looks like JOSM crashed last time. Would you like to restore the data?")); 470 dialog.setButtonIcons(new String[] {"ok", "cancel", "dialogs/delete"}); 471 int selection = dialog.showDialog().getValue(); 472 if (selection == 1) { 473 autosaveTask.recoverUnsavedLayers(); 474 } else if (selection == 3) { 475 autosaveTask.dicardUnsavedLayers(); 476 } 477 } 478 autosaveTask.schedule(); 479 } 480 } 481 482 private static String getHtmlList(Collection<String> set) { 483 StringBuilder sb = new StringBuilder("<ul>"); 484 for (String s : set) { 485 sb.append("<li>"+s+"</li>"); 486 } 487 return sb.append("</ul>").toString(); 488 } 489 490 private void handleProxyErrors() { 491 if (proxySelector.hasErrors()) { 492 ExtendedDialog ed = new ExtendedDialog( 493 Main.parent, tr("Proxy errors occured"), 494 new String[]{tr("Change proxy settings"), tr("Cancel")}); 495 ed.setButtonIcons(new String[]{"dialogs/settings.png", "cancel.png"}).setCancelButton(2); 496 ed.setMinimumSize(new Dimension(460, 260)); 497 ed.setIcon(JOptionPane.WARNING_MESSAGE); 498 ed.setContent(tr("JOSM tried to access the following resources:")+ 499 "<br>"+getHtmlList(proxySelector.getErrorResources())+ 500 tr("but <b>failed</b> to do so, because of the following proxy errors:")+ 501 "<br>"+getHtmlList(proxySelector.getErrorMessages())+ 502 tr("Would you like to change your proxy settings now ?") 503 ); 504 505 if (ed.showDialog().getValue() == 1) { 506 PreferencesAction.forPreferenceSubTab(null, null, ProxyPreference.class).run(); 507 } 508 } 509 } 510 } 458 511 }
Note:
See TracChangeset
for help on using the changeset viewer.