import java.awt.Color;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
*
*/
public class GuiBox extends JPanel {
private static final int FONT_SIZE = 18;
private GuiField[] fields;
private ListenerFactory listenerFactory;
private int index;
/**
* @param listenerFactory
*
*/
public GuiBox(int index, ListenerFactory listenerFactory) {
super();
this.listenerFactory = listenerFactory;
fields = new GuiField[Field.POSSIBILITIES];
this.setLayout(new GridLayout((int) Math.round(Math
.sqrt(Field.POSSIBILITIES)), (int) Math.round(Math
.sqrt(Field.POSSIBILITIES))));
this.setBorder(BorderFactory.createLineBorder(Color.black));
for (int i = 0; i < Field.POSSIBILITIES; i++) {
fields[i] = new GuiField(index, i);
fields[i].setText("");
fields[i].setBorder(BorderFactory.createLineBorder(Color.gray));
fields[i].setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
fields[i].addMouseListener(listenerFactory
.getPopupMenuListener(fields[i]));
add(fields[i]);
fields[i].setFont(new Font(fields[i].getFont().getName(), fields[i]
.getFont().getStyle(), FONT_SIZE));
fields[i].setPreferredSize(new Dimension(FONT_SIZE
+ (int) (FONT_SIZE * 0.4 * Math.ceil(Math
.log10((Field.POSSIBILITIES)))), FONT_SIZE
+ (int) (FONT_SIZE * 0.4 * Math.ceil(Math
.log10((Field.POSSIBILITIES))))));
fields[i].addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
});
}
}
/**
* @param element
* ele
* @return jLabel
*/
public JLabel getLabel(int element) {
return fields[element];
}
}