private void adaptToTextForegroundChange(Highlighting highlighting, PropertyChangeEvent event) {
    RGB rgb = null;

    Object value = event.getNewValue();
    if (value instanceof RGB) rgb = (RGB) value;
    else if (value instanceof String) rgb = StringConverter.asRGB((String) value);

    if (rgb != null) {

      String property = event.getProperty();
      Color color = fColorManager.getColor(property);

      if ((color == null || !rgb.equals(color.getRGB()))
          && fColorManager instanceof IColorManagerExtension) {
        IColorManagerExtension ext = (IColorManagerExtension) fColorManager;
        ext.unbindColor(property);
        ext.bindColor(property, rgb);
        color = fColorManager.getColor(property);
      }

      TextAttribute oldAttr = highlighting.getTextAttribute();
      highlighting.setTextAttribute(
          new TextAttribute(color, oldAttr.getBackground(), oldAttr.getStyle()));
    }
  }
 private void addColor(String colorKey) {
   if (fColorManager != null && colorKey != null && fColorManager.getColor(colorKey) == null) {
     RGB rgb = PreferenceConverter.getColor(fPreferenceStore, colorKey);
     if (fColorManager instanceof IColorManagerExtension) {
       IColorManagerExtension ext = (IColorManagerExtension) fColorManager;
       ext.unbindColor(colorKey);
       ext.bindColor(colorKey, rgb);
     }
   }
 }
 private void removeColor(String colorKey) {
   if (fColorManager instanceof IColorManagerExtension)
     ((IColorManagerExtension) fColorManager).unbindColor(colorKey);
 }