/** * Corrects for shadowing differences in tabs to ensure that they always look nice - used in font rendering, typically. */ protected int posXOffset() { return posX() + sideOffset(); }
@Override public void onMouseReleased(int mouseX, int mouseY) { mouseX -= this.posX(); mouseY -= this.posY; for (int i = elements.size(); i-- > 0; ) { ElementBase c = elements.get(i); if (!c.isVisible() || !c.isEnabled()) { // no bounds checking on mouseUp events continue; } c.onMouseReleased(mouseX, mouseY); } }
@Override public void update(int mouseX, int mouseY) { super.update(mouseX, mouseY); mouseX -= this.posX(); mouseY -= this.posY; for (int i = elements.size(); i-- > 0; ) { ElementBase c = elements.get(i); if (c.isVisible() && c.isEnabled()) { c.update(mouseX, mouseY); } } }
@Override public void drawForeground(int mouseX, int mouseY) { mouseX -= this.posX(); mouseY -= this.posY; GlStateManager.pushMatrix(); GlStateManager.translate(this.posX(), this.posY, 0.0F); drawForeground(); for (ElementBase element : elements) { if (element.isVisible()) { element.drawForeground(mouseX, mouseY); } } GlStateManager.popMatrix(); }
/** * @return Whether the tab should stay open or not. */ @Override public boolean onMousePressed(int mouseX, int mouseY, int mouseButton) throws IOException { mouseX -= this.posX(); mouseY -= this.posY; boolean shouldStayOpen = false; for (int i = 0; i < this.elements.size(); i++) { ElementBase c = elements.get(i); if (!c.isVisible() || !c.isEnabled() || !c.intersectsWith(mouseX, mouseY)) { continue; } shouldStayOpen = true; if (c.onMousePressed(mouseX, mouseY, mouseButton)) { return true; } } return shouldStayOpen; }
@Override public void drawBackground(int mouseX, int mouseY, float gameTicks) { mouseX -= this.posX(); mouseY -= this.posY; GlStateManager.pushMatrix(); GlStateManager.translate(this.posX(), this.posY, 0.0F); drawBackground(); for (ElementBase element : elements) { if (element.isVisible()) { element.drawBackground(mouseX, mouseY, gameTicks); } } GlStateManager.popMatrix(); }
@Override public boolean onMouseWheel(int mouseX, int mouseY, int movement) { int wheelMovement = Mouse.getEventDWheel(); mouseX -= this.posX(); mouseY -= this.posY; if (wheelMovement != 0) { for (int i = elements.size(); i-- > 0; ) { ElementBase c = elements.get(i); if (!c.isVisible() || !c.isEnabled() || !c.intersectsWith(mouseX, mouseY)) { continue; } if (c.onMouseWheel(mouseX, mouseY, wheelMovement)) { return true; } } } return true; }