class UniqueColorMode implements ColorMode {

    private final VizConfig vizConfig;
    private float[] color;

    public UniqueColorMode() {
        this.vizConfig = VizController.getInstance().getVizConfig();
    }

    @Override
    public void defaultNodeColor(Renderer renderer) {
        color = VizController.getInstance().getVizModel().getTextModel().nodeColor;
        renderer.setColor(color[0], color[1], color[2], color[3]);
    }

    @Override
    public void defaultEdgeColor(Renderer renderer) {
        color = VizController.getInstance().getVizModel().getTextModel().edgeColor;
        renderer.setColor(color[0], color[1], color[2], color[3]);
    }

    @Override
    public void textNodeColor(Renderer renderer, NodeModel nodeModel) {
        textColor(renderer, nodeModel, nodeModel.isSelected() || nodeModel.isHighlight());
    }

    @Override
    public void textEdgeColor(Renderer renderer, EdgeModel edgeModel) {
        textColor(renderer, edgeModel, edgeModel.isSelected() || edgeModel.isAutoSelected());
    }

    public void textColor(Renderer renderer, TextModel text, boolean selected) {<FILL_FUNCTION_BODY>}

    @Override
    public String getName() {
        return NbBundle.getMessage(UniqueColorMode.class, "UniqueColorMode.name");
    }

    @Override
    public ImageIcon getIcon() {
        return ImageUtilities.loadImageIcon("VisualizationImpl/UniqueColorMode.png", false);
    }

    @Override
    public String toString() {
        return getName();
    }
}

        if (vizConfig.isLightenNonSelected()) {
            if (!selected) {
                float lightColorFactor = 1 - vizConfig.getLightenNonSelectedFactor();
                renderer.setColor(color[0], color[1], color[2], lightColorFactor);
            } else {
                renderer.setColor(color[0], color[1], color[2], 1);
            }
        } else {
            renderer.setColor(color[0], color[1], color[2], 1);
        }
    
<no_super_class>