public void CreateControl()
        {
            string controlName = dataStack.Pop();

            if (Controls.ContainsKey(controlName))
            {
                return;
            }
            string   typeName = dataStack.Pop();
            TypeInfo typeInfo = GetType(typeName);

            if (typeInfo != default)
            {
                ConstructorInfo construct = typeInfo.GetConstructor(new Type[0]);
                if (construct != default)
                {
                    Control control = construct.Invoke(null) as Control;
                    if (control != null)
                    {
                        Controls[controlName] = control;
                        ControlAdded?.Invoke(this, control);
                    }
                }
            }
        }
Exemple #2
0
        private void ControlAddedToVisualTree(ConsoleControl c)
        {
            c.Application = this;
            c.OnDisposed(() =>
            {
                if (c.Application == this && c.Parent != null && c.Parent.Application == this)
                {
                    if (c.Parent is ConsolePanel)
                    {
                        (c.Parent as ConsolePanel).Controls.Remove(c);
                    }
                    else
                    {
                        throw new NotSupportedException($"You cannot manually dispose child controls of parent type {c.Parent.GetType().Name}");
                    }
                }
            });

            if (c is ConsolePanel)
            {
                var childPanel = c as ConsolePanel;
                childPanel.Controls.SynchronizeForLifetime((cp) => { ControlAddedToVisualTree(cp); }, (cp) => { ControlRemovedFromVisualTree(cp); }, () => { }, c);
            }
            else if (c is ProtectedConsolePanel)
            {
                var childPanel = c as ProtectedConsolePanel;
                ControlAddedToVisualTree(childPanel.ProtectedPanelInternal);
                childPanel.OnDisposed(() => ControlRemovedFromVisualTree(childPanel.ProtectedPanelInternal));
            }

            FocusManager.Add(c);
            c.AddedToVisualTreeInternal();

            ControlAdded.Fire(c);
        }
Exemple #3
0
 private void OnControlAdded()
 {
     if (ControlAdded != null)
     {
         ControlAdded.Invoke(this, EventArgs.Empty);
     }
 }
Exemple #4
0
        private void ControlAddedToVisualTree(ConsoleControl c)
        {
            c.Application = this;

            if (c is ConsolePanel)
            {
                var childPanel = c as ConsolePanel;
                childPanel.Controls.SynchronizeForLifetime((cp) => { ControlAddedToVisualTree(cp); }, (cp) => { ControlRemovedFromVisualTree(cp); }, () => { }, c.LifetimeManager);
            }

            FocusManager.Add(c);
            c.AddedToVisualTreeInternal();

            ControlAdded.Fire(c);
        }
            private void onListChanged(object sender, ListChangedEventArgs args)
            {
                switch (args.Type)
                {
                case ListChangedEventType.ItemsInserted: {
                    for (int i = 0; i < args.Count; i++)
                    {
                        var control = (Control)list[args.Index + i];
                        parent.InsertChildAt(args.Index + i, control);
                        if (ControlAdded != null)
                        {
                            ControlAdded.Invoke(control);
                        }
                    }
                    break;
                }

                case ListChangedEventType.ItemsRemoved:
                    for (int i = 0; i < args.Count; i++)
                    {
                        Control control = parent.Children[args.Index];
                        parent.RemoveChild(control);
                        if (ControlRemoved != null)
                        {
                            ControlRemoved.Invoke(control);
                        }
                    }
                    break;

                case ListChangedEventType.ItemReplaced: {
                    var removedControl = parent.Children[args.Index];
                    parent.RemoveChild(removedControl);
                    if (ControlRemoved != null)
                    {
                        ControlRemoved.Invoke(removedControl);
                    }

                    var addedControl = (Control)list[args.Index];
                    parent.InsertChildAt(args.Index, addedControl);
                    if (ControlAdded != null)
                    {
                        ControlAdded.Invoke(addedControl);
                    }
                    break;
                }
                }
            }
Exemple #6
0
    /*Private methods*/

    /*Public methods*/

    public virtual void AddControl(GameObject control)
    {
        control.transform.SetParent(Layout.transform, false);
        Controls.Add(control);
        ControlAdded?.Invoke(control);
    }
 void FireControlAddedEvent(IClipboardDataControlPackage package)
 {
     ControlAdded?.Invoke(this, new ControlEventArgument(package));
 }
Exemple #8
0
 /// <summary>
 /// Raises the ControlAdded event.
 /// </summary>
 /// <param name="e">An ControlEventArgs containing the event data.</param>
 protected override void OnControlAdded(ControlEventArgs e)
 {
     ControlAdded?.Invoke(this, e);
 }
Exemple #9
0
 private void _control_ControlAdded(object sender, ControlEventArgs e)
 {
     HookupControlEvents(e.Control);
     ControlAdded?.Invoke(_control, e);
 }
Exemple #10
0
 protected virtual void OnControlAdded(object sender, EventArgs e)
 {
     ControlAdded?.Invoke(sender, e);
 }