package org.terasology.rendering.gui.components;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.terasology.rendering.gui.framework.IClickListener;
import org.terasology.rendering.gui.framework.UIDisplayElement;
import org.terasology.rendering.gui.framework.UIDisplayWindow;
import javax.vecmath.Vector2f;
public class UIDialogBox extends UIDisplayWindow {
private UIWindowTitle _title;
private UIButton _close;
private Vector2f _prevMousePos = null;
private boolean _dragged = false;
public UIDialogBox(String title, Vector2f size) {
super();
setSize(size);
_title = new UIWindowTitle(new Vector2f(getSize().x * 0.55f, 19f), title);
_title.setVisible(true);
_title.getPosition().x = (getPosition().x + size.x / 2f) - _title.getSize().x / 2;
_title.setTitle(title);
_close = new UIButton(new Vector2f(19f, 19f));
_close.getPosition().x = getSize().x - 25f;
_close.setVisible(true);
_close.getLabel().setText("");
_close.addClickListener(new IClickListener() {
public void clicked(UIDisplayElement element) {
close(true);
}
});
windowStyleSetup();
addDisplayElement(_close);
addDisplayElement(_title);
}
public void update() {
Vector2f mousePos = new Vector2f(Mouse.getX(), Display.getHeight() - Mouse.getY());
if (intersects(mousePos)) {
if (_mouseDown) {
_focused = true;
if (_title.intersects(mousePos)) {
_dragged = true;
if (_prevMousePos == null) {
_prevMousePos = new Vector2f(mousePos);
}
}
}
}
if (_dragged) {
drag(new Vector2f(_prevMousePos.x - mousePos.x, _prevMousePos.y - mousePos.y));
_prevMousePos = new Vector2f(mousePos);
}
if (!_mouseDown || !_dragged || _mouseUp) {
_dragged = false;
_mouseDown = false;
_prevMousePos = null;
_mouseUp = false;
_focused = false;
}
super.update();
}
public void resize() {
_title.setSize(new Vector2f(getSize().x * 0.55f, 19f));
_title.getPosition().x = getSize().x / 2f - _title.getSize().x / 2;
_title.resize();
_style = null;
_close.getPosition().x = getSize().x - 25f;
windowStyleSetup();
}
public void windowStyleSetup() {
setStyle("border-image-top", "engine:gui_menu 168/512 5/512 260/512 89/512 5");
setStyle("border-image-right", "engine:gui_menu 4/512 81/512 428/512 94/512 4");
setStyle("border-image-bottom", "engine:gui_menu 168/512 4/512 260/512 175/512 4");
setStyle("border-image-left", "engine:gui_menu 4/512 81/512 256/512 94/512 4");
setStyle("border-corner-topleft", "engine:gui_menu 256/512 89/512");
setStyle("border-corner-topright", "engine:gui_menu 428/512 89/512");
setStyle("border-corner-bottomright", "engine:gui_menu 428/512 175/512");
setStyle("border-corner-bottomleft", "engine:gui_menu 256/512 175/512");
setStyle("background-image", "engine:gui_menu 168/512 76/512 260/512 94/512");
_close.setClassStyle("button", "background-image: engine:gui_menu 19/512 19/512 73/512 155/512");
_close.setClassStyle("button-mouseover", "background-image: engine:gui_menu 19/512 19/512 54/512 155/512");
_close.setClassStyle("button-mouseclick", "background-image: engine:gui_menu 19/512 19/512 92/512 155/512");
}
}