package tirateima.gui.arquivos;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Writer;
import tirateima.gui.Constantes;
import tirateima.gui.variaveis.VarLinha;
import tirateima.gui.variaveis.Variavel;
public class RegistroEOF extends VarLinha {
private static final long serialVersionUID = 1L;
private Variavel tipo = null;
private static final String texto = "EOF";
private Dimension p_size = null;
public RegistroEOF(Variavel tipo){
super("", texto);
assert tipo != null;
this.tipo = tipo;
this.lixo = false;
this.setTexto("");
}
@Override
public Variavel criarCopia() {
return new RegistroEOF(tipo);
}
@Override
public String typeName() {
return null;
}
@Override
public Color getCorTitulo() {
return new Color(100, 100, 100);
}
@Override
public Object getValor() {
return null;
}
@Override
public void setValor(Object valor) {
}
public Dimension getMinimumSize(){
return tipo.getMinimumSize();
}
public Dimension getMaximumSize(){
return tipo.getMaximumSize();
}
public Dimension getPreferredSize(){
if(p_size != null){
return p_size;
}
return tipo.getPreferredSize();
}
public void setPreferredSize(Dimension size){
p_size = size;
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
//Pega valores da fonte base
Font fonte = Constantes.FONTE_VARIAVEL;
FontMetrics metrics = g.getFontMetrics(fonte);
Rectangle2D bounds = metrics.getStringBounds(texto, g);
//Redimensiona a fonte conforme tamanho da variável
Dimension my_size = getRealSize();
double prop = my_size.width / bounds.getWidth();
int nova_altura = (int) (bounds.getHeight() * prop);
if(nova_altura > my_size.height){
prop = my_size.height / bounds.getHeight();
}
Font nova_fonte = fonte.deriveFont((float) (prop * fonte.getSize()));
metrics = g.getFontMetrics(nova_fonte);
bounds = metrics.getStringBounds(texto, g);
//Encontra ponto central
int center_x = my_size.width / 2;
int center_y = my_size.height / 2;
int pos_x = center_x - (int) bounds.getWidth() / 2 + 1;
int pos_y = center_y + (int) bounds.getHeight() / 2 - 1;
g2d.setFont(fonte);
g2d.setColor(Constantes.COR_FONTE);
g2d.drawString(texto, pos_x, pos_y);
}
public int readData(BufferedReader r) throws IOException {
return 0;
}
public void writeData(Writer w) throws IOException {
}
}