class BasicEdgeColorPropertyEditor extends AbstractColorPropertyEditor {

    @Override
    public String getAsText() {
        EdgeColor c = (EdgeColor) getValue();
        if (c.getMode().equals(EdgeColor.Mode.CUSTOM)) {
            return toText(c.getMode().name(), c.getCustomColor() == null ? Color.BLACK : c.getCustomColor());
        } else {
            return c.getMode().name().toLowerCase();
        }
    }

    @Override
    public void setAsText(String s) {<FILL_FUNCTION_BODY>}

    @Override
    public boolean supportsCustomEditor() {
        return false;
    }
}

        if (matchColorMode(s, EdgeColor.Mode.CUSTOM.name().toLowerCase())) {
             setValue(new EdgeColor(toColor(s)));
        } else if (matchColorMode(s, EdgeColor.Mode.MIXED.name().toLowerCase())) {
            setValue(new EdgeColor(EdgeColor.Mode.MIXED));
        } else if (matchColorMode(s, EdgeColor.Mode.ORIGINAL.name().toLowerCase())) {
            setValue(new EdgeColor(EdgeColor.Mode.ORIGINAL));
        } else if (matchColorMode(s, EdgeColor.Mode.SOURCE.name().toLowerCase())) {
            setValue(new EdgeColor(EdgeColor.Mode.SOURCE));
        } else if (matchColorMode(s, EdgeColor.Mode.TARGET.name().toLowerCase())) {
            setValue(new EdgeColor(EdgeColor.Mode.TARGET));
        }
    
<methods>public non-sealed void <init>() <variables>