/**
 *
 * Class Charta implements a chart that shows the 
 * number of grades grouped by A, B, C, D, F and other 
 * in a pie chart and bar chart representation
 *
 * @author  Daniel Burgner
 * @version 1.0
 * @class   CS5730
 * @date    02.05.2002
 */

import java.awt.*;
import java.io.*;
import java.lang.*;
import java.applet.Applet;

public class Charta extends Applet {
	
	protected int nA;
	protected int nB;
	protected int nC;
	protected int nD;
	protected int nF;
	protected int nW;
	protected int nI;
	protected int nDrop;
	protected int nOther;
	protected int nTotalGrades = 0;

	public void init() {
		String paramA = getParameter("A");
		nA = Integer.parseInt(String.valueOf(paramA));
		String paramB = getParameter("B");
		nB = Integer.parseInt(String.valueOf(paramB));
		String paramC = getParameter("C");
		nC = Integer.parseInt(String.valueOf(paramC));
		String paramD = getParameter("D");
		nD = Integer.parseInt(String.valueOf(paramD));
		String paramF = getParameter("F");
		nF = Integer.parseInt(String.valueOf(paramF));
		String paramW = getParameter("W");
		nW = Integer.parseInt(String.valueOf(paramW));
		String paramI = getParameter("I");
		nI = Integer.parseInt(String.valueOf(paramI));
		String paramDrop = getParameter("Drop");
		nDrop = Integer.parseInt(String.valueOf(paramDrop));
		nOther = nW + nI + nDrop;
		nTotalGrades = nA + nB + nC + nD + nF + nW + nI + nDrop;

	}

	public void paint(Graphics g) {
		Dimension d = getSize();
		g.setColor(Color.white);
		g.fillRect(0, 0, d.width, d.height);
		g.setFont(new Font("Arial", Font.BOLD, 12));
		int nAngle = 0;
		g.setColor(Color.blue);
		g.drawArc(25, 25, 150, 150, nAngle, (360 * nA / nTotalGrades));
		g.fillArc(25, 25, 150, 150, nAngle, (360 * nA / nTotalGrades));
		nAngle = nAngle + (360 * nA / nTotalGrades);
		g.drawString("A", 200, 40);
		g.setColor(Color.green);
		g.drawArc(25, 25, 150, 150, nAngle, (360 * nB / nTotalGrades));
		g.fillArc(25, 25, 150, 150, nAngle, (360 * nB / nTotalGrades));
		nAngle = nAngle + (360 * nB / nTotalGrades);
		g.drawString("B", 200, 55);
		g.setColor(Color.orange);
		g.drawArc(25, 25, 150, 150, nAngle, (360 * nC / nTotalGrades));
		g.fillArc(25, 25, 150, 150, nAngle, (360 * nC / nTotalGrades));
		nAngle = nAngle + (360 * nC / nTotalGrades);
		g.drawString("C", 200, 70);
		g.setColor(Color.yellow);
		g.drawArc(25, 25, 150, 150, nAngle, (360 * nD / nTotalGrades));
		g.fillArc(25, 25, 150, 150, nAngle, (360 * nD / nTotalGrades));
		nAngle = nAngle + (360 * nD / nTotalGrades);
		g.drawString("D", 200, 85);
		g.setColor(Color.red);
		g.drawArc(25, 25, 150, 150, nAngle, (360 * nF / nTotalGrades));
		g.fillArc(25, 25, 150, 150, nAngle, (360 * nF / nTotalGrades));
		nAngle = nAngle + (360 * nF / nTotalGrades);
		g.drawString("F", 200, 100);
		g.setColor(Color.black);
		g.drawArc(25, 25, 150, 150, nAngle, 360 - nAngle);
		g.fillArc(25, 25, 150, 150, nAngle, 360 - nAngle);
		g.drawString("Other", 200, 115);

		g.setColor(Color.blue);
		g.drawString("A", 300, 40);
		g.drawRect(310, 25, (nA * 5), 15);
		g.fillRect(310, 25, (nA * 5), 15);
		g.drawString("" + nA, (315 + nA * 5), 40);
		g.setColor(Color.green);
		g.drawString("B", 300, 65);
		g.drawRect(310, 50, (nB * 5), 15);
		g.fillRect(310, 50, (nB * 5), 15);
		g.drawString("" + nB, (315 + nB * 5), 65);
		g.setColor(Color.orange);
		g.drawString("C", 300, 90);
		g.drawRect(310, 75, (nC * 5), 15);
		g.fillRect(310, 75, (nC * 5), 15);
		g.drawString("" + nC, (315 + nC * 5), 90);
		g.setColor(Color.yellow);
		g.drawString("D", 300, 115);
		g.drawRect(310, 100, (nD * 5), 15);
		g.fillRect(310, 100, (nD * 5), 15);
		g.drawString("" + nD, (315 + nD * 5), 115);
		g.setColor(Color.red);
		g.drawString("F", 300, 140);
		g.drawRect(310, 125, (nF * 5), 15);
		g.fillRect(310, 125, (nF * 5), 15);
		g.drawString("" + nF, (315 + nF * 5), 140);
		g.setColor(Color.black);
		g.drawString("Other", 275, 165);
		g.drawRect(310, 150, (nOther * 5), 15);
		g.fillRect(310, 150, (nOther * 5), 15);
		g.drawString("" + nOther, (315 + nOther * 5), 165);
	}

}
