示例#1
0
  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);
  }
示例#2
0
  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);
  }