//==============================================================================
//	Created on: 09/16/2003
//	Handles opening an IP directly
//
//	Written by Ron Prestenback
//	© 2003, Epic Games, Inc.  All Rights Reserved
//==============================================================================
class UT2K4Browser_OpenIP extends UT2K4GetDataMenu;

var localized string OKButtonHint;
var localized string CancelButtonHint;
var localized string EditBoxHint;

function InitComponent(GUIController pMyController, GUIComponent MyOwner)
{
	Super.InitComponent(pMyController, MyOwner);

	ed_Data.MyEditBox.OnKeyEvent = InternalOnKeyEvent;
	b_OK.SetHint(OKButtonHint);
	b_Cancel.SetHint(CancelButtonHint);
	ed_Data.SetHint(EditBoxHint);
}

function HandleParameters(string s, string s2)
{
	if (s != "")
		ed_Data.SetText( StripProtocol(s) );
}

function bool InternalOnClick(GUIComponent Sender)
{
	if ( Sender == b_OK )
		Execute();
	else Controller.CloseMenu(true);

	return true;
}

function Execute()
{
	local string URL;

	URL = ed_Data.GetText();
	if ( URL == "" )
		return;

	URL = StripProtocol(URL);
	if ( InStr( URL, ":" ) == -1 )
		URL $= ":7707";

	ApplyURL( URL );
}

function ApplyURL(string URL )
{
	if ( URL == "" || Left(URL,1) == ":" )
		return;

	PlayerOwner().ClientTravel( URL, TRAVEL_Absolute, false );
	Controller.CloseAll(false,True);
}

function bool InternalOnKeyEvent( out byte Key, out byte State, float Delta )
{
	if ( !Super.InternalOnKeyEvent(Key,State,Delta) )
		return ed_Data.MyEditBox.InternalOnKeyEvent(Key,State,Delta);
}

function string StripProtocol( string s )
{
	local string Protocol;

	Protocol = PlayerOwner().GetURLProtocol();

	ReplaceText(s, Protocol $ "://", "");
	ReplaceText(s, Protocol, "");

	return s;
}

defaultproperties
{
	OKButtonHint="Open a connection to this IP address."
	CancelButtonHint="Close this page without connecting to a server."
	EditBoxHint="Enter the address for the server you'd like to connect to - separate the IP and port with the  :  symbol"

	Begin Object class=GUILabel Name=IPDesc
		Caption="Enter New IP Address"
		TextAlign=TXTA_Center
		StyleName="TextLabel"
		FontScale=FNS_Large
		WinWidth=1
		WinLeft=0
		WinTop=0.4
		WinHeight=32
	End Object

	// EditBox with Limited CharSet for IP address
	Begin Object class=moEditBox Name=IpEntryBox
		Caption="IP Address: "
		LabelJustification=TXTA_Right
		CaptionWidth=0.55
		ComponentWidth=-1
		WinWidth=0.500000
		WinHeight=0.04
		WinLeft=0.160000
		WinTop=0.466667
		TabOrder=0
	End Object

	l_Text=IPDesc
	ed_Data=IPEntryBox
}
