Package erogenousbeef.bigreactors.gui.controls

Source Code of erogenousbeef.bigreactors.gui.controls.BeefGuiListBox

package erogenousbeef.bigreactors.gui.controls;

import java.util.ArrayList;
import java.util.List;

import net.minecraft.client.renderer.texture.TextureManager;
import erogenousbeef.bigreactors.client.gui.BeefGuiBase;
import erogenousbeef.bigreactors.gui.BeefGuiControlBase;
import erogenousbeef.bigreactors.gui.IBeefListBoxEntry;

public class BeefGuiListBox extends BeefGuiControlBase {

  protected int borderColor = 0xffaaaaaa;
  protected int backgroundColor = 0xff000000;
  protected int selectedLineColor = 0xff000000;
  protected int textColor = 0xffcdcdcd;
  protected int selectedTextColor = 0xffffffff;
 
  private List<IBeefListBoxEntry> entries;
 
  private int displayTop;
  private int selectedEntryIdx;
 
  private static final int NO_ENTRY = -1;
  private static final int margin = 2;
 
  public BeefGuiListBox(BeefGuiBase container, int x, int y, int width,
      int height) {
    super(container, x, y, width, height);
   
    entries = new ArrayList<IBeefListBoxEntry>();
    displayTop = 0;
    selectedEntryIdx = NO_ENTRY;
  }

  public void add(IBeefListBoxEntry entry) {
    entries.add(entry);
  }
 
  public void remove(IBeefListBoxEntry entry) {
    entries.remove(entry);
  }
 
 
 
  @Override
  public void drawBackground(TextureManager renderEngine, int mouseX, int mouseY) {
    drawRect(absoluteX, absoluteY, absoluteX+width, absoluteY+height, borderColor);
    drawRect(absoluteX+margin, absoluteY+margin, absoluteX+width-margin*2, absoluteY+height-margin*2, backgroundColor);
  }

  @Override
  public void drawForeground(TextureManager renderEngine, int mouseX, int mouseY) {
    int drawnY = 0;
    IBeefListBoxEntry entry;
    for(int i = displayTop; i < entries.size(); i++) {
      entry = entries.get(i);
      if(entry.getHeight() + drawnY > this.height) { break; }
      else {
        if(this.selectedEntryIdx == i) {
          entry.draw(this.guiContainer.getFontRenderer(), relativeX+margin, relativeY+margin+drawnY, selectedLineColor, selectedTextColor);
        }
        else {
          entry.draw(this.guiContainer.getFontRenderer(), relativeX+margin, relativeY+margin+drawnY, backgroundColor, textColor);
        }
      }
      if(drawnY >= this.height) { break; }
    }
  }

  @Override
  public void onMouseClicked(int mouseX, int mouseY, int mouseButton) {
    int checkedY = 0;
    for(int i = displayTop; i < entries.size(); i++) {
      int entryHeight = entries.get(i).getHeight();
      if(checkedY + entryHeight > (this.height-margin*2)) {
        break;
      }
     
      if(this.absoluteY + margin + checkedY <= mouseY && this.absoluteY + margin + entryHeight + checkedY >= mouseY) {
        setSelectedIndex(i);
        onEntryClicked(entries.get(i));
        break;
      }
     
      checkedY += entryHeight;
    }
  }
 
  protected void setSelectedIndex(int newSelectedIdx) {
    if(newSelectedIdx < 0 || newSelectedIdx >= this.entries.size()) { return; }
    if(this.selectedEntryIdx == newSelectedIdx) { return; }
    this.selectedEntryIdx = newSelectedIdx;
    this.guiContainer.onListBoxSelectionChanged(this, entries.get(this.selectedEntryIdx));
  }
 
  public void onEntryClicked(IBeefListBoxEntry entry) {
    this.guiContainer.onListBoxEntryClicked(this, entry);
  }
 
}
TOP

Related Classes of erogenousbeef.bigreactors.gui.controls.BeefGuiListBox

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.