package org.terasology.rendering.gui.components;
import org.terasology.logic.manager.AssetManager;
import org.terasology.rendering.gui.framework.UIDisplayContainer;
import org.terasology.rendering.gui.framework.UIGraphicsElement;
import javax.vecmath.Vector2f;
public class UIScrollBarThumb extends UIDisplayContainer {
//Graphics
private UIGraphicsElement _header;
private UIGraphicsElement _body;
private UIGraphicsElement _footer;
private UIScrollBar.ScrollType _scrollType = UIScrollBar.ScrollType.vertical;
public UIScrollBarThumb(Vector2f size, UIScrollBar.ScrollType scrollType) {
setSize(size);
_scrollType = scrollType;
_header = new UIGraphicsElement(AssetManager.loadTexture("engine:gui_menu"));
_body = new UIGraphicsElement(AssetManager.loadTexture("engine:gui_menu"));
_footer = new UIGraphicsElement(AssetManager.loadTexture("engine:gui_menu"));
_header.setVisible(true);
_body.setVisible(true);
_footer.setVisible(true);
addDisplayElement(_header);
addDisplayElement(_body);
addDisplayElement(_footer);
switch (scrollType) {
case vertical:
setVerticalOptions();
break;
case horizontal:
setHorizontalPositions();
break;
}
_header.getTextureOrigin().set(0f, 155f / 512f);
_body.getTextureOrigin().set(7f / 512f, 155f / 512f);
_footer.getTextureOrigin().set(18f / 512f, 155f / 512f);
}
private void setVerticalOptions() {
/*SET POS FOR HEADER*/
_header.setRotateAngle(90);
_header.setPosition(getPosition());
_header.getPosition().x += 15f;
_header.setSize(new Vector2f(8f, 15f));
_header.getTextureSize().set(new Vector2f(7f / 512f, 15f / 512f));
/*SET POS FOR BODY*/
_body.setRotateAngle(90);
_body.setPosition(new Vector2f(getPosition().x, getPosition().y + _header.getSize().x));
_body.getPosition().x += 15f;
_body.getTextureSize().set(new Vector2f(10f / 512f, 15f / 512f));
/*SET POS FOR FOOTER*/
_footer.setRotateAngle(90);
_footer.setPosition(new Vector2f(getPosition().x, getPosition().y + 2 * _header.getTextureSize().y + _body.getSize().y));
_footer.getPosition().x += 15f;
_footer.setSize(new Vector2f(8f, 15f));
_footer.getTextureSize().set(new Vector2f(8f / 512f, 15f / 512f));
}
private void setHorizontalPositions() {
/*SET POS FOR HEADER*/
_header.setPosition(getPosition());
_header.setSize(new Vector2f(7f, 15f));
_header.getTextureSize().set(new Vector2f(7f / 512f, 15f / 512f));
/*SET POS FOR BODY*/
_body.setPosition(new Vector2f(getPosition().x + _header.getSize().x, getPosition().y));
_body.getTextureSize().set(new Vector2f(10f / 512f, 15f / 512f));
/*SET POS FOR FOOTER*/
//_footer.setRotateAngle(180);
_footer.setPosition(new Vector2f((getPosition().x + 2 * _header.getTextureSize().x + _body.getSize().x), getPosition().y));
_footer.setSize(new Vector2f(8f, 15f));
//_footer.getPosition().y += 15f;
_footer.getTextureSize().set(new Vector2f(8f / 512f, 15f / 512f));
}
public void resize(float newScrollSize) {
float newBodyScrollSize = newScrollSize - _header.getSize().x * 2;
if (_scrollType == UIScrollBar.ScrollType.vertical) {
setSize(new Vector2f(15f, newScrollSize));
_body.setSize(new Vector2f(newBodyScrollSize, 15f));
_footer.getPosition().y = _body.getPosition().y +
_body.getSize().x;
} else {
setSize(new Vector2f(newScrollSize, 15f));
_body.setSize(new Vector2f(newBodyScrollSize, 15f));
_footer.getPosition().x = _body.getPosition().x +
_body.getSize().x;
}
}
public float getThumbPosition() {
if (_scrollType == UIScrollBar.ScrollType.vertical) {
return getPosition().y;
}
return getPosition().x;
}
public float getThumbSize() {
if (_scrollType == UIScrollBar.ScrollType.vertical) {
return getSize().y;
}
return getSize().x;
}
public void setThumbPosition(float newPosition) {
if (_scrollType == UIScrollBar.ScrollType.vertical) {
getPosition().y = newPosition;
} else {
getPosition().x = newPosition;
}
}
}