private void build() { if (legend_panel == null || legend_panel.isDisposed()) { return; } for (Control c : legend_panel.getChildren()) { c.dispose(); } List<String> configs = new ArrayList<String>(); List<String> texts = new ArrayList<String>(); List<Color> colors = new ArrayList<Color>(); TagManager tm = TagManagerFactory.getTagManager(); List<TagType> tag_types = tm.getTagTypes(); tag_types = TagUIUtils.sortTagTypes(tag_types); List<TagFeatureRateLimit> visible_tags = new ArrayList<TagFeatureRateLimit>(); for (TagType tag_type : tag_types) { if (tag_type.hasTagTypeFeature(TagFeature.TF_RATE_LIMIT)) { List<Tag> tags = tag_type.getTags(); tags = TagUIUtils.sortTags(tags); for (Tag tag : tags) { if (!tag.isVisible()) { continue; } TagFeatureRateLimit rl = (TagFeatureRateLimit) tag; if (!rl.supportsTagRates()) { continue; } String config_key = "TagStatsView.cc." + tag_type.getTagType() + "." + tag.getTagID(); configs.add(config_key); texts.add(tag.getTagName(true)); Color tt_colour; int[] rgb = tag.getColor(); if (rgb == null) { tt_colour = Colors.blues[Colors.BLUES_DARKEST]; } else { tt_colour = ColorCache.getColor(legend_panel.getDisplay(), rgb); } colors.add(tt_colour); visible_tags.add(rl); } } } final Color[] color_array = colors.toArray(new Color[colors.size()]); final String[] text_array = texts.toArray(new String[texts.size()]); final List<ValueSourceImpl> sources = new ArrayList<ValueSourceImpl>(); List<int[]> history_records = new ArrayList<int[]>(); int history_record_max = 0; for (int i = 0; i < visible_tags.size(); i++) { final TagFeatureRateLimit tag = visible_tags.get(i); tag.setRecentHistoryRetention(true); int[][] history = tag.getRecentHistory(); history_record_max = Math.max(history[0].length, history_record_max); history_records.add(history[0]); history_records.add(history[1]); sources.add(new ValueSourceImpl(tag, text_array[i], i, color_array, true)); sources.add(new ValueSourceImpl(tag, text_array[i], i, color_array, false)); } ; ValueFormater formatter = new ValueFormater() { public String format(int value) { return DisplayFormatters.formatByteCountToKiBEtcPerSec(value); } }; if (mpg != null) { mpg.dispose(); } final MultiPlotGraphic f_mpg = mpg = MultiPlotGraphic.getInstance( sources.toArray(new ValueSource[sources.size()]), formatter); int[][] history = new int[history_records.size()][]; for (int i = 0; i < history.length; i++) { int[] hist = history_records.get(i); int hist_len = hist.length; if (hist_len == history_record_max) { history[i] = hist; } else { int[] temp = new int[history_record_max]; System.arraycopy(hist, 0, temp, history_record_max - hist_len, hist_len); history[i] = temp; } } mpg.reset(history); GridData gridData; if (color_array.length > 0) { gridData = new GridData(GridData.FILL_VERTICAL); gridData.verticalAlignment = SWT.CENTER; Legend.createLegendComposite( legend_panel, color_array, configs.toArray(new String[configs.size()]), text_array, gridData, false, new Legend.LegendListener() { private int hover_index = -1; public void hoverChange(boolean entry, int index) { if (hover_index != -1) { for (int i = hover_index * 2; i < hover_index * 2 + 2; i++) { sources.get(i).setHover(false); } } if (entry) { hover_index = index; for (int i = hover_index * 2; i < hover_index * 2 + 2; i++) { sources.get(i).setHover(true); } } f_mpg.refresh(true); } public void visibilityChange(boolean visible, int index) { for (int i = index * 2; i < index * 2 + 2; i++) { sources.get(i).setVisible(visible); } f_mpg.refresh(true); } }); } else { gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.verticalAlignment = SWT.TOP; Label lab = new Label(legend_panel, SWT.NULL); lab.setText(MessageText.getString("tag.stats.none.defined")); lab.setLayoutData(gridData); } legend_panel_sc.setMinSize(legend_panel.computeSize(SWT.DEFAULT, SWT.DEFAULT)); // speed for (Control c : speed_panel.getChildren()) { c.dispose(); } Canvas speed_canvas = new Canvas(speed_panel, SWT.NO_BACKGROUND); gridData = new GridData(GridData.FILL_BOTH); speed_canvas.setLayoutData(gridData); mpg.initialize(speed_canvas, true); panel.layout(true, true); }
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); }