示例#1
0
  public static <T> boolean setFeature(
      Object iUserObject, String elementName, Feature<T> feature, T value) {
    SchemaFeatures features = getSchemaFeature(iUserObject, elementName, feature);

    if (features == null) return false;
    T oldValue = features.getFeature(feature);
    features.setFeature(feature, value);
    // BROADCAST CHANGES TO ALL REGISTERED LISTENERS
    List<SchemaFeaturesChangeListener> listeners =
        Controller.getInstance().getListeners(SchemaFeaturesChangeListener.class);
    if (listeners != null)
      switch (feature.getType()) {
        case ACTION:
          for (SchemaFeaturesChangeListener listener : listeners) {
            listener.signalChangeAction(iUserObject, elementName, feature, oldValue, value);
          }

          break;
        case FIELD:
          for (SchemaFeaturesChangeListener listener : listeners) {
            listener.signalChangeField(iUserObject, elementName, feature, oldValue, value);
          }
          break;
        case EVENT:
          break;
        case CLASS:
          for (SchemaFeaturesChangeListener listener : listeners) {
            listener.signalChangeClass(iUserObject, feature, oldValue, value);
          }
        default:
          break;
      }
    return true;
  }