@Override
    public void refresh(RefreshEvent event) {

        boolean haveToRefresh = false;
        Class evClass = event.getClass();

        if (evClass == ResizeEvent.class) {
            ResizeEvent ev = (ResizeEvent) event;
            this.resize(ev.getHeight() * ev.getWidth());
            haveToRefresh = false;

        } else if (evClass == TotalGameRefreshEvent.class) {
            haveToRefresh = true;
            
        } else if (evClass == EndGameEvent.class) {
            haveToRefresh = true;
        }

        if (haveToRefresh) {

            WorldModel wm = (WorldModel) event.getSource();
            int width = wm.width();
            int height = wm.height();
            RefreshEvent ev;
            Iterator<TextCellView> iterator = this.cells.iterator();
            TextCellView cell;

            for (int j = 0; j < height; j++) {
                for (int i = 0; i < width; i++) {
                    ev = new LocalGameRefreshEvent(wm, i, j);
                    cell = iterator.next();
                    cell.refresh(ev);
                }
                System.out.println();
            }

            String message = wm.getMessage();
            if (message.length() > 0) {
                System.out.println(message);
            }

            int time = wm.getTime();
            System.out.println("Time : " + time / 60 + ":" + time % 60);

            System.out.println();
            this.listenToUser();
        }
    }