private void DeleteElement(HookElement el)
 {
     if (BackgroundIndicators.Contains(el))
     {
         BackgroundIndicators.Remove(el);
         BackgroundIndLayer.RemoveVisual(el.IndicatorVisual);
     }
     if (ForegroundIndicators.Contains(el))
     {
         ForegroundIndicators.Remove(el);
         ForegroundIndLayer.RemoveVisual(el.IndicatorVisual);
     }
     ResetPricesTimes();
     ResetHooks();
 }
        public void AddElement(HookElement el)
        {
            el.SetChart(Chart);
            el.SetDeleteAction(DeleteElement);
            el.Moving += MoveIndicator;
            ForegroundIndicators.Add(el);
            ForegroundIndLayer.AddVisual(el.IndicatorVisual);
            
            if (el is Painting)
            {
                PricesCanvas.AddVisual(el.PriceVisual);
                TimesCanvas.AddVisual(el.TimeVisual);
            }

            ResetHooks();
            el.Rendering();
        }
 private void MoveIndicator(HookElement element, int i)
 {
     if (ForegroundIndicators.Contains(element))
     {
         switch (i)
         {
             case 2:
                 {
                     i = ForegroundIndicators.IndexOf(element);
                     if (i == ForegroundIndicators.Count - 1) return;
                     ForegroundIndicators.Remove(element);
                     ForegroundIndicators.Add(element);
                     ResetVisualsForeground();
                 }
                 break;
             case 1:
                 {
                     i = ForegroundIndicators.IndexOf(element);
                     if (i == ForegroundIndicators.Count - 1) return;
                     ForegroundIndicators.Remove(element);
                     ForegroundIndicators.Insert(i + 1, element);
                     ResetVisualsForeground();
                 }
                 break;
             case -1:
                 {
                     i = ForegroundIndicators.IndexOf(element);
                     if (i == 0)
                     {
                         ForegroundIndicators.Remove(element);
                         BackgroundIndicators.Add(element);
                         ResetVisuals();
                     }
                     else
                     {
                         ForegroundIndicators.Remove(element);
                         ForegroundIndicators.Insert(i - 1, element);
                         ResetVisualsForeground();
                     }
                 }
                 break;
             case -2:
                 {
                     ForegroundIndicators.Remove(element);
                     BackgroundIndicators.Insert(0, element);
                     ResetVisuals();
                 }
                 break;
         }
     }
     else
     {
         switch (i)
         {
             case 2:
                 {
                     BackgroundIndicators.Remove(element);
                     ForegroundIndicators.Add(element);
                     ResetVisuals();
                 }
                 break;
             case 1:
                 {
                     i = BackgroundIndicators.IndexOf(element);
                     if (i == BackgroundIndicators.Count - 1)
                     {
                         BackgroundIndicators.Remove(element);
                         ForegroundIndicators.Insert(0, element);
                         ResetVisuals();
                     }
                     else
                     {
                         BackgroundIndicators.Remove(element);
                         BackgroundIndicators.Insert(i + 1, element);
                         ResetVisualsBackground();
                     }
                 }
                 break;
             case -1:
                 {
                     i = BackgroundIndicators.IndexOf(element);
                     if (i == 0) return;
                     BackgroundIndicators.Remove(element);
                     BackgroundIndicators.Insert(i - 1, element);
                     ResetVisualsBackground();
                 }
                 break;
             case -2:
                 {
                     i = BackgroundIndicators.IndexOf(element);
                     if (i == 0) return;
                     BackgroundIndicators.Remove(element);
                     BackgroundIndicators.Insert(0, element);
                     ResetVisualsBackground();
                 }
                 break;
         }
     }
 }