package org.c3sl.ufpr.br.exercises.tables; import org.c3sl.ufpr.br.correction.CorrectionFour; import br.ufpr.c3sl.virtualkeyboard.compositedElements.Division; import br.ufpr.c3sl.virtualkeyboard.compositedElements.Power; import br.ufpr.c3sl.virtualkeyboard.elements.Variable; import br.ufpr.c3sl.virtualkeyboard.formula.ElementOfFormula; import br.ufpr.c3sl.virtualkeyboard.formula.FormulaInitial; import br.ufpr.c3sl.virtualkeyboard.main.VirtualKeyBoardMain; import br.ufpr.c3sl.virtualkeyboard.elements.Number; public class JExerciseTableFour extends JExerciseTable{ private static final long serialVersionUID = 5587952136472209059L; private static final int ROW = 5; private static final int COLUMN = 5; public JExerciseTableFour(String axiom, String rules, double angle) { super(axiom, rules, angle, new CorrectionFour(), ROW, COLUMN); configureTable(); } public void configureTable(){ this.setValueAt("ℓ", 0, 2); for (int i = 0; i < ROW+1; i++) { setValueAt(new FormulaInitial(), i, 3); setValueAt(new FormulaInitial(), i, 4); setValueAt(new FormulaInitial(), i, 5); setValueAt(getFormula(i+""), i, 2); } this.setValueAt("ℓ", 0, 2); setValueAt(getFormula("n"), ROW, 2); this.getColumnModel().getColumn(2).setMaxWidth(140); this.getColumnModel().getColumn(2).setPreferredWidth(140); } @Override public int getMaxHeaderLength(){ return 20; } @Override public void buildEventsAndTransientvariables() { this.keyBoard = new VirtualKeyBoardMain(this, true, true, true); this.keyBoard.addKeyBoardListener(this); } @Override public String[] arrayHeader() { return new String[] {"Iteração", "Fractal", "Lado", "Área de um triângulo verde", "Número de triângulos Verdes", "Área Verde"}; } @Override public boolean getFractalPaintColor(){ return true; } @Override public void configureEditable(){ cellEditable = new boolean[ROW+1][COLUMN+1]; cellEditable[0][3] = true; cellEditable[0][4] = true; cellEditable[0][5] = true; } private boolean isRowCorrect(int line){ for (int i = 3; i < 6; i++) { if (!isRowCollumnCorrect(line, i)) return false; } return true; } private void nexts(boolean _true){ if (getSelectedRow() < getRowCount()-1){ cellEditable[getSelectedRow()+1][3] = _true; cellEditable[getSelectedRow()+1][4] = _true; cellEditable[getSelectedRow()+1][5] = _true; } } private void previous(boolean _true){ if (getSelectedRow() > 0){ cellEditable[getSelectedRow()-1][3] = _true; cellEditable[getSelectedRow()-1][4] = _true; cellEditable[getSelectedRow()-1][5] = _true; } } @Override public void activeCell(boolean _true){ if (isRowCorrect(getSelectedRow())){ nexts(true); previous(false); }else { nexts(false); previous(true); } } public ElementOfFormula getFormula(String i){ Variable label = new Variable(); label.addElement("ℓ"); Number number = new Number(); number.setNumber("2"); Power power = new Power(); Number numberI = new Number(); numberI.setNumber(i); power.addElement(numberI); Division division = new Division(); division.setDividend(label); division.addElement(number); division.addElement(power); return division; } }