protected override IFormulaUsablePath CreateRelativePath(IFormulaUsable formulaUsable, IEntity refObject, IUsingFormula editedObject) { if (formulaUsable.IsAtReaction()) { return(GenerateLocalReference(formulaUsable, editedObject)); } return(base.CreateRelativePath(formulaUsable, refObject, editedObject)); }
protected override IFormulaUsablePath CreateRelativePath(IFormulaUsable formulaUsable, IEntity refObject, IUsingFormula editedObject) { // relative paths are only used for parameter in the same event group if (refObject != null && formulaUsable.RootContainer.Equals(refObject.RootContainer)) { IFormulaUsablePath path; if (formulaUsable.IsAtMolecule()) { if (formulaUsable.IsAnImplementationOf <IParameter>()) { path = _objectPathFactory.CreateAbsoluteFormulaUsablePath(formulaUsable) .AndAddAtFront((ObjectPath.PARENT_CONTAINER)); } else { //Molecule replace With Amount path = CreateFormulaUsablePathFrom(new[] { ObjectPath.PARENT_CONTAINER, formulaUsable.Name }, formulaUsable.Name, Constants.Dimension.MOLAR_AMOUNT); } correctPath(path, refObject as IContainer); } else { if (formulaUsable.IsAtReaction()) { path = CreateFormulaUsablePathFrom(new[] { formulaUsable.Name }, formulaUsable); correctPath(path, refObject as IContainer); } else { path = base.CreateRelativePath(formulaUsable, refObject, editedObject); } } return(path); } return(CreateAbsolutePath(formulaUsable)); }