public JetrisGrid(final Point dimension) {
    	super(dimension, TETRIS_GRID_BACKGROUND_COLOR, TETRIS_GRID_EMPTY_BORDER);
    	setPreferredSize(new Dimension(10*CELL_H, 25*CELL_H));
    	
        lines = 0;
        score = 0;
        level = 1;
        
        try{
            hiScores = HiScore.load(DAT_FILE);
        } catch (Exception e) {
            hiScores = new HiScore[3];
            for (int i = 0; i < hiScores.length; i++) {
                hiScores[i] = new HiScore();
                hiScores[i].name = "<empty>";
            }
            File f = new File(DAT_FILE);
            try {
                HiScore.write(hiScores, f);
            } catch (Exception e1) {
                JOptionPane.showMessageDialog(null, "Could not load HiScore!", "Error", 
                        JOptionPane.ERROR_MESSAGE);
            }
        } 
        
        listeners = new ArrayList<JetrisGridEventsListener>();
    }