package net.minecraft.client.gui;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.minecraft.client.Minecraft;
import net.minecraft.util.StringUtils;
@SideOnly(Side.CLIENT)
public class ChatClickData
{
public static final Pattern pattern = Pattern.compile("^(?:(https?)://)?([-\\w_\\.]{2,}\\.[a-z]{2,4})(/\\S*)?$");
private final FontRenderer fontR;
private final ChatLine line;
private final int field_78312_d;
private final int field_78313_e;
private final String field_78310_f;
/** The URL which was clicked on. */
private final String clickedUrl;
public ChatClickData(FontRenderer par1FontRenderer, ChatLine par2ChatLine, int par3, int par4)
{
this.fontR = par1FontRenderer;
this.line = par2ChatLine;
this.field_78312_d = par3;
this.field_78313_e = par4;
this.field_78310_f = par1FontRenderer.trimStringToWidth(par2ChatLine.getChatLineString(), par3);
this.clickedUrl = this.findClickedUrl();
}
/**
* Gets the URL which was clicked on.
*/
public String getClickedUrl()
{
return this.clickedUrl;
}
/**
* computes the URI from the clicked chat data object
*/
public URI getURI()
{
String s = this.getClickedUrl();
if (s == null)
{
return null;
}
else
{
Matcher matcher = pattern.matcher(s);
if (matcher.matches())
{
try
{
String s1 = matcher.group(0);
if (matcher.group(1) == null)
{
s1 = "http://" + s1;
}
return new URI(s1);
}
catch (URISyntaxException urisyntaxexception)
{
Minecraft.getMinecraft().getLogAgent().logSevereException("Couldn\'t create URI from chat", urisyntaxexception);
}
}
return null;
}
}
private String findClickedUrl()
{
int i = this.field_78310_f.lastIndexOf(" ", this.field_78310_f.length()) + 1;
if (i < 0)
{
i = 0;
}
int j = this.line.getChatLineString().indexOf(" ", i);
if (j < 0)
{
j = this.line.getChatLineString().length();
}
return StringUtils.stripControlCodes(this.line.getChatLineString().substring(i, j));
}
}