Inheritance: ArtemisObject
Exemplo n.º 1
0
        /// <summary>
        /// Attach a given fixin to this form.
        /// </summary>
        /// <param name="fixin"></param>
        protected internal void AttachFixin(AbstractFixin fixin)
        {
            if (fixin == null)
            {
                throw new ArgumentNullException(
                          String.Format("Cannot attach null fixin to form '{0}'.", Anonymous ? (object)this : Name));
            }
            bool attached = false;

            switch (fixin.FixinType)
            {
            case FixinType.Render:
                if (_midRenderFixins)
                {
                    _fixinsToAdd.Add(fixin);
                }
                else
                {
                    RenderFixins.Add(fixin.Name, fixin);
                    fixin._form = this;
                    attached    = true;
                }
                break;

            case FixinType.Update:
                if (_midRenderFixins)
                {
                    _fixinsToAdd.Add(fixin);
                }
                else
                {
                    UpdateFixins.Add(fixin.Name, fixin);
                    fixin._form = this;
                    attached    = true;
                }
                break;

            case FixinType.Render | FixinType.Update:
                if (_midUpdateFixins | _midRenderFixins)
                {
                    _fixinsToAdd.Add(fixin);
                }
                else
                {
                    RenderFixins.Add(fixin.Name, fixin);
                    UpdateFixins.Add(fixin.Name, fixin);
                    fixin._form = this;
                    attached    = true;
                }
                break;
            }

            if (attached && fixin.OnAttachToForm != null)
            {
                fixin.OnAttachToForm();
            }
        }
Exemplo n.º 2
0
        private void DetachFixin(AbstractFixin fixin, string fixinName)
        {
            if (fixin == null && fixinName == null)
            {
                throw new ArgumentNullException(
                          String.Format(
                              "When detaching a fixin from form '{0}', both parameters " +
                              "('fixin' and 'fixinName') can't be null.", Anonymous ? (object)this : Name));
            }
            if (fixin == null)
            {
                fixin = UpdateFixins.ContainsKey(fixinName) ? UpdateFixins[fixinName]
                  : RenderFixins.ContainsKey(fixinName) ? RenderFixins[fixinName]
                  : null;
                if (fixin == null)
                {
                    return;
                }
            }
            else if (fixinName == null)
            {
                fixinName = fixin.Name;
            }

            var type = fixin.FixinType;

            // There's probably a simpler if statement for this...
            if (type == FixinType.Update && _midUpdateFixins ||
                type == FixinType.Render && _midRenderFixins ||
                type == (FixinType.Update | FixinType.Render) && (_midRenderFixins || _midUpdateFixins))
            {
                _fixinsToRemove.Add(fixinName);
            }
            else
            {
                switch (type)
                {
                case FixinType.Update:
                    UpdateFixins.Remove(fixinName);
                    break;

                case FixinType.Render:
                    RenderFixins.Remove(fixinName);
                    break;

                case FixinType.Update | FixinType.Render:
                    UpdateFixins.Remove(fixinName);
                    RenderFixins.Remove(fixinName);
                    break;
                }
                fixin.Kill(false);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Detach the given fixin.
 /// </summary>
 /// <param name="fixin"></param>
 public void DetachFixin(AbstractFixin fixin)
 {
     DetachFixin(fixin, null);
 }