package utils;

import java.awt.*;
import java.util.*;

public class WrappedString {
	private ArrayList<String> lstStrings;
	private FontMetrics metrics;
	
	public WrappedString(String str, FontMetrics metrics, int width) {
		lstStrings = new ArrayList<String>();
		this.metrics = metrics;
		
		while(!str.equals("")) {
			int cur = 1;
			int lastSpace = -1;
			while(cur <= str.length() && metrics.stringWidth(str.substring(0, cur)) < width) {
				if(str.substring(cur-1, cur).equals(" "))
					lastSpace = cur-1;
				cur++;
			}
			if(lastSpace == -1 || cur > str.length()) {
				lstStrings.add(str.substring(0, cur-1));
				str = str.substring(cur-1);
			}else {
				lstStrings.add(str.substring(0, lastSpace));
				str = str.substring(lastSpace+1);
			}
			
			//get rid of leading spaces
			while(str.length() > 0 && str.substring(0,1).equals(" "))
				str = str.substring(1);
		}
	}
	
	public int getLineCount() {
		return lstStrings.size();
	}
	
	public String getLine(int index) {
		return lstStrings.get(index);
	}
	
	public FontMetrics getMetrics() {
		return metrics;
	}
	
	public void draw(Graphics g, int x, int y) {
		for(int i=0; i<getLineCount(); i++)
			g.drawString(getLine(i), x, y+i*metrics.getHeight());
	}
}
