/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package dblpconverter;

/**
 * @author Gersk
 * 
 * StatusBar provide a graphics visualization for the state of the progress.
 */

import javax.swing.*; 
import java.awt.*;
import java.awt.geom.*;

public class StatusBar extends JPanel 
{
    
    private Rectangle border;
    private Rectangle progress;
    
    private long value = new Long(100);
    long bound = 0;
    
    private String zero ="0%";
    private String v1 ="10%";
    private String v2 ="20%";
    private String v3 ="30%";
    private String v4 ="40%";
    private String v5 ="50%";
    private String v6 ="60%";
    private String v7 ="70%";
    private String v8 ="80%";
    private String v9 ="90%";
    private String v10 ="100%";
    private String pb ="Progress bar";
    
    private Line2D.Double segmentV1;
    private Line2D.Double segmentV2;
    private Line2D.Double segmentV3;
    private Line2D.Double segmentV4;
    private Line2D.Double segmentV5;
    private Line2D.Double segmentV6;
    private Line2D.Double segmentV7;
    private Line2D.Double segmentV8;
    private Line2D.Double segmentV9;
    private Line2D.Double segmentV10;
    private Line2D.Double segmentV11;
    
    public StatusBar() 
    {
        border = new Rectangle(10, 53, 230, 20);
        progress = new Rectangle();
        
        this.setPreferredSize(new Dimension(250,10));
        
        segmentV1 = new Line2D.Double(10, 53, 10, 38);
        segmentV2 = new Line2D.Double(33, 53, 33, 45);
        segmentV3 = new Line2D.Double(56, 53, 56, 38);
        segmentV4 = new Line2D.Double(79, 53, 79, 45);
        segmentV5 = new Line2D.Double(102, 53, 102, 38);
        segmentV6 = new Line2D.Double(125, 53, 125, 45);
        segmentV7 = new Line2D.Double(148, 53, 148, 38);
        segmentV8 = new Line2D.Double(171, 53, 171, 45);
        segmentV9 = new Line2D.Double(194, 53, 194, 38);
        segmentV10 = new Line2D.Double(217, 53, 217, 45);
        segmentV11 = new Line2D.Double(240, 53, 240, 38);
    }
    
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        
        g2.setColor(Color.RED);
        g2.fill(progress);
        
        g2.setColor(Color.BLACK);
        g2.drawString(pb, 90, 10);
        
        g2.setColor(Color.GRAY);
        g2.draw(border);
        g2.draw(segmentV1);
        g2.draw(segmentV2);
        g2.draw(segmentV3);
        g2.draw(segmentV4);
        g2.draw(segmentV5);
        g2.draw(segmentV6);
        g2.draw(segmentV7);
        g2.draw(segmentV8);
        g2.draw(segmentV9);
        g2.draw(segmentV10);
        g2.draw(segmentV11);
        
        g2.drawString(zero, 4, 36);
        g2.drawString(v2, 44, 36);
        g2.drawString(v4, 90, 36);
        g2.drawString(v6, 136, 36);
        g2.drawString(v8, 182, 36);
        g2.drawString(v10, 219, 36);
        
    }
    
    public void setMaxBound(long bound)
    {
        this.bound = bound;
    }
    
    public void setProgress(long p)
    {

        value = (p*230)/bound;
        progress.setBounds(10, 55, Integer.parseInt(Long.toString(value)) , 17);
        this.repaint();
    }
    
    public void reset()
    {
        bound = value = 0;
        this.repaint();
    }
    
}