/** @return the dataSources human readable */
 public String[] getUserChoosableDataSource() {
   if (getUserChoosableValues().isEmpty()) {
     getUserChoosableValues().add(I18n.getString(DATA_SOURCE_LOCAL));
     getUserChoosableValues().add(I18n.getString(DATA_SOURCE_REFERENCED));
   }
   return getUserChoosableValues().toArray(new String[getUserChoosableValues().size()]);
 }
 /** {@inheritDoc} */
 public boolean setProperty(Object value) {
   if (getPoNode() instanceof IParamNodePO) {
     IParamNodePO node = (IParamNodePO) getPoNode();
     if (node instanceof IExecTestCasePO) {
       IExecTestCasePO exec = (IExecTestCasePO) node;
       int index = Integer.valueOf(String.valueOf(value));
       if (index >= 0) {
         final String newDataSource = getUserChoosableValues().get(index);
         boolean shouldBeLocal = newDataSource == I18n.getString(DATA_SOURCE_LOCAL);
         boolean isLocal = !exec.getHasReferencedTD();
         if (shouldBeLocal == isLocal) {
           return false;
         } else if (shouldBeLocal) {
           exec.resolveTDReference();
         } else {
           exec.setHasReferencedTD(true);
         }
         DataEventDispatcher.getInstance()
             .fireDataChangedListener(
                 node, DataState.StructureModified, UpdateState.onlyInEditor);
         return true;
       }
     }
   }
   return false;
 }
  /**
   * @param key The untranslated name of a top-level category.
   * @return the translated category name, or <code>null</code> if there is no translation for the
   *     given key.
   */
  public static String getTopLevelCategoryName(String key) {
    if (topLevelCategoryToNameKey.containsKey(key)) {
      return I18n.getString(topLevelCategoryToNameKey.get(key));
    }

    return null;
  }