class PopupDropDownEditCell extends
                                   AbstractPopupEditCell<String, String> {

    @Override
    public void render(Context context,
                       String value,
                       SafeHtmlBuilder sb) {

        //We need to get the list of potential values to lookup the "Display" value from the "Stored" value.
        //Since the content of the list may be different for each cell (dependent enumerations) the list
        //has to be populated "on demand". 
        DropDownData dd = dmo.getEnums(this.factType,
                                       this.factField,
                                       this.dropDownManager.getCurrentValueMap(context));
        if (dd == null) {
            return;
        }

        utilities.setDropDownData(value,
                                  dd,
                                  isMultipleSelect,
                                  dmo.getResourcePath(),
                                  listBox);

        //Render value
        if (value != null) {
            String label = getLabel(value);
            sb.append(renderer.render(label));
        }
    }

    public  PopupDropDownEditCell(final String factType,
                                 final String factField,
                                 final AsyncPackageDataModelOracle dmo,
                                 final CellTableDropDownDataValueMapProvider dropDownManager,
                                 final boolean isReadOnly);
    public  PopupDropDownEditCell(final String factType,
                                 final String factField,
                                 final AsyncPackageDataModelOracle dmo,
                                 final CellTableDropDownDataValueMapProvider dropDownManager,
                                 final boolean isMultipleSelect,
                                 final boolean isReadOnly);

}