public Component getRendererComponent(GraphColoring coloring) {
        final GraphColoring myColoring = new GraphColoring(coloring.graph);
        myColoring.vertexColors = new HashMap<Vertex, Integer>(coloring.vertexColors);
        myColoring.edgeColors = new HashMap<Edge, Integer>(coloring.edgeColors);
        myColoring.label = coloring.label;
        String txt = "";
        txt = "<HTML><BODY>";
        if (myColoring.label != null && !myColoring.label.equals("")) {
            txt = txt + "<B>" + myColoring.label + ":  </B>";
        }
        if (myColoring.vertexColors != null && myColoring.vertexColors.size() > 0) {
            txt = txt + "<B>Vertex colors: </B> ";
            for (Map.Entry<Vertex, Integer> p : myColoring.vertexColors.entrySet()) {
                txt = txt + p.getKey().getLabel() + ":" + p.getValue() + " , ";
            }
        }
        if (myColoring.edgeColors != null && myColoring.edgeColors.size() > 0) {
            txt = txt + "<br/><B>Edge colors: </B> ";
            for (Map.Entry<Edge, Integer> p : myColoring.edgeColors.entrySet()) {
                txt = txt + p.getKey().getLabel() + ":" + p.getValue() + " , ";
            }
        }
        txt = txt + "</BODY></HTML>";
        
        JLabel l = new JLabel(txt){
            @Override
            public void setForeground(Color fg) {
                super.setForeground(fg);
                if (fg== GCellRenderer.SELECTED_COLOR)
                    showOnGraph(myColoring);
            }
        };
        l.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                showOnGraph(myColoring);
            }
        });
        return l;
    }