@Override
    public Image getImage(Object obj, int columnIndex) {
      if (columnIndex == 0) {
        IRteDependencyItem item = getDependencyItem(obj);
        if (item != null) {
          if (item.isMaster()) {
            EEvaluationResult res = item.getEvaluationResult();
            if (res == EEvaluationResult.FULFILLED && item.isDeny())
              res = EEvaluationResult.INCOMPATIBLE;
            switch (res) {
              case IGNORED:
              case UNDEFINED:
              case FULFILLED:
                break;
              case CONFLICT:
              case ERROR:
              case FAILED:
              case INCOMPATIBLE:
              case INCOMPATIBLE_API:
              case INCOMPATIBLE_BUNDLE:
              case INCOMPATIBLE_VARIANT:
              case INCOMPATIBLE_VENDOR:
              case INCOMPATIBLE_VERSION:
              case MISSING:
              case MISSING_API:
              case MISSING_BUNDLE:
              case MISSING_VARIANT:
              case MISSING_VENDOR:
              case MISSING_VERSION:
              case UNAVAILABLE:
              case UNAVAILABLE_PACK:
                return CpPlugInUI.getImage(CpPlugInUI.ICON_ERROR);

              case INACTIVE:
              case INSTALLED:
              case SELECTABLE:
                return CpPlugInUI.getImage(CpPlugInUI.ICON_WARNING);
              default:
                break;
            }
            return null;
          } else if (item.getComponentItem() != null) {
            IRteComponent component = item.getComponentItem().getParentComponent();
            if (component != null) {
              ICpComponentInfo ci = component.getActiveCpComponentInfo();
              int instances = component.getMaxInstanceCount();
              if (ci != null && ci.getComponent() == null) {
                if (instances > 1) return CpPlugInUI.getImage(CpPlugInUI.ICON_MULTICOMPONENT_ERROR);
                else return CpPlugInUI.getImage(CpPlugInUI.ICON_COMPONENT_ERROR);

              } else {
                if (instances > 1) return CpPlugInUI.getImage(CpPlugInUI.ICON_MULTICOMPONENT);
                else return CpPlugInUI.getImage(CpPlugInUI.ICON_COMPONENT);
              }
            }
          }
        }
      }
      return null;
    }
  @Override
  public String getDescription() {
    EEvaluationResult res = getEvaluationResult();
    if (!fDependencies.isEmpty()) {
      switch (res) {
        case INSTALLED:
        case MISSING:
        case SELECTABLE:
        case UNAVAILABLE:
        case UNAVAILABLE_PACK:
          return CpStrings.RteDependencyResult_AdditionalComponentRequired;
        case INCOMPATIBLE:
        case FAILED:
          return CpStrings.RteDependencyResult_ComponentConficts;
        default:
          break;
      }
    }
    String s = null;
    if (fComponentItem != null && !res.isFulfilled()) {
      ICpComponentInfo ci = fComponentItem.getActiveCpComponentInfo();
      if (ci != null && ci.getComponent() == null) {
        s = EEvaluationResult.MISSING.getDescription();
        s += ". "; // $NON-NLS-1$
        s += res.getDescription();
        if (res == EEvaluationResult.UNAVAILABLE_PACK) {
          s += ": "; // $NON-NLS-1$
          ICpPackInfo pi = ci.getPackInfo();
          String id = pi.isVersionFixed() ? pi.getId() : pi.getPackFamilyId();
          s += id;
        }
        return s;
      }
    }
    s = res.getDescription();

    if (s != null) return s;
    return super.getDescription();
  }