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