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); } } } }
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); }
private void OnControlAdded() { if (ControlAdded != null) { ControlAdded.Invoke(this, EventArgs.Empty); } }
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; } } }
/*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)); }
/// <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); }
private void _control_ControlAdded(object sender, ControlEventArgs e) { HookupControlEvents(e.Control); ControlAdded?.Invoke(_control, e); }
protected virtual void OnControlAdded(object sender, EventArgs e) { ControlAdded?.Invoke(sender, e); }