using System; using Decal.Interop.Controls; using Decal.Interop.Inject; namespace Decal.Adapter.Wrappers; public class NotebookWrapper : ControlWrapperBase { private EventHandler evtDestroy; private EventHandler evtChange; private PageTextIndexer myPageIndex; public int ActiveTab { get { return base.Control.ActiveTab; } set { base.Control.ActiveTab = value; } } public PageTextIndexer PageText => myPageIndex; public event EventHandler Destroy { add { if (evtDestroy == null) { base.Control.Destroy += DestroyEvent; } evtDestroy = (EventHandler)Delegate.Combine(evtDestroy, value); } remove { evtDestroy = (EventHandler)Delegate.Remove(evtDestroy, value); if (evtDestroy == null) { base.Control.Destroy -= DestroyEvent; } } } public event EventHandler Change { add { if (evtChange == null) { base.Control.Change += ChangeEvent; } evtChange = (EventHandler)Delegate.Combine(evtChange, value); } remove { evtChange = (EventHandler)Delegate.Remove(evtChange, value); if (evtChange == null) { base.Control.Change -= ChangeEvent; } } } public override void Initialize(object control) { base.Initialize(control); myPageIndex = new PageTextIndexer(base.Control); } protected override void Dispose(bool disposing) { if (disposing) { if (evtDestroy != null) { evtDestroy = (EventHandler)Delegate.Remove(evtDestroy, evtDestroy); base.Control.Destroy -= DestroyEvent; } if (evtChange != null) { evtChange = (EventHandler)Delegate.Remove(evtChange, evtChange); base.Control.Change -= ChangeEvent; } if (myPageIndex != null) { myPageIndex.Dispose(); } } base.Dispose(disposing); } public void AddPage(string text, IControl control) { base.Control.AddPage(text, control); } private void ChangeEvent(int ID, int Index) { if (evtChange != null) { evtChange(this, new IndexChangeEventArgs(ID, Index)); } } private void DestroyEvent(int ID) { if (evtDestroy != null) { evtDestroy(this, new ControlEventArgs(ID)); } } }