/* Copyright (C) 2007 Felipe A. Lessa * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ package tirateima.gui.variaveis; import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.io.BufferedReader; import java.io.IOException; import java.io.Writer; /** * Representa uma variável do tipo boolean. * * @author felipe.lessa * */ @SuppressWarnings("serial") public class VarBoolean extends VarLinha { private boolean valor = false; /** * Cria uma nova variável do tipo boolean. * @param nome nome da variável. */ public VarBoolean(String nome) { super(nome, "false"); } /** * Cria uma nova variável do tipo boolean com cor e tamanhos customizados. * @param nome nome da variável. * @param valor valor inicial. */ public VarBoolean(String nome, Color cor, Dimension dimensao, Point posicao, Boolean mostraNome) { super(nome, "false"); super.cor = cor; super.dimensao = dimensao; super.posicao = posicao; super.mostraNome = mostraNome; } /** * Cria uma nova variável do tipo boolean com cor e tamanhos customizados. * @param nome nome da variável. * @param valor valor inicial. */ public VarBoolean(String nome, boolean valor, Color cor, Dimension dimensao, Point posicao, Boolean mostraNome) { this(nome); setValor(valor); super.cor = cor; super.dimensao = dimensao; super.posicao = posicao; super.mostraNome = mostraNome; } @Override public VarBoolean criarCopia() { VarBoolean ret; if (lixo) ret = new VarBoolean(nome, cor, dimensao, posicao, mostraNome); else ret = new VarBoolean(nome, valor, cor, dimensao, posicao, mostraNome); ret.modificado = modificado; modificado = false; return ret; } @Override public String typeName() { return "boolean"; } @Override public Color getCorTitulo() { if(cor == null){ return new Color(0.5f, 1.0f, 0.5f, 1.0f); } return cor; } @Override public Boolean getValor() { return new Boolean(valor); } @Override public void setValor(Object valor) { if (valor == null) lixo = true; else { lixo = false; try{ this.valor = (Boolean) valor; }catch (Exception e) { if(valor.toString().equalsIgnoreCase("true")){ this.valor = Boolean.TRUE; } else if (valor.toString().equalsIgnoreCase("false")){ this.valor = Boolean.FALSE; } } this.setTexto(String.valueOf(this.valor)); } } public int readData(BufferedReader buffer) throws IOException{ String linha = buffer.readLine(); if(linha == null) return -1; if(linha.compareToIgnoreCase("true") == 0){ setValor(new Boolean(true)); }else if(linha.compareToIgnoreCase("false") == 0){ setValor(new Boolean(false)); }else{ throw new IOException( "O arquivo não contém um campo booleano válido!"); } return 0; } public void writeData(Writer buffer) throws IOException{ String valor = lixo ? ((Boolean) getValor()).toString() : ""; valor += "\n"; buffer.write(valor); } }