How can I add "..." to GUI.Label if it goes past its bounds?

I made this a while ago, not sure its particularly efficient but it appears to do the job!

var myString : String;
private var tempString : String;
private var stringSize : Vector2;
var labelWidth = 100;

function Start () {
	if(labelWidth < 15){
		labelWidth = 15;
	}
}

function OnGUI () {
	myString = GUI.TextField(Rect(10, 10, 300, 20), myString);
	stringSize = GUI.skin.GetStyle("Box").CalcSize(GUIContent(myString));
	
	if(stringSize.x > labelWidth){
		CalcSubstring();
		GUI.Label(Rect(10, 40, labelWidth, 20), tempString + "...");
	}else{
		GUI.Label(Rect(10, 40, labelWidth, 20), myString);
	}
}

function CalcSubstring () {
	tempString = myString;
	while(GUI.skin.GetStyle("Box").CalcSize(GUIContent(tempString)).x > labelWidth-8){
		tempString = tempString.Substring(0, tempString.Length - 1);
	}
}

Scribe

P.S

please include a description of your problem in future