import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPopupMenu; public class GuiBoard extends JPanel { ListenerFactory listenerFactory; protected GuiBox[] boxes; public GuiBoard(ListenerFactory listenerFactory) { super(); this.listenerFactory = listenerFactory; boxes = new GuiBox[Field.POSSIBILITIES]; this.setLayout(new GridLayout((int) Math.round(Math.sqrt(Field.POSSIBILITIES)), (int) Math.round(Math.sqrt(Field.POSSIBILITIES)))); for (int i = 0; i < Field.POSSIBILITIES; i++) { boxes[i] = new GuiBox(i, listenerFactory); this.add(boxes[i]); } } private void update__wrappee__Undo (Board b) { Field field; JLabel label; for (int boxNr = 0; boxNr < Field.POSSIBILITIES; boxNr++) { for (int fieldNr = 0; fieldNr < Field.POSSIBILITIES; fieldNr++) { field = b.getField(Structure.BOX, boxNr, fieldNr); label = boxes[boxNr].getLabel(fieldNr); label.setOpaque(true); if (field.isInitialSet()) { label.setText(String.valueOf(field.getValue())); label.setBackground(Color.LIGHT_GRAY); } else if (field.isSet()) { label.setText(String.valueOf(field.getValue())); label.setBackground(Color.WHITE); } else { label.setText(""); label.setBackground(Color.WHITE); } } } } public void update(Board b) { update__wrappee__Undo(b); Field field; JLabel label; for (int boxNr = 0; boxNr < Field.POSSIBILITIES; boxNr++) { for (int fieldNr = 0; fieldNr < Field.POSSIBILITIES; fieldNr++) { field = b.getField(Structure.BOX, boxNr, fieldNr); label = boxes[boxNr].getLabel(fieldNr); label.setOpaque(true); if (field.isInitialSet()) { label.setBackground(Color.BLACK); label.setForeground(Color.ORANGE); } else if (field.isSet()) { label.setForeground(Color.BLACK); label.setBackground(Color.ORANGE); } else { label.setBackground(Color.WHITE); } } } } }