private void EditElements(IEnumerable<TimedSequenceElement> elements)
        {
            if (elements == null)
                return;

            using (
                TimedSequenceEditorEffectEditor editor = new TimedSequenceEditorEffectEditor(elements.Select(x => x.EffectNode)))
            {
                DialogResult result = editor.ShowDialog();
                if (result == DialogResult.OK)
                {
                    foreach (Element element in elements)
                    {
                        TimelineControl.grid.RenderElement(element);
                    }
                    sequenceModified();
                }
            }
        }
        private void EditElements(IEnumerable<TimedSequenceElement> elements)
        {
            if (elements == null)
                return;

            using(TimedSequenceEditorEffectEditor editor = new TimedSequenceEditorEffectEditor(elements.Select(x => x.EffectNode))) {
                DialogResult result = editor.ShowDialog();
                if(result == DialogResult.OK)
                    sequenceModified();
            }
        }
        private void EditElements(IEnumerable<TimedSequenceElement> elements, string elementType = null)
        {
            if (elements == null)
                return;

            //Restrict the pop up editor to only Nutcracker effects for now. All other effects are supported by the new
            //effect editor docker. This will be deprecated in some future version once the Nutcracker effects are converted
            //to indivudual supported effects.
            elementType = "Nutcracker";

            IEnumerable<TimedSequenceElement> editElements;

            editElements = elementType == null
                ? elements
                : elements.Where(element => element.EffectNode.Effect.EffectName == elementType);

            if (!editElements.Any())
            {
                return;
            }

            using (
                TimedSequenceEditorEffectEditor editor = new TimedSequenceEditorEffectEditor(editElements.Select(x => x.EffectNode))
                )
            {
                DialogResult result = editor.ShowDialog();
                if (result == DialogResult.OK)
                {
                    foreach (Element element in editElements)
                    {
                        //TimelineControl.grid.RenderElement(element);
                        element.UpdateNotifyContentChanged();
                    }
                    SequenceModified();
                }
            }
        }
        private void EditElement(TimedSequenceElement element)
        {
            if (element == null)
                return;

            using (TimedSequenceEditorEffectEditor editor = new TimedSequenceEditorEffectEditor(element.EffectNode)) {
                DialogResult result = editor.ShowDialog();
                if (result == System.Windows.Forms.DialogResult.OK)
                    sequenceModified();
            }
        }