/// <summary> /// When overridden in the derived class, handles setting up event listeners for a <see cref="IToolTargetContainer"/>. /// This will be invoked once for every <see cref="Tool"/> instance for every <see cref="IToolTargetContainer"/> available. /// When the <see cref="Tool"/> is newly added to the <see cref="ToolManager"/>, all existing <see cref="IToolTargetContainer"/>s /// will be sent through this method. As new ones are added while this <see cref="Tool"/> exists, those new /// <see cref="IToolTargetContainer"/>s will also be passed through. What events to listen to and on what instances is /// purely up to the derived <see cref="Tool"/>. /// Make sure that all attached event listeners are also removed in the <see cref="Tool.ToolTargetContainerRemoved"/> method. /// </summary> /// <param name="c">The <see cref="IToolTargetContainer"/> to optionally listen to events on.</param> protected override void ToolTargetContainerAdded(IToolTargetContainer c) { base.ToolTargetContainerAdded(c); var mapContainer = c.AsMapContainer(); if (mapContainer == null) { return; } mapContainer.MouseDown -= mapContainer_MouseDownCallback; mapContainer.MouseDown += mapContainer_MouseDownCallback; mapContainer.MouseUp -= mapContainer_MouseUpCallback; mapContainer.MouseUp += mapContainer_MouseUpCallback; mapContainer.MouseMove -= mapContainer_MouseMoveCallback; mapContainer.MouseMove += mapContainer_MouseMoveCallback; mapContainer.MouseWheel -= mapContainer_MouseWheelCallback; mapContainer.MouseWheel += mapContainer_MouseWheelCallback; mapContainer.KeyDown -= mapContainer_KeyDownCallback; mapContainer.KeyDown += mapContainer_KeyDownCallback; mapContainer.KeyUp -= mapContainer_KeyUpCallback; mapContainer.KeyUp += mapContainer_KeyUpCallback; mapContainer.KeyPress -= mapContainer_KeyPress; mapContainer.KeyPress += mapContainer_KeyPress; }
/// <summary> /// When overridden in the derived class, handles tearing down event listeners for a <see cref="IToolTargetContainer"/>. /// Any event listeners set up in <see cref="Tool.ToolTargetContainerAdded"/> should be torn down here. /// </summary> /// <param name="c">The <see cref="IToolTargetContainer"/> to optionally listen to events on.</param> protected override void ToolTargetContainerRemoved(IToolTargetContainer c) { base.ToolTargetContainerRemoved(c); var mapC = c.AsMapContainer(); if (mapC != null) { _mapContainers.Remove(mapC); } }
/// <summary> /// Gets the <see cref="IToolTargetContainer"/> as a <see cref="IToolTargetMapContainer"/>. /// </summary> /// <param name="c">The <see cref="IToolTargetContainer"/> to try to cast to the /// desired derived tool container type.</param> /// <returns>The <paramref name="c"/> as <see cref="IToolTargetMapContainer"/>, or null /// if <paramref name="c"/> is not of the expected type.</returns> public static IToolTargetMapContainer AsMapContainer(this IToolTargetContainer c) { return(c as IToolTargetMapContainer); }
/// <summary> /// When overridden in the derived class, handles tearing down event listeners for a <see cref="IToolTargetContainer"/>. /// Any event listeners set up in <see cref="Tool.ToolTargetContainerAdded"/> should be torn down here. /// </summary> /// <param name="c">The <see cref="IToolTargetContainer"/> to optionally listen to events on.</param> protected virtual void ToolTargetContainerRemoved(IToolTargetContainer c) { }
/// <summary> /// Invokes the <see cref="Tool.ToolTargetContainerRemoved"/> method. /// </summary> /// <param name="c">The <see cref="IToolTargetContainer"/> to pass.</param> internal void InvokeToolTargetContainerRemoved(IToolTargetContainer c) { ToolTargetContainerRemoved(c); }
/// <summary> /// When overridden in the derived class, handles setting up event listeners for a <see cref="IToolTargetContainer"/>. /// This will be invoked once for every <see cref="Tool"/> instance for every <see cref="IToolTargetContainer"/> available. /// When the <see cref="Tool"/> is newly added to the <see cref="ToolManager"/>, all existing <see cref="IToolTargetContainer"/>s /// will be sent through this method. As new ones are added while this <see cref="Tool"/> exists, those new /// <see cref="IToolTargetContainer"/>s will also be passed through. What events to listen to and on what instances is /// purely up to the derived <see cref="Tool"/>. /// Make sure that all attached event listeners are also removed in the <see cref="Tool.ToolTargetContainerRemoved"/> method. /// </summary> /// <param name="c">The <see cref="IToolTargetContainer"/> to optionally listen to events on.</param> protected virtual void ToolTargetContainerAdded(IToolTargetContainer c) { }
/// <summary> /// When overridden in the derived class, handles tearing down event listeners for a <see cref="IToolTargetContainer"/>. /// Any event listeners set up in <see cref="Tool.ToolTargetContainerAdded"/> should be torn down here. /// </summary> /// <param name="c">The <see cref="IToolTargetContainer"/> to optionally listen to events on.</param> protected override void ToolTargetContainerRemoved(IToolTargetContainer c) { base.ToolTargetContainerRemoved(c); var mapContainer = c.AsMapContainer(); if (mapContainer == null) return; mapContainer.MouseDown -= mapContainer_MouseDownCallback; mapContainer.MouseUp -= mapContainer_MouseUpCallback; mapContainer.MouseMove -= mapContainer_MouseMoveCallback; mapContainer.MouseWheel -= mapContainer_MouseWheelCallback; mapContainer.KeyDown -= mapContainer_KeyDownCallback; mapContainer.KeyUp -= mapContainer_KeyUpCallback; mapContainer.KeyPress -= mapContainer_KeyPress; }
/// <summary> /// When overridden in the derived class, handles tearing down event listeners for a <see cref="IToolTargetContainer"/>. /// Any event listeners set up in <see cref="Tool.ToolTargetContainerAdded"/> should be torn down here. /// </summary> /// <param name="c">The <see cref="IToolTargetContainer"/> to optionally listen to events on.</param> protected override void ToolTargetContainerRemoved(IToolTargetContainer c) { base.ToolTargetContainerRemoved(c); var mapC = c.AsMapContainer(); if (mapC != null) _mapContainers.Remove(mapC); }