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.client.settings.KeyBinding;
007    import net.minecraft.util.StringTranslate;
008    
009    import net.minecraftforge.client.GuiControlsScrollPanel;
010    
011    @SideOnly(Side.CLIENT)
012    public class GuiControls extends GuiScreen
013    {
014        /**
015         * A reference to the screen object that created this. Used for navigating between screens.
016         */
017        private GuiScreen parentScreen;
018    
019        /** The title string that is displayed in the top-center of the screen. */
020        protected String screenTitle = "Controls";
021    
022        /** Reference to the GameSettings object. */
023        private GameSettings options;
024    
025        /** The ID of the  button that has been pressed. */
026        private int buttonId = -1;
027    
028        private GuiControlsScrollPanel scrollPane;
029    
030        public GuiControls(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
031        {
032            this.parentScreen = par1GuiScreen;
033            this.options = par2GameSettings;
034        }
035    
036        private int func_73907_g()
037        {
038            return this.width / 2 - 155;
039        }
040    
041        /**
042         * Adds the buttons (and other controls) to the screen in question.
043         */
044        public void initGui()
045        {
046            scrollPane = new GuiControlsScrollPanel(this, options, mc);
047            StringTranslate var1 = StringTranslate.getInstance();
048            int var2 = this.func_73907_g();
049    
050            this.controlList.add(new GuiButton(200, this.width / 2 - 100, this.height - 28, var1.translateKey("gui.done")));
051            scrollPane.registerScrollButtons(controlList, 7, 8);
052            this.screenTitle = var1.translateKey("controls.title");
053        }
054    
055        /**
056         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
057         */
058        protected void actionPerformed(GuiButton par1GuiButton)
059        {
060            if (par1GuiButton.id == 200)
061            {
062                this.mc.displayGuiScreen(this.parentScreen);
063            }
064        }
065    
066        /**
067         * Called when the mouse is clicked.
068         */
069        protected void mouseClicked(int par1, int par2, int par3)
070        {
071            super.mouseClicked(par1, par2, par3);
072        }
073    
074        /**
075         * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
076         */
077        protected void keyTyped(char par1, int par2)
078        {
079            if (scrollPane.keyTyped(par1, par2))
080            {
081                super.keyTyped(par1, par2);
082            }
083        }
084    
085        /**
086         * Draws the screen and all the components in it.
087         */
088        public void drawScreen(int par1, int par2, float par3)
089        {
090            this.drawDefaultBackground();
091            scrollPane.drawScreen(par1, par2, par3);
092            drawCenteredString(fontRenderer, screenTitle, width / 2, 4, 0xffffff);
093            super.drawScreen(par1, par2, par3);
094        }
095    }