001    package net.minecraft.client.gui;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.util.ArrayList;
006    import java.util.Iterator;
007    import java.util.List;
008    import java.util.TreeMap;
009    import java.util.Map.Entry;
010    import net.minecraft.client.settings.EnumOptions;
011    import net.minecraft.client.settings.GameSettings;
012    import net.minecraft.util.StatCollector;
013    
014    @SideOnly(Side.CLIENT)
015    public class GuiSnooper extends GuiScreen
016    {
017        /** Instance of GuiScreen. */
018        private final GuiScreen snooperGuiScreen;
019    
020        /** Instance of GameSettings. */
021        private final GameSettings snooperGameSettings;
022        private final List field_74098_c = new ArrayList();
023        private final List field_74096_d = new ArrayList();
024    
025        /** The Snooper title. */
026        private String snooperTitle;
027        private String[] field_74101_n;
028        private GuiSnooperList snooperList;
029        private GuiButton buttonAllowSnooping;
030    
031        public GuiSnooper(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
032        {
033            this.snooperGuiScreen = par1GuiScreen;
034            this.snooperGameSettings = par2GameSettings;
035        }
036    
037        /**
038         * Adds the buttons (and other controls) to the screen in question.
039         */
040        public void initGui()
041        {
042            this.snooperTitle = StatCollector.translateToLocal("options.snooper.title");
043            String var1 = StatCollector.translateToLocal("options.snooper.desc");
044            ArrayList var2 = new ArrayList();
045            Iterator var3 = this.fontRenderer.listFormattedStringToWidth(var1, this.width - 30).iterator();
046    
047            while (var3.hasNext())
048            {
049                String var4 = (String)var3.next();
050                var2.add(var4);
051            }
052    
053            this.field_74101_n = (String[])var2.toArray(new String[0]);
054            this.field_74098_c.clear();
055            this.field_74096_d.clear();
056            this.controlList.add(this.buttonAllowSnooping = new GuiButton(1, this.width / 2 - 152, this.height - 30, 150, 20, this.snooperGameSettings.getKeyBinding(EnumOptions.SNOOPER_ENABLED)));
057            this.controlList.add(new GuiButton(2, this.width / 2 + 2, this.height - 30, 150, 20, StatCollector.translateToLocal("gui.done")));
058            boolean var6 = this.mc.getIntegratedServer() != null && this.mc.getIntegratedServer().getPlayerUsageSnooper() != null;
059            Iterator var7 = (new TreeMap(this.mc.getPlayerUsageSnooper().getCurrentStats())).entrySet().iterator();
060            Entry var5;
061    
062            while (var7.hasNext())
063            {
064                var5 = (Entry)var7.next();
065                this.field_74098_c.add((var6 ? "C " : "") + (String)var5.getKey());
066                this.field_74096_d.add(this.fontRenderer.trimStringToWidth((String)var5.getValue(), this.width - 220));
067            }
068    
069            if (var6)
070            {
071                var7 = (new TreeMap(this.mc.getIntegratedServer().getPlayerUsageSnooper().getCurrentStats())).entrySet().iterator();
072    
073                while (var7.hasNext())
074                {
075                    var5 = (Entry)var7.next();
076                    this.field_74098_c.add("S " + (String)var5.getKey());
077                    this.field_74096_d.add(this.fontRenderer.trimStringToWidth((String)var5.getValue(), this.width - 220));
078                }
079            }
080    
081            this.snooperList = new GuiSnooperList(this);
082        }
083    
084        /**
085         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
086         */
087        protected void actionPerformed(GuiButton par1GuiButton)
088        {
089            if (par1GuiButton.enabled)
090            {
091                if (par1GuiButton.id == 2)
092                {
093                    this.snooperGameSettings.saveOptions();
094                    this.snooperGameSettings.saveOptions();
095                    this.mc.displayGuiScreen(this.snooperGuiScreen);
096                }
097    
098                if (par1GuiButton.id == 1)
099                {
100                    this.snooperGameSettings.setOptionValue(EnumOptions.SNOOPER_ENABLED, 1);
101                    this.buttonAllowSnooping.displayString = this.snooperGameSettings.getKeyBinding(EnumOptions.SNOOPER_ENABLED);
102                }
103            }
104        }
105    
106        /**
107         * Draws the screen and all the components in it.
108         */
109        public void drawScreen(int par1, int par2, float par3)
110        {
111            this.drawDefaultBackground();
112            this.snooperList.drawScreen(par1, par2, par3);
113            this.drawCenteredString(this.fontRenderer, this.snooperTitle, this.width / 2, 8, 16777215);
114            int var4 = 22;
115            String[] var5 = this.field_74101_n;
116            int var6 = var5.length;
117    
118            for (int var7 = 0; var7 < var6; ++var7)
119            {
120                String var8 = var5[var7];
121                this.drawCenteredString(this.fontRenderer, var8, this.width / 2, var4, 8421504);
122                var4 += this.fontRenderer.FONT_HEIGHT;
123            }
124    
125            super.drawScreen(par1, par2, par3);
126        }
127    
128        static List func_74095_a(GuiSnooper par0GuiSnooper)
129        {
130            return par0GuiSnooper.field_74098_c;
131        }
132    
133        static List func_74094_b(GuiSnooper par0GuiSnooper)
134        {
135            return par0GuiSnooper.field_74096_d;
136        }
137    }