package org.terasology.rendering.gui.framework; import org.lwjgl.opengl.Display; import org.terasology.logic.manager.GUIManager; import javax.vecmath.Vector2f; import java.util.HashMap; import static org.lwjgl.opengl.GL11.*; public class UIDisplayWindow extends UIScrollableDisplayContainer { private boolean _maximized = false; private boolean _modal = false; private HashMap<String, UIDisplayElement> _displayElementsById = new HashMap<String, UIDisplayElement>(); protected void drag(Vector2f value) { getPosition().x -= value.x; getPosition().y -= value.y; } public void close(boolean clearInputControls) { setVisible(false); setFocus(false); GUIManager.getInstance().setFocusedFromLast(); if (clearInputControls) { clearInputControls(); } } public void show() { setVisible(true); setFocus(true); } public void clearInputControls() { for (UIDisplayElement element : getDisplayElements()) { if (IInputDataElement.class.isInstance(element)) { IInputDataElement inputControl = (IInputDataElement) element; inputControl.clearData(); } } } public void render() { if (isModal()) { renderOverlay(); } super.render(); } public void renderOverlay() { glPushMatrix(); glLoadIdentity(); glColor4f(0, 0, 0, 0.75f); glBegin(GL_QUADS); glVertex2f(0f, 0f); glVertex2f((float) Display.getWidth(), 0f); glVertex2f((float) Display.getWidth(), (float) Display.getHeight()); glVertex2f(0f, (float) Display.getHeight()); glEnd(); glPopMatrix(); } public void maximize() { setSize(new Vector2f(Display.getWidth(), Display.getHeight())); _maximized = true; } public boolean isMaximized() { return _maximized; } public boolean isModal() { return _modal; } public void setModal(boolean modal) { _modal = modal; } public void addDisplayElement(UIDisplayElement element, String elementId) { addDisplayElement(element); _displayElementsById.put(elementId, element); element.setParent(this); } public UIDisplayElement getElementById(String elementId) { if (!_displayElementsById.containsKey(elementId)) { return null; } return _displayElementsById.get(elementId); } }