예제 #1
0
  private void initialize(Composite composite) {
    panel = new Composite(composite, SWT.NULL);
    panel.setLayout(new GridLayout(2, false));

    legend_panel_sc = new ScrolledComposite(panel, SWT.V_SCROLL);
    legend_panel_sc.setExpandHorizontal(true);
    legend_panel_sc.setExpandVertical(true);
    GridLayout layout = new GridLayout();
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = 0;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    legend_panel_sc.setLayout(layout);
    GridData gridData = new GridData(GridData.FILL_VERTICAL);
    legend_panel_sc.setLayoutData(gridData);

    legend_panel = new Group(legend_panel_sc, SWT.NULL);
    legend_panel.setText(MessageText.getString("label.tags"));

    legend_panel.setLayout(new GridLayout());

    legend_panel_sc.setContent(legend_panel);
    legend_panel_sc.addControlListener(
        new ControlAdapter() {
          public void controlResized(ControlEvent e) {
            legend_panel_sc.setMinSize(legend_panel.computeSize(SWT.DEFAULT, SWT.DEFAULT));
          }
        });

    speed_panel = new Composite(panel, SWT.NULL);
    speed_panel.setLayout(new GridLayout());
    gridData = new GridData(GridData.FILL_BOTH);
    speed_panel.setLayoutData(gridData);

    build();

    TagManager tm = TagManagerFactory.getTagManager();

    tm.addTagManagerListener(this, false);

    for (TagType tt : tm.getTagTypes()) {

      tt.addTagTypeListener(this, false);
    }

    panel.addListener(
        SWT.Activate,
        new Listener() {
          public void handleEvent(Event event) {
            refresh(true);
          }
        });
  }
예제 #2
0
  private void delete() {
    Utils.disposeComposite(panel);

    TagManager tm = TagManagerFactory.getTagManager();

    tm.removeTagManagerListener(this);

    for (TagType tt : tm.getTagTypes()) {

      tt.removeTagTypeListener(this);
    }

    if (mpg != null) {

      mpg.dispose();
    }
  }
예제 #3
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);
  }