public void _setWhatsNew() { if (sWhatsNew.indexOf("<html") >= 0 || sWhatsNew.indexOf("<HTML") >= 0) { BrowserWrapper browser = Utils.createSafeBrowser(cWhatsNew, SWT.NONE); if (browser != null) { browser.setText(sWhatsNew); } else { try { File tempFile = File.createTempFile("AZU", ".html"); tempFile.deleteOnExit(); FileUtil.writeBytesAsFile(tempFile.getAbsolutePath(), sWhatsNew.getBytes("utf8")); Utils.launch(tempFile.getAbsolutePath()); shell.dispose(); return; } catch (IOException e) { } } } else { StyledText helpPanel = new StyledText(cWhatsNew, SWT.VERTICAL | SWT.HORIZONTAL); helpPanel.setEditable(false); try { helpPanel.setRedraw(false); helpPanel.setWordWrap(false); helpPanel.setFont(monospace); black = ColorCache.getColor(display, 0, 0, 0); white = ColorCache.getColor(display, 255, 255, 255); light = ColorCache.getColor(display, 200, 200, 200); grey = ColorCache.getColor(display, 50, 50, 50); green = ColorCache.getColor(display, 30, 80, 30); blue = ColorCache.getColor(display, 20, 20, 80); int style; boolean setStyle; helpPanel.setForeground(grey); String[] lines = sWhatsNew.split("\\r?\\n"); for (int i = 0; i < lines.length; i++) { String line = lines[i]; setStyle = false; fg = grey; bg = white; style = SWT.NORMAL; char styleChar; String text; if (line.length() < 2) { styleChar = ' '; text = " " + lineSeparator; } else { styleChar = line.charAt(0); text = line.substring(1) + lineSeparator; } switch (styleChar) { case '*': text = " * " + text; fg = green; setStyle = true; break; case '+': text = " " + text; fg = black; bg = light; style = SWT.BOLD; setStyle = true; break; case '!': style = SWT.BOLD; setStyle = true; break; case '@': fg = blue; setStyle = true; break; case '$': bg = blue; fg = white; style = SWT.BOLD; setStyle = true; break; case ' ': text = " " + text; break; default: text = styleChar + text; } helpPanel.append(text); if (setStyle) { int lineCount = helpPanel.getLineCount() - 1; int charCount = helpPanel.getCharCount(); // System.out.println("Got Linecount " + lineCount + ", Charcount " + // charCount); int lineOfs = helpPanel.getOffsetAtLine(lineCount - 1); int lineLen = charCount - lineOfs; // System.out.println("Setting Style : " + lineOfs + ", " + lineLen); helpPanel.setStyleRange(new StyleRange(lineOfs, lineLen, fg, bg, style)); helpPanel.setLineBackground(lineCount - 1, 1, bg); } } helpPanel.setRedraw(true); } catch (Exception e) { System.out.println("Unable to load help contents because:" + e); // e.printStackTrace(); } } if (labelLoading != null && !labelLoading.isDisposed()) { labelLoading.dispose(); } shell.layout(true, true); }
private void getWhatsNew(final int phase) { String helpFile = null; if (phase == 1) { helpFile = MessageText.getString("window.welcome.file"); if (!helpFile.toLowerCase().startsWith(Constants.SF_WEB_SITE)) { getWhatsNew(2); return; } } else { helpFile = MessageText.getString("window.welcome.file"); InputStream stream; stream = getClass().getResourceAsStream(helpFile); if (stream == null) { String helpFullPath = "/org/gudy/azureus2/internat/whatsnew/" + helpFile; stream = getClass().getResourceAsStream(helpFullPath); } if (stream == null) { stream = getClass().getResourceAsStream("/ChangeLog.txt"); } if (stream == null) { sWhatsNew = "Welcome Window: Error loading resource: " + helpFile; } else { try { sWhatsNew = FileUtil.readInputStreamAsString(stream, 65535, "utf8"); stream.close(); } catch (IOException e) { Debug.out(e); } } setWhatsNew(); return; } final String url = helpFile; new AEThread2("getWhatsNew", true) { public void run() { String s; ResourceDownloaderFactory rdf = ResourceDownloaderFactoryImpl.getSingleton(); try { ResourceDownloader rd = rdf.create(new URL(url)); InputStream is = rd.download(); int length = is.available(); byte data[] = new byte[length]; is.read(data); is.close(); s = new String(data); } catch (ResourceDownloaderException rde) { // We don't need a stack trace - it's arguable that we even need any // errors at all - the below line is better, but suppressed output might // be better. // Debug.outNoStack("Error downloading from " + url + ", " + rde, true); s = ""; } catch (Exception e) { Debug.out(e); s = ""; } sWhatsNew = s; if (sWhatsNew == null || sWhatsNew.length() == 0) { getWhatsNew(phase + 1); return; } Utils.execSWTThread( new AERunnable() { public void runSupport() { if (cWhatsNew != null && !cWhatsNew.isDisposed()) { setWhatsNew(); } } }); } }.start(); }
public boolean addTorrentWithOptions(boolean force, final TorrentOpenOptions torrentOptions) { if (AzureusCoreFactory.isCoreRunning()) { GlobalManager gm = AzureusCoreFactory.getSingleton().getGlobalManager(); // Check if torrent already exists in gm, and add if not DownloadManager existingDownload = gm.getDownloadManager(torrentOptions.getTorrent()); if (existingDownload != null) { final String fExistingName = existingDownload.getDisplayName(); final DownloadManager fExistingDownload = existingDownload; fExistingDownload.fireGlobalManagerEvent(GlobalManagerEvent.ET_REQUEST_ATTENTION); Utils.execSWTThread( new AERunnable() { public void runSupport() { boolean can_merge = TorrentUtils.canMergeAnnounceURLs( torrentOptions.getTorrent(), fExistingDownload.getTorrent()); Shell mainShell = UIFunctionsManagerSWT.getUIFunctionsSWT().getMainShell(); if ((Display.getDefault().getActiveShell() == null || !mainShell.isVisible() || mainShell.getMinimized()) && (!can_merge)) { new MessageSlideShell( Display.getCurrent(), SWT.ICON_INFORMATION, MSG_ALREADY_EXISTS, null, new String[] { ":" + torrentOptions.sOriginatingLocation, fExistingName, MessageText.getString(MSG_ALREADY_EXISTS_NAME), }, new Object[] {fExistingDownload}, -1); } else { if (can_merge) { String text = MessageText.getString( MSG_ALREADY_EXISTS + ".text", new String[] { ":" + torrentOptions.sOriginatingLocation, fExistingName, MessageText.getString(MSG_ALREADY_EXISTS_NAME), }); text += "\n\n" + MessageText.getString("openTorrentWindow.mb.alreadyExists.merge"); MessageBoxShell mb = new MessageBoxShell( SWT.YES | SWT.NO, MessageText.getString(MSG_ALREADY_EXISTS + ".title"), text); mb.open( new UserPrompterResultListener() { public void prompterClosed(int result) { if (result == SWT.YES) { TorrentUtils.mergeAnnounceURLs( torrentOptions.getTorrent(), fExistingDownload.getTorrent()); } } }); } else { MessageBoxShell mb = new MessageBoxShell( SWT.OK, MSG_ALREADY_EXISTS, new String[] { ":" + torrentOptions.sOriginatingLocation, fExistingName, MessageText.getString(MSG_ALREADY_EXISTS_NAME), }); mb.open(null); } } } }); if (torrentOptions.bDeleteFileOnCancel) { File torrentFile = new File(torrentOptions.sFileName); torrentFile.delete(); } return true; } } if (!force) { String showAgainMode = COConfigurationManager.getStringParameter( ConfigurationDefaults.CFG_TORRENTADD_OPENOPTIONS); if (showAgainMode != null && ((showAgainMode.equals(ConfigurationDefaults.CFG_TORRENTADD_OPENOPTIONS_NEVER)) || (showAgainMode.equals(ConfigurationDefaults.CFG_TORRENTADD_OPENOPTIONS_MANY) && torrentOptions.getFiles() != null && torrentOptions.getFiles().length == 1))) { // we're about to silently add the download - ensure that it is going to be saved somewhere // vaguely sensible // as the current save location is simply taken from the 'default download' config which can // be blank (for example) boolean looks_good = false; String save_loc = torrentOptions.getParentDir().trim(); if (save_loc.length() == 0) { // blank :( } else if (save_loc.startsWith(".")) { // relative to who knows where } else { File f = new File(save_loc); if (!f.exists()) { f.mkdirs(); } if (f.isDirectory() && FileUtil.canWriteToDirectory(f)) { if (!f.equals(AETemporaryFileHandler.getTempDirectory())) { looks_good = true; } } } if (looks_good) { return TorrentOpener.addTorrent(torrentOptions); } else { torrentOptions.setParentDir(""); MessageBoxShell mb = new MessageBoxShell( SWT.OK | SWT.ICON_ERROR, "OpenTorrentWindow.mb.invaliddefsave", new String[] {save_loc}); mb.open( new UserPrompterResultListener() { public void prompterClosed(int result) { OpenTorrentOptionsWindow.addTorrent(torrentOptions); } }); return (true); } } } OpenTorrentOptionsWindow.addTorrent(torrentOptions); return true; }