package br.com.etyllica.gui.label;
import java.awt.Color;
import br.com.etyllica.core.event.GUIEvent;
import br.com.etyllica.core.event.KeyEvent;
import br.com.etyllica.core.graphics.Graphics;
import br.com.etyllica.gui.Label;
import br.com.etyllica.gui.theme.Theme;
import br.com.etyllica.gui.theme.ThemeManager;
import br.com.etyllica.layer.GeometricLayer;
import br.com.etyllica.layer.TextLayer;
/**
*
* @author yuripourre
*
*/
public class TextLabel extends Label {
protected TextLayer layer;
public TextLabel(int x, int y) {
super(x, y);
this.layer = new TextLayer(x, y, "");
}
public TextLabel(int x, int y, int w) {
super(x, y, w);
this.layer = new TextLayer(x, y, "");
}
public TextLabel(int x, int y, String text) {
super(x, y);
this.layer = new TextLayer(x, y, text);
}
public TextLabel(String text) {
this(0, 0, text);
}
public TextLabel(String text, float size) {
this(0, 0, text);
this.layer.setSize(size);
}
@Override
public void setX(int x) {
this.x = x;
this.layer.setX(x);
}
@Override
public void setY(int y) {
this.y = y;
this.layer.setY(y);
}
@Override
public void updateEvent(GUIEvent event) {
switch (event) {
case LOST_FOCUS:
onFocus = false;
break;
case GAIN_FOCUS:
onFocus = true;
break;
default:
break;
}
}
@Override
public void draw(Graphics g) {
Theme theme = ThemeManager.getInstance().getTheme();
g.setFont(theme.getFont().deriveFont(layer.getStyle()));
g.setFont(theme.getFont().deriveFont(layer.getSize()));
if(!onFocus){
g.setColor(theme.getTextColor());
}else{
g.setColor(theme.getButtonOnFocus());
}
//Label is always in center
if(!theme.isShadow()){
g.drawString(layer.getText(), bx, by, bw, bh);
}else{
g.drawStringShadow(layer.getText(), bx, by, bw, bh, theme.getShadowColor());
}
}
@Override
public GUIEvent updateKeyboard(KeyEvent event) {
if(event.isKeyDown(KeyEvent.VK_TAB)) {
return GUIEvent.NEXT_COMPONENT;
}
return GUIEvent.NONE;
}
public String getText() {
return this.layer.getText();
}
/**
*
* @param text
*/
public void setText(String text) {
this.layer.setText(text);
}
public float getFontSize() {
return this.layer.getSize();
}
/**
*
* @param size
*/
public void setFontSize(int size) {
this.layer.setSize(size);
}
/**
*
* @param border
*/
public void setBorder(boolean border) {
this.layer.setBorder(border);
}
/**
*
* @param borderColor
*/
public void setBorderColor(Color borderColor) {
this.layer.setBorderColor(borderColor);
}
/**
*
* @param borderWidh
*/
public void setBorderWidth(int borderWidh) {
this.layer.setBorderWidth(borderWidh);
}
@Override
public void centralize(int x, int y, int w, int h) {
layer.centralize(x, y, w, h);
}
@Override
public void centralize(GeometricLayer layer) {
layer.centralize(layer);
}
@Override
public void centralizeX(GeometricLayer layer) {
layer.centralizeX(layer);
}
@Override
public int centralizeX(int startX, int endX) {
return layer.centralizeX(startX, endX);
}
@Override
public void centralizeY(GeometricLayer layer) {
layer.centralizeY(layer);
}
@Override
public int centralizeY(int startY, int endY) {
return layer.centralizeY(startY, endY);
}
public TextLayer getLayer() {
return layer;
}
public int getFontStyle() {
return layer.getStyle();
}
public void setFontStyle(int fontStyle) {
layer.setStyle(fontStyle);
}
}