Пример #1
0
        private void CollectOutlets(IIBReferenceResolver resolver)
        {
            IBDictionary dict = this.Find <IBDictionary>("outlets");

            if (dict == null)
            {
                return;
            }

            foreach (String key in dict.Keys)
            {
                IBString itemKey = dict[key] as IBString;
                if (itemKey == null)
                {
                    continue;
                }

                IIBItem     itemValue = dict[key];
                IBReference reference = itemValue as IBReference;
                if ((resolver != null) && (reference != null))
                {
                    itemValue = resolver.ResolveReference(reference);
                }
                this.outlets.Add(new IBOutletDescriptor(key, itemValue.ToString()));
            }
        }
Пример #2
0
        public override void Finish(IIBReferenceResolver resolver)
        {
            base.Finish(resolver);

            if (this.usesXmlCoder)
            {
                IIBItem item1  = this.Find <IIBItem>("dict.sortedKeys");
                IBArray keys   = this.DereferenceItem(resolver, item1) as IBArray;
                IIBItem item2  = this.Find <IIBItem>("dict.values");
                IBArray values = this.DereferenceItem(resolver, item2) as IBArray;
                if (keys != null && values != null)
                {
                    for (int i = 0; i < keys.Count; i++)
                    {
                        IBString key   = keys[i] as IBString;
                        IIBItem  value = values[i];
                        if (key != null)
                        {
                            this.Add(key.ToString(), value);
                        }
                    }
                }
                else
                {
                    throw new Exception("It seems that the parsing has really gone wrong. Can't find either keys or values...");
                }
            }
            else if (this.Value.Count > 0)
            {
                bool useKeyValuePair;

                // Probe for the keys used.
                IIBItem item = this[0];
                useKeyValuePair = item.Key.StartsWith("NS.key.");

                if (useKeyValuePair)
                {
                    for (int i = 0; i < this.Value.Count;)
                    {
                        IIBItem keyItem   = this[i++];
                        IIBItem valueItem = this[i++];
                        this.Add(keyItem.ToString(), valueItem);
                    }
                }
                else
                {
                    for (int i = 0; i < this.Value.Count; i++)
                    {
                        item = this[i];
                        this.Add(item.Key, item);
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        ///   Finishes the population of this instance.
        /// </summary>
        public override void Finish(IIBReferenceResolver resolver)
        {
            base.Finish(resolver);

            IBString className = this.Find <IBString>("classname", StringComparison.OrdinalIgnoreCase);

            this.ClassName = className != null ? className.Value : String.Empty;
            IBString superclassName = this.Find <IBString>("superclassname", StringComparison.OrdinalIgnoreCase);

            this.SuperClassName = superclassName != null ? superclassName.Value : String.Empty;

            this.CollectActions(resolver);
            this.CollectOutlets(resolver);
        }
Пример #4
0
 /// <summary>
 ///   Finishes the processing of this instance.
 /// </summary>
 /// <param name = "resolver"></param>
 public override void Finish(IIBReferenceResolver resolver)
 {
     /*
      * List<IIBItem> references = this.Value.FindAll(item => (item is IBReference));
      * foreach (IIBItem item in references)
      * {
      *  IBReference reference = (IBReference) item;
      *  IIBItem dereferencedItem = resolver.ResolveReference(reference);
      *  if (dereferencedItem!=null)
      *  {
      *      this.Replace(item, dereferencedItem);
      *  }
      * }
      */
 }
        private void CollectOutlets(IIBReferenceResolver resolver)
        {
            IBDictionary dict = this.Find<IBDictionary>("outlets");
            if (dict == null)
            {
                return;
            }

            foreach (String key in dict.Keys)
            {
                IBString itemKey = dict[key] as IBString;
                if (itemKey == null)
                {
                    continue;
                }

                IIBItem itemValue = dict[key];
                IBReference reference = itemValue as IBReference;
                if ((resolver != null) && (reference != null))
                {
                    itemValue = resolver.ResolveReference(reference);
                }
                this.outlets.Add(new IBOutletDescriptor(key, itemValue.ToString()));
            }
        }
        /// <summary>
        ///   Finishes the population of this instance.
        /// </summary>
        public override void Finish(IIBReferenceResolver resolver)
        {
            base.Finish(resolver);

            IBString className = this.Find<IBString>("classname", StringComparison.OrdinalIgnoreCase);
            this.ClassName = className != null ? className.Value : String.Empty;
            IBString superclassName = this.Find<IBString>("superclassname", StringComparison.OrdinalIgnoreCase);
            this.SuperClassName = superclassName != null ? superclassName.Value : String.Empty;

            this.CollectActions(resolver);
            this.CollectOutlets(resolver);
        }
Пример #7
0
 /// <summary>
 ///   Finishes the processing of this instance.
 /// </summary>
 public virtual void Finish(IIBReferenceResolver resolver)
 {
 }
Пример #8
0
        /// <summary>
        ///   Dereferences the given item.
        /// </summary>
        /// <param name = "resolver">The resolver.</param>
        /// <param name = "item">The item.</param>
        /// <returns></returns>
        public IIBItem DereferenceItem(IIBReferenceResolver resolver, IIBItem item)
        {
            IBReference reference = item as IBReference;

            return((reference == null) ? item : resolver.ResolveReference(reference));
        }