FileDocCategorySizeDatePackage
ScaledGraphic.javaAPI DocAzureus 3.0.3.43314Mon Sep 17 16:15:14 BST 2007org.gudy.azureus2.ui.swt.components.graphics

ScaledGraphic

public class ScaledGraphic extends BackGroundGraphic
author
Olivier

Fields Summary
protected Scale
scale
protected ValueFormater
formater
protected org.eclipse.swt.graphics.Image
bufferScale
protected int
lastMax
private int
update_divider_width
Constructors Summary
public ScaledGraphic(Scale scale, ValueFormater formater)

  
      
    this.scale = scale;
    this.formater = formater;
  
Methods Summary
public voiddispose()

    super.dispose();
    if(bufferScale != null && ! bufferScale.isDisposed())
      bufferScale.dispose();
  
protected voiddrawScale(boolean sizeChanged)

    if(drawCanvas == null || drawCanvas.isDisposed() || !drawCanvas.isVisible())
      return;
   
    drawBackGround(sizeChanged);
  	if (bufferBackground == null || bufferBackground.isDisposed()) {
  		return;
  	}
   
    boolean scaleChanged = lastMax != scale.getMax();
    
    if(sizeChanged || scaleChanged || bufferScale == null) {
      Rectangle bounds = drawCanvas.getClientArea();
      if(bounds.height < 30 || bounds.width  < 100)
        return;      
      
      if(bufferScale != null && ! bufferScale.isDisposed())
        bufferScale.dispose();
      
      bufferScale = new Image(drawCanvas.getDisplay(),bounds);
      
      GC gcBuffer = new GC(bufferScale);
      try {
      gcBuffer.drawImage(bufferBackground,0,0);
      gcBuffer.setForeground(Colors.black);
      //gcImage.setBackground(null);
      scale.setNbPixels(bounds.height - 16);
      int[] levels = scale.getScaleValues();
      for(int i = 0 ; i < levels.length ; i++) {
        int height = bounds.height - scale.getScaledValue(levels[i]) - 2;
        gcBuffer.drawLine(1,height,bounds.width - 70 ,height);
        gcBuffer.drawText(formater.format(levels[i]),bounds.width - 65,height - 12,true);
      }
      if (this.update_divider_width > 0) {
    	  for (int i=bounds.width - 70; i > 0; i-=this.update_divider_width) {
    		  gcBuffer.setForeground(Colors.grey);
    		  gcBuffer.drawLine(i, 0, i, bounds.height);
    	  }
      }
      } catch (Exception e) {
      	Debug.out(e);
      } finally {
      	gcBuffer.dispose();
      }
    }
  
public voidsetUpdateDividerWidth(int width)

	  this.update_divider_width = width;