    001package net.minecraft.client.gui;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.client.settings.GameSettings;
    006import net.minecraft.client.settings.KeyBinding;
    007import net.minecraft.util.StringTranslate;
    008
    009import net.minecraftforge.client.GuiControlsScrollPanel;
    010
    011@SideOnly(Side.CLIENT)
    012public 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}