'Color in an edge with the given colors.
If no colors are specified, use intelligent defaults
(dependent on selection, etc.)'

def _color_edge(self, edge, linecolor=None, textcolor=None):

    if (edge not in self._edgetags):
        return
    c = self._chart_canvas
    if ((linecolor is not None) and (textcolor is not None)):
        if (edge in self._marks):
            linecolor = self._marks[edge]
        tags = self._edgetags[edge]
        c.itemconfig(tags[0], fill=linecolor)
        c.itemconfig(tags[1], fill=textcolor)
        c.itemconfig(tags[2], fill=textcolor, outline=textcolor)
        c.itemconfig(tags[3], fill=textcolor)
        c.itemconfig(tags[4], fill=textcolor)
        return
    else:
        N = self._chart.num_leaves()
        if (edge in self._marks):
            self._color_edge(self._marks[edge])
        if (edge.is_complete() and (edge.span() == (0, N))):
            self._color_edge(edge, '#084', '#042')
        elif isinstance(edge, LeafEdge):
            self._color_edge(edge, '#48c', '#246')
        else:
            self._color_edge(edge, '#00f', '#008')
