001    package net.minecraft.client.gui;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import net.minecraft.client.settings.GameSettings;
006    import net.minecraft.util.StringTranslate;
007    
008    @SideOnly(Side.CLIENT)
009    public class GuiLanguage extends GuiScreen
010    {
011        /** This GUI's parent GUI. */
012        protected GuiScreen parentGui;
013    
014        /**
015         * Timer used to update texture packs, decreases every tick and is reset to 20 and updates texture packs upon
016         * reaching 0.
017         */
018        private int updateTimer = -1;
019    
020        /** This GUI's language list. */
021        private GuiSlotLanguage languageList;
022    
023        /** For saving the user's language selection to disk. */
024        private final GameSettings theGameSettings;
025    
026        /** This GUI's 'Done' button. */
027        private GuiSmallButton doneButton;
028    
029        public GuiLanguage(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
030        {
031            this.parentGui = par1GuiScreen;
032            this.theGameSettings = par2GameSettings;
033        }
034    
035        /**
036         * Adds the buttons (and other controls) to the screen in question.
037         */
038        public void initGui()
039        {
040            StringTranslate var1 = StringTranslate.getInstance();
041            this.controlList.add(this.doneButton = new GuiSmallButton(6, this.width / 2 - 75, this.height - 38, var1.translateKey("gui.done")));
042            this.languageList = new GuiSlotLanguage(this);
043            this.languageList.registerScrollButtons(this.controlList, 7, 8);
044        }
045    
046        /**
047         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
048         */
049        protected void actionPerformed(GuiButton par1GuiButton)
050        {
051            if (par1GuiButton.enabled)
052            {
053                switch (par1GuiButton.id)
054                {
055                    case 5:
056                        break;
057                    case 6:
058                        this.mc.displayGuiScreen(this.parentGui);
059                        break;
060                    default:
061                        this.languageList.actionPerformed(par1GuiButton);
062                }
063            }
064        }
065    
066        /**
067         * Draws the screen and all the components in it.
068         */
069        public void drawScreen(int par1, int par2, float par3)
070        {
071            this.languageList.drawScreen(par1, par2, par3);
072    
073            if (this.updateTimer <= 0)
074            {
075                this.mc.texturePackList.updateAvaliableTexturePacks();
076                this.updateTimer += 20;
077            }
078    
079            StringTranslate var4 = StringTranslate.getInstance();
080            this.drawCenteredString(this.fontRenderer, var4.translateKey("options.language"), this.width / 2, 16, 16777215);
081            this.drawCenteredString(this.fontRenderer, "(" + var4.translateKey("options.languageWarning") + ")", this.width / 2, this.height - 56, 8421504);
082            super.drawScreen(par1, par2, par3);
083        }
084    
085        /**
086         * Called from the main game loop to update the screen.
087         */
088        public void updateScreen()
089        {
090            super.updateScreen();
091            --this.updateTimer;
092        }
093    
094        /**
095         * Gets the relevant instance of GameSettings. Synthetic method for use in GuiSlotLanguage
096         */
097        static GameSettings getGameSettings(GuiLanguage par0GuiLanguage)
098        {
099            return par0GuiLanguage.theGameSettings;
100        }
101    
102        /**
103         * Returns the private doneButton field.
104         */
105        static GuiSmallButton getDoneButton(GuiLanguage par0GuiLanguage)
106        {
107            return par0GuiLanguage.doneButton;
108        }
109    }