Example #1
0
 private String getInfo() {
   return String.format(
       "%s (%s%%)",
       Values.Amount.format(item.getActual()), // $NON-NLS-1$
       Values.Percent.format(
           (double) item.getActual() / (double) model.getRootNode().getActual()));
 }
Example #2
0
    @Override
    public void render(
        final PaintEvent event,
        final ITreeModel<IRectangle<TaxonomyNode>> model,
        final IRectangle<TaxonomyNode> rectangle,
        final IColorProvider<TaxonomyNode, Color> colorProvider,
        final ILabelProvider<TaxonomyNode> labelProvider) {
      TaxonomyNode item = rectangle.getNode();

      if (item.getClassification() != null) return;

      Color oldForeground = event.gc.getForeground();
      Color oldBackground = event.gc.getBackground();

      Rectangle r =
          new Rectangle(
              rectangle.getX(), rectangle.getY(), rectangle.getWidth(), rectangle.getHeight());
      this.colorProvider.drawRectangle(model.getRoot().getNode(), item, event.gc, r);

      String label = item.getName();
      String info =
          String.format(
              "%s (%s%%)",
              Values.Amount.format(item.getActual()), // $NON-NLS-1$
              Values.Percent.format(
                  (double) item.getActual() / (double) this.model.getRootNode().getActual()));

      event.gc.setForeground(Colors.getTextColor(event.gc.getBackground()));

      Point labelExtend = event.gc.textExtent(label);
      Point infoExtend = event.gc.textExtent(info);

      int width = Math.max(labelExtend.x, infoExtend.x);
      if (width <= rectangle.getWidth() || rectangle.getWidth() > rectangle.getHeight()) {
        event.gc.drawText(label, r.x + 2, r.y + 2, true);
        event.gc.drawText(info, r.x + 2, r.y + 2 + labelExtend.y, true);
      } else {
        final Transform transform = new Transform(event.display);
        try {
          transform.translate(r.x, r.y);
          transform.rotate(-90);
          event.gc.setTransform(transform);
          event.gc.drawString(label, -labelExtend.x - 2, 2, true);
          event.gc.drawString(info, -infoExtend.x - 2, 2 + labelExtend.y, true);
        } finally {
          transform.dispose();
        }
      }

      event.gc.setForeground(oldForeground);
      event.gc.setBackground(oldBackground);
    }
Example #3
0
    @Override
    public Point computeSize(int wHint, int hHint, boolean changed) {
      String text = item.getName();
      String info = getInfo();

      GC gc = new GC(this);
      Point extentText = gc.stringExtent(text);
      Point extentInfo = gc.stringExtent(info);
      gc.dispose();

      return new Point(Math.max(extentText.x, extentInfo.x) + 4, extentText.y + extentInfo.y + 4);
    }
Example #4
0
  public void setRootItem(TaxonomyNode rootItem) {
    this.rootItem = rootItem;

    for (Control control : this.getChildren()) control.dispose();

    boolean hasParent = false;

    List<TaxonomyNode> path = rootItem.getPath();
    for (int ii = 1; ii < path.size(); ii++) {
      hasParent = true;
      TaxonomyNode item = path.get(ii);
      new LegendItem(this, item);
    }

    if (hasParent && !rootItem.getChildren().isEmpty()) {
      Label l = new Label(this, SWT.NONE);
      l.setText(">>"); // $NON-NLS-1$
      l.setBackground(this.getBackground());
    }

    List<TaxonomyNode> children = new ArrayList<TaxonomyNode>(rootItem.getChildren());
    Collections.sort(
        children,
        new Comparator<TaxonomyNode>() {
          @Override
          public int compare(TaxonomyNode o1, TaxonomyNode o2) {
            return o1.getActual() > o2.getActual() ? -1 : o1.getActual() == o2.getActual() ? 0 : 1;
          }
        });
    for (TaxonomyNode child : children) {
      if (model.isUnassignedCategoryInChartsExcluded() && child.isUnassignedCategory()) continue;
      new LegendItem(this, child);
    }

    pack();
    getParent().layout();
  }
Example #5
0
    private void paintControl(Event e) {
      Color oldForeground = e.gc.getForeground();
      Color oldBackground = e.gc.getBackground();

      Point size = getSize();
      Rectangle r = new Rectangle(0, 0, size.x, size.y);

      renderer.drawRectangle(rootItem, item, e.gc, r);

      String text = item.getName();
      String info = getInfo();

      GC gc = e.gc;
      gc.setForeground(Colors.getTextColor(gc.getBackground()));
      gc.drawString(text, 2, 2, true);
      Point extent = gc.stringExtent(text);
      gc.drawString(info, 2, extent.y + 1, true);

      e.gc.setForeground(oldForeground);
      e.gc.setBackground(oldBackground);
    }
Example #6
0
 @Override
 public long getWeight(TaxonomyNode item) {
   return item.getActual();
 }
Example #7
0
 @Override
 public boolean hasChildren(TaxonomyNode item) {
   return !item.getChildren().isEmpty();
 }
Example #8
0
 @Override
 public TaxonomyNode getParent(TaxonomyNode item) {
   return item.getParent();
 }
Example #9
0
 @Override
 public Iterator<TaxonomyNode> getChildren(TaxonomyNode item) {
   return item.getChildren().iterator();
 }
Example #10
0
 private void selectionChanged(ITreeModel<IRectangle<TaxonomyNode>> model) {
   // find out if root changed (drill-down)
   TaxonomyNode newRoot = model.getRoot().getNode();
   if (!newRoot.equals(rootItem)) setRootItem(newRoot);
 }