package org.c3sl.ufpr.br.exercises.tables; import org.c3sl.ufpr.br.correction.CorrectionFive; import br.ufpr.c3sl.virtualkeyboard.formula.FormulaInitial; import br.ufpr.c3sl.virtualkeyboard.main.VirtualKeyBoardMain; public class JExerciseTableFive extends JExerciseTable{ private static final long serialVersionUID = -7306113789036805006L; private static final int ROW = 5; private static final int COLUMN = 4; public JExerciseTableFive(String axiom, String rules, double angle) { super(axiom, rules, angle, new CorrectionFive(), ROW, COLUMN); configureTable(); } @Override public void configureEditable(){ cellEditable = new boolean[6][4]; cellEditable[0][3] = true; cellEditable[5][3] = true; setRowCollumnCorrect(0, 2, true); } public void configureTable(){ for (int i = 0; i < ROW+1; i++) { setValueAt(new FormulaInitial(), i, 2); setValueAt(new FormulaInitial(), i, 3); } this.setValueAt("ℓ", 0, 2); } private void nexts(boolean _true){ if (getSelectedRow() < getRowCount()-1){ cellEditable[getSelectedRow()+1][2] = _true; cellEditable[getSelectedRow()+1][3] = _true; } } private void previous(boolean _true){ if (getSelectedRow() > 0){ if (getSelectedRow() != 1) cellEditable[getSelectedRow()-1][2] = _true; cellEditable[getSelectedRow()-1][3] = _true; } } private boolean isRowCorrect(int line){ for (int i = 2; i < 4; i++) { if (!isRowCollumnCorrect(line, i)) return false; } return true; } @Override public void activeCell(boolean _true){ if (isRowCorrect(getSelectedRow())){ nexts(true); previous(false); }else { nexts(false); previous(true); } } @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", "Perímetro"}; } }