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