Esempio n. 1
0
        /// <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);
        }
Esempio n. 3
0
        /// <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));
                }
            }
        }
Esempio n. 4
0
        /// <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)
            {

            }
        }
Esempio n. 5
0
 /// <summary>
 /// Editor needs context items.
 /// </summary>
 private void OnContextItemsNeeded(object sender, NeedContextItemsArgs e)
 {
     e.AllItems.AddRange(NeedContextItemsArgs.ExamineModelForNames(Operations, e.ObjectName, true, true, false));
 }
Esempio n. 6
0
        /// <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));
            }
        }
Esempio n. 7
0
        /// <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));
            }
        }