@Override
 public void setValue(String styleSheet) {
   PrefixedValue prefixedValue = new PrefixedValue(styleSheet);
   itemType = prefixedValue.getType();
   handlePrefix(itemType);
   if (prefixedValue.getSuffix() != null) {
     stylesheetTf.setText(prefixedValue.getSuffix().trim());
   } else {
     // may happen if wrong style sheet
     stylesheetTf.setText(""); // NOI18N
   }
   updateButtons();
   updateOpenRevealMenuItems();
   currentValue = getValue();
 }
  @Override
  public void setValue(Object value) {
    setValueGeneric(value);
    if (isSetValueDone()) {
      return;
    }

    if (value == null) {
      textNode.setText(null);
      return;
    }
    assert value instanceof String;
    String val = (String) value;
    PrefixedValue prefixedValue = new PrefixedValue(val);
    String suffix = prefixedValue.getSuffix();

    // Handle i18n
    if (prefixedValue.isResourceKey()) {
      if (!i18nMode) {
        wrapInHBox();
        i18nMode = true;
      }
    } else if (i18nMode) {
      // no percent + i18nMode
      unwrapHBox();
      i18nMode = false;
    }

    // Handle multi-line
    if (containsLineFeed(prefixedValue.toString())) {
      if (i18nMode) {
        // multi-line + i18n ==> set as i18n only
        multiLineMode = false;
        switchToTextField();
      } else {
        if (!multiLineMode) {
          multiLineMode = true;
          switchToTextArea();
        }
      }
    } else {
      // no line feed
      if (multiLineMode) {
        multiLineMode = false;
        switchToTextField();
      }
    }

    if (i18nMode) {
      textNode.setText(suffix);
    } else {
      // We may have other special characters (@, $, ...) to display in the text field
      textNode.setText(prefixedValue.toString());
    }
    updateMenuItems();
  }