VisitorResult CompoundUpdateOutputVisitor::visit( Compound* compound )
{
    if( !compound->isRunning( ))
        return TRAVERSE_PRUNE;    

    _updateOutput( compound );
    _updateSwapBarriers( compound );

    return TRAVERSE_CONTINUE;    
}
void ListModifyProperties::handleNotification (Field *field) 
{
  ML_TRACE_IN("void ListModifyProperties::handleNotification (Field *field) ");

  if (field == _updateFld) 
  {
    _updateOutput();
  }
  else if (field == _clearFld)
  {
    _deleteOutput();
  }
  else
  {    
    int autoUpdateMode = _autoUpdateModeFld->getEnumValue();
    bool updateRelatedFieldTouched = ( (field == _inListFld) || (field == _changeTypeValueFld) );

    if (updateRelatedFieldTouched) 
    {
      int autoUpdateMode = _autoUpdateModeFld->getEnumValue();

      if (autoUpdateMode == AutoUpdateModeAutoClear)
      {
        _deleteOutput();
      }

      if (autoUpdateMode == AutoUpdateModeAutoUpdate)
      {
        _updateOutput();
      }
    }

    if ( (field == _autoUpdateModeFld) && (autoUpdateMode == AutoUpdateModeAutoUpdate) )
    {
      _updateOutput();
    }

  }
}
Ejemplo n.º 3
0
void GraphToFibers::handleNotification(Field* field)
{
  if (field == _inGraphFld)
  {
    ml::Base *inValue = _inGraphFld->getBaseValue();

    if (inValue)
    {
      if (ML_BASE_IS_A(inValue, ml::Graph))
      {
        ml::Graph* inGraph = ((ml::Graph*)inValue);
        _inGraph = *inGraph;
      }
    }
    else
    {
      _inGraph.clearGraph();
    }

    _updateOutput();

  }

}