public static void createViewerInFrame(String[] cardsID, Zone zone,
            Dimension gameSize, String info) {
        final JFrame frame = new JFrame();
        frame.setUndecorated(true);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        mostRecentCardViewer = new CardViewer(new InSearcherMouseAdapter(zone));
        frame.addFocusListener(new FocusAdapter() {
            @Override
            public void focusLost(FocusEvent e) {
                if (!Card.isAnyCardEnlarged() &&
                        (mostRecentPopupMenu == null
                        || !mostRecentPopupMenu.isShowing())) {
                    frame.dispose();
                }
            }
        });

        int width = cardsID.length * Card.W > gameSize.width - Card.W * 2?
                gameSize.width - Card.W * 2 : cardsID.length * Card.W;
        mostRecentCardViewer.setPreferredSize(new Dimension(width, Card.H));

        mostRecentCardViewerLabel = new JLabel(info);
        mostRecentCardViewerLabel.setHorizontalAlignment(JLabel.CENTER);
        mostRecentCardViewerLabel.setFont(new Font("Arial", Font.PLAIN, 24));

        JPanel contentPane = new JPanel(new BorderLayout(3, 3));
        contentPane.add(mostRecentCardViewerLabel, BorderLayout.NORTH);
        contentPane.add(mostRecentCardViewer, BorderLayout.CENTER);
        contentPane.setBorder(BorderFactory.createLineBorder(Color.GREEN, 3));

        frame.setContentPane(contentPane);
        frame.pack();
        frame.setLocation((gameSize.width - frame.getSize().width) / 2,
                (gameSize.height - frame.getSize().height) / 2);

        for (String id : cardsID) {
            mostRecentCardViewer.addCard(new Card(Utilities.findPath(Game.getCardName(id)), id));
        }
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                mostRecentCardViewer.showCards(null);
            }
        });

        frame.setVisible(true);
    }