private static boolean confirmEulaAcceptance(PreferenceTabbedPane gui, String eulaUrl) { URL url = null; try { url = new URL(eulaUrl.replaceAll("\\{lang\\}", LanguageInfo.getWikiLanguagePrefix())); JosmEditorPane htmlPane = null; try { htmlPane = new JosmEditorPane(url); } catch (IOException e1) { Main.trace(e1); // give a second chance with a default Locale 'en' try { url = new URL(eulaUrl.replaceAll("\\{lang\\}", "")); htmlPane = new JosmEditorPane(url); } catch (IOException e2) { Main.debug(e2); JOptionPane.showMessageDialog(gui, tr("EULA license URL not available: {0}", eulaUrl)); return false; } } Box box = Box.createVerticalBox(); htmlPane.setEditable(false); JScrollPane scrollPane = new JScrollPane(htmlPane); scrollPane.setPreferredSize(new Dimension(400, 400)); box.add(scrollPane); int option = JOptionPane.showConfirmDialog( Main.parent, box, tr("Please abort if you are not sure"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (option == JOptionPane.YES_OPTION) return true; } catch (MalformedURLException e2) { JOptionPane.showMessageDialog(gui, tr("Malformed URL for the EULA licence: {0}", eulaUrl)); } return false; }
@Override protected void realRun() throws SAXException, IOException, OsmTransferException { LinkedList<StyleSourceInfo> styles = new LinkedList<StyleSourceInfo>(); String lang = LanguageInfo.getLanguageCodeXML(); try { MirroredInputStream stream = new MirroredInputStream(url); InputStreamReader r; try { r = new InputStreamReader(stream, "UTF-8"); } catch (UnsupportedEncodingException e) { r = new InputStreamReader(stream); } BufferedReader reader = new BufferedReader(r); String line; StyleSourceInfo last = null; while ((line = reader.readLine()) != null && !canceled) { if (line.trim().equals("")) { continue; // skip empty lines } if (line.startsWith("\t")) { Matcher m = Pattern.compile("^\t([^:]+): *(.+)$").matcher(line); if (!m.matches()) { System.err.println( tr( "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''", url, line)); continue; } if (last != null) { String key = m.group(1); String value = m.group(2); if ("author".equals(key) && last.author == null) { last.author = value; } else if ("version".equals(key)) { last.version = value; } else if ("link".equals(key) && last.link == null) { last.link = value; } else if ("description".equals(key) && last.description == null) { last.description = value; } else if ("shortdescription".equals(key) && last.shortdescription == null) { last.shortdescription = value; } else if ((lang + "author").equals(key)) { last.author = value; } else if ((lang + "link").equals(key)) { last.link = value; } else if ((lang + "description").equals(key)) { last.description = value; } else if ((lang + "shortdescription").equals(key)) { last.shortdescription = value; } } } else { last = null; Matcher m = Pattern.compile("^(.+);(.+)$").matcher(line); if (m.matches()) { styles.add(last = new StyleSourceInfo(m.group(1), m.group(2))); } else { System.err.println( tr( "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''", url, line)); } } } } catch (Exception e) { if (canceled) // ignore the exception and return return; warn(e); return; } availableStylesModel.setStyleSources(styles); }