package com.algobase.share.chart;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.util.AttributeSet;
import android.view.View;


public class ChartViewVerticalLabels extends View {

   private class label {
     String txt;
     float ypos;
     label(String s, float y) { txt = s; ypos = y; }
   }

   int width;
   int height;
   float text_size = 20;

   protected Paint paint = new Paint();

   private List<label> vLabels = new ArrayList<label>();

   public ChartViewVerticalLabels(Context context) { 
      super(context);
   }

   public ChartViewVerticalLabels(Context context, AttributeSet attr) { 
      super(context,attr);
   }

   public ChartViewVerticalLabels(Context context, AttributeSet attr, int defStyle) {
      super(context,attr,defStyle);
   }


  protected String format(String pattern, Object... args)
   { return String.format(Locale.US,pattern,args); }


  public void clear() {
      vLabels.clear();
  }


  public void addLabel(String s, float y) 
  { vLabels.add(new label(s,y)); }

  public void setLabelText(int i, String s) 
  { if (i >=0 && i < vLabels.size()) vLabels.get(i).txt = s; }

  public void setLabelPosition(int i, float y) 
  { if (i >=0 && i < vLabels.size()) vLabels.get(i).ypos = y; }

  public void setTextSize(float sz) { text_size = sz; }

  @Override
  protected void onMeasure(int widthSpec, int heightSpec)
  { super.onMeasure(widthSpec, heightSpec);
    int parentWidth = MeasureSpec.getSize(widthSpec);
    int parentHeight = MeasureSpec.getSize(heightSpec);
    int w = getLayoutParams().width;
    int h = getLayoutParams().height;
    if (w <= 0) w = parentWidth;
    if (h <= 0) h = parentHeight;
    setMeasuredDimension(w,h);
   }


   @Override
   protected void onDraw(Canvas canvas) 
   { height = getHeight();
     width = getWidth();

     paint.setAntiAlias(true);
     paint.setStrokeWidth(1);
     paint.setStyle(Paint.Style.FILL);
     paint.setStrokeCap(Paint.Cap.ROUND);
     paint.setColor(Color.rgb(255,255,255));
     paint.setTextAlign(Align.RIGHT);
     paint.setTextSize(text_size);

     //canvas.drawRect(0,0,width-1,height-1,paint);

     for(int i = 0; i<vLabels.size(); i++)
     { label x = vLabels.get(i);
       canvas.drawText(x.txt,width-6,x.ypos,paint);
      }
   }
}

