public void renderLevelDetails(Graphics2D g2)
    {
        // GET THE CURRENT LEVEL
        pathXLevel level = data.getLevel();
        PropertiesManager props = PropertiesManager.getPropertiesManager();
        
        g2.setFont(FONT_TEXT_DISPLAY);
        HashMap<TextAttribute, Object> map = new HashMap<TextAttribute, Object>();
        map.put(TextAttribute.FONT, FONT_TEXT_DISPLAY);
        float breakWidth = BREAKWIDTH;
        float drawPosY = 150;
        float drawPosX = 220;
        
        if (!data.won() && !data.lost())
        {
            // FIRST RENDER THE STATE AND CITY OF THE LEVEL
            g2.drawString(level.getName(), 220, 90);

            // THEN RENDER THE DESCRIPTION
            AttributedString s1 = new AttributedString(level.getDescription() + level.getMoney() + "!", map);
            AttributedCharacterIterator paragraph = s1.getIterator();
            int paragraphStart = paragraph.getBeginIndex();
            int paragraphEnd = paragraph.getEndIndex();
            FontRenderContext frc = g2.getFontRenderContext();

            LineBreakMeasurer lineMeasurer = new LineBreakMeasurer(paragraph, frc);
            lineMeasurer.setPosition(paragraphStart);

            while (lineMeasurer.getPosition() < paragraphEnd)
            {
                TextLayout layout = lineMeasurer.nextLayout(breakWidth);
                drawPosY += layout.getAscent();
                layout.draw(g2, drawPosX, drawPosY);
                drawPosY += layout.getDescent() + layout.getLeading();
            }
        } else if (data.won())
        {
            String winTextTop = props.getProperty(pathXPropertyType.TEXT_WIN_TOP);
            g2.drawString(winTextTop, 220, 90);
            
            // THEN RENDER THE DESCRIPTION
            String winTextBottom = props.getProperty(pathXPropertyType.TEXT_WIN_BOTTOM);
            AttributedString s1 = new AttributedString(winTextBottom + level.getMoney() + "!", map);
            AttributedCharacterIterator paragraph = s1.getIterator();
            int paragraphStart = paragraph.getBeginIndex();
            int paragraphEnd = paragraph.getEndIndex();
            FontRenderContext frc = g2.getFontRenderContext();

            LineBreakMeasurer lineMeasurer = new LineBreakMeasurer(paragraph, frc);
            lineMeasurer.setPosition(paragraphStart);

            while (lineMeasurer.getPosition() < paragraphEnd)
            {
                TextLayout layout = lineMeasurer.nextLayout(breakWidth);
                drawPosY += layout.getAscent();
                layout.draw(g2, drawPosX, drawPosY);
                drawPosY += layout.getDescent() + layout.getLeading();
            }
        } else if (data.lost())
        {
            String loseTextTop = props.getProperty(pathXPropertyType.TEXT_LOSE_TOP);
            g2.drawString(loseTextTop, 220, 90);
            
            // THEN RENDER THE DESCRIPTION
            String loseTextBottom = props.getProperty(pathXPropertyType.TEXT_LOSE_BOTTOM);
            AttributedString s1 = new AttributedString(loseTextBottom, map);
            AttributedCharacterIterator paragraph = s1.getIterator();
            int paragraphStart = paragraph.getBeginIndex();
            int paragraphEnd = paragraph.getEndIndex();
            FontRenderContext frc = g2.getFontRenderContext();

            LineBreakMeasurer lineMeasurer = new LineBreakMeasurer(paragraph, frc);
            lineMeasurer.setPosition(paragraphStart);

            while (lineMeasurer.getPosition() < paragraphEnd)
            {
                TextLayout layout = lineMeasurer.nextLayout(breakWidth);
                drawPosY += layout.getAscent();
                layout.draw(g2, drawPosX, drawPosY);
                drawPosY += layout.getDescent() + layout.getLeading();
            }
        }
    }