Example #1
0
  /**
   * Updates the plot properties to match the properties defined on the panel.
   *
   * @param plot The plot.
   */
  public void updatePlotProperties(Plot plot) {
    // set the plot properties...
    plot.setBackgroundPaint(SWTUtils.toAwtColor(getBackgroundPaint()));
    plot.setOutlinePaint(SWTUtils.toAwtColor(getOutlinePaint()));
    plot.setOutlineStroke(getOutlineStroke());

    // set the axis properties
    if (this.domainAxisPropertyPanel != null) {
      Axis domainAxis = null;
      if (plot instanceof CategoryPlot) {
        CategoryPlot p = (CategoryPlot) plot;
        domainAxis = p.getDomainAxis();
      } else if (plot instanceof XYPlot) {
        XYPlot p = (XYPlot) plot;
        domainAxis = p.getDomainAxis();
      }
      if (domainAxis != null) this.domainAxisPropertyPanel.setAxisProperties(domainAxis);
    }
    if (this.rangeAxisPropertyPanel != null) {
      Axis rangeAxis = null;
      if (plot instanceof CategoryPlot) {
        CategoryPlot p = (CategoryPlot) plot;
        rangeAxis = p.getRangeAxis();
      } else if (plot instanceof XYPlot) {
        XYPlot p = (XYPlot) plot;
        rangeAxis = p.getRangeAxis();
      }
      if (rangeAxis != null) this.rangeAxisPropertyPanel.setAxisProperties(rangeAxis);
    }
    if (this.plotAppearance.getPlotOrientation() != null) {
      if (plot instanceof CategoryPlot) {
        CategoryPlot p = (CategoryPlot) plot;
        p.setOrientation(this.plotAppearance.getPlotOrientation());
      } else if (plot instanceof XYPlot) {
        XYPlot p = (XYPlot) plot;
        p.setOrientation(this.plotAppearance.getPlotOrientation());
      }
    }
  }
Example #2
0
  /** Creates the chart below the statistics table */
  private void createChart() {
    mAllocCountDataSet = new DefaultCategoryDataset();
    mChart =
        ChartFactory.createBarChart(
            null,
            "Size",
            "Count",
            mAllocCountDataSet,
            PlotOrientation.VERTICAL,
            false,
            true,
            false);

    // get the font to make a proper title. We need to convert the swt font,
    // into an awt font.
    Font f = mStatisticsBase.getFont();
    FontData[] fData = f.getFontData();

    // event though on Mac OS there could be more than one fontData, we'll only use
    // the first one.
    FontData firstFontData = fData[0];

    java.awt.Font awtFont =
        SWTUtils.toAwtFont(mStatisticsBase.getDisplay(), firstFontData, true /* ensureSameSize */);

    mChart.setTitle(new TextTitle("Allocation count per size", awtFont));

    Plot plot = mChart.getPlot();
    if (plot instanceof CategoryPlot) {
      // get the plot
      CategoryPlot categoryPlot = (CategoryPlot) plot;

      // set the domain axis to draw labels that are displayed even with many values.
      CategoryAxis domainAxis = categoryPlot.getDomainAxis();
      domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90);

      CategoryItemRenderer renderer = categoryPlot.getRenderer();
      renderer.setBaseToolTipGenerator(
          new CategoryToolTipGenerator() {
            @Override
            public String generateToolTip(CategoryDataset dataset, int row, int column) {
              // get the key for the size of the allocation
              ByteLong columnKey = (ByteLong) dataset.getColumnKey(column);
              String rowKey = (String) dataset.getRowKey(row);
              Number value = dataset.getValue(rowKey, columnKey);

              return String.format(
                  "%1$d %2$s of %3$d bytes", value.intValue(), rowKey, columnKey.getValue());
            }
          });
    }
    mChartComposite =
        new ChartComposite(
            mStatisticsBase,
            SWT.BORDER,
            mChart,
            ChartComposite.DEFAULT_WIDTH,
            ChartComposite.DEFAULT_HEIGHT,
            ChartComposite.DEFAULT_MINIMUM_DRAW_WIDTH,
            ChartComposite.DEFAULT_MINIMUM_DRAW_HEIGHT,
            3000, // max draw width. We don't want it to zoom, so we put a big number
            3000, // max draw height. We don't want it to zoom, so we put a big number
            true, // off-screen buffer
            true, // properties
            true, // save
            true, // print
            false, // zoom
            true); // tooltips

    mChartComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
  }