001package net.minecraft.client.gui;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import java.net.URI;
006import java.net.URISyntaxException;
007import java.util.logging.Level;
008import java.util.logging.Logger;
009import java.util.regex.Matcher;
010import java.util.regex.Pattern;
011import net.minecraft.util.StringUtils;
012
013@SideOnly(Side.CLIENT)
014public class ChatClickData
015{
016    public static final Pattern pattern = Pattern.compile("^(?:(https?)://)?([-\\w_\\.]{2,}\\.[a-z]{2,3})(/\\S*)?$");
017    private final FontRenderer fontR;
018    private final ChatLine line;
019    private final int field_78312_d;
020    private final int field_78313_e;
021    private final String field_78310_f;
022
023    /** The URL which was clicked on. */
024    private final String clickedUrl;
025
026    public ChatClickData(FontRenderer par1FontRenderer, ChatLine par2ChatLine, int par3, int par4)
027    {
028        this.fontR = par1FontRenderer;
029        this.line = par2ChatLine;
030        this.field_78312_d = par3;
031        this.field_78313_e = par4;
032        this.field_78310_f = par1FontRenderer.trimStringToWidth(par2ChatLine.getChatLineString(), par3);
033        this.clickedUrl = this.findClickedUrl();
034    }
035
036    /**
037     * Gets the URL which was clicked on.
038     */
039    public String getClickedUrl()
040    {
041        return this.clickedUrl;
042    }
043
044    /**
045     * computes the URI from the clicked chat data object
046     */
047    public URI getURI()
048    {
049        String var1 = this.getClickedUrl();
050
051        if (var1 == null)
052        {
053            return null;
054        }
055        else
056        {
057            Matcher var2 = pattern.matcher(var1);
058
059            if (var2.matches())
060            {
061                try
062                {
063                    String var3 = var2.group(0);
064
065                    if (var2.group(1) == null)
066                    {
067                        var3 = "http://" + var3;
068                    }
069
070                    return new URI(var3);
071                }
072                catch (URISyntaxException var4)
073                {
074                    Logger.getLogger("Minecraft").log(Level.SEVERE, "Couldn\'t create URI from chat", var4);
075                }
076            }
077
078            return null;
079        }
080    }
081
082    private String findClickedUrl()
083    {
084        int var1 = this.field_78310_f.lastIndexOf(" ", this.field_78310_f.length()) + 1;
085
086        if (var1 < 0)
087        {
088            var1 = 0;
089        }
090
091        int var2 = this.line.getChatLineString().indexOf(" ", var1);
092
093        if (var2 < 0)
094        {
095            var2 = this.line.getChatLineString().length();
096        }
097
098        return StringUtils.stripControlCodes(this.line.getChatLineString().substring(var1, var2));
099    }
100}