/// <summary>The view is asking for variable names.</summary> public static List <ContextItem> ExamineModelForNames(IModel relativeTo, string objectName, bool properties, bool methods, bool events) { if (objectName == string.Empty) { objectName = "."; } object o = null; IModel replacementModel = Apsim.Get(relativeTo, ".Simulations.Replacements") as IModel; if (replacementModel != null) { o = Apsim.Get(replacementModel, objectName) as IModel; } if (o == null) { o = Apsim.Get(relativeTo, objectName); } if (o == null && relativeTo.Parent is Replacements) { // Model 'relativeTo' could be under replacements. Look for the first simulation and try that. IModel simulation = Apsim.Find(relativeTo.Parent.Parent, typeof(Simulation)); o = Apsim.Get(simulation, objectName) as IModel; } if (o != null) { return(NeedContextItemsArgs.ExamineObjectForContextItems(o, properties, methods, events)); } return(new List <ContextItem>()); }
/// <summary> /// Generates a list of context items for given model. /// Uses <see cref="GetNodeFromPath(Model, string)"/> to get the model reference. /// </summary> /// <param name="relativeTo">Model that the string is relative to.</param> /// <param name="objectName">Name of the model that we want context items for.</param> /// <returns></returns> public static List <ContextItem> ExamineModelForContextItemsV2(Model relativeTo, string objectName, bool properties, bool methods, bool events) { List <ContextItem> contextItems = new List <ContextItem>(); object node = GetNodeFromPath(relativeTo, objectName); if (node != null) { contextItems = NeedContextItemsArgs.ExamineObjectForContextItems(node, properties, methods, events); } return(contextItems); }
/// <summary> /// Editor needs context items. /// </summary> private void OnContextItemsNeeded(object sender, NeedContextItemsArgs e) { if (Operations.Parent is Factor) { } else { object o = Apsim.Get(Operations, e.ObjectName); if (o == null) o = Apsim.Find(Operations, e.ObjectName); if (o != null) { e.AllItems.AddRange(NeedContextItemsArgs.ExamineObjectForContextItems(o, true, true, false)); } } }
/// <summary> /// Intellisense lookup. /// </summary> void OnContextItemsNeeded(object sender, NeedContextItemsArgs e) { if (e.ObjectName == "") e.ObjectName = "."; try { Experiment experiment = Factor.Parent.Parent as Experiment; if (experiment != null && experiment.BaseSimulation != null) { object o = experiment.BaseSimulation.Get(e.ObjectName); if (o != null) { foreach (IVariable Property in Apsim.FieldsAndProperties(o, BindingFlags.Instance | BindingFlags.Public)) e.Items.Add(Property.Name); e.Items.Sort(); } } } catch (Exception) { } }
/// <summary> /// Editor needs context items. /// </summary> private void OnContextItemsNeeded(object sender, NeedContextItemsArgs e) { e.AllItems.AddRange(NeedContextItemsArgs.ExamineModelForNames(Operations, e.ObjectName, true, true, false)); }
/// <summary> /// The view is asking for event names. /// </summary> void OnNeedEventNames(object Sender, NeedContextItemsArgs e) { object o = Apsim.Get(Report, e.ObjectName); if (o != null) { e.AllItems.AddRange(NeedContextItemsArgs.ExamineObjectForContextItems(o, false, false, true)); } }
/// <summary> /// The view is asking for variable names. /// </summary> void OnNeedVariableNames(object Sender, NeedContextItemsArgs e) { if (e.ObjectName == "") e.ObjectName = "."; object o = Apsim.Get(Report, e.ObjectName); if (o != null) { e.AllItems.AddRange(NeedContextItemsArgs.ExamineObjectForContextItems(o, true, true, true)); } }