private void PopulateItemLists()
        {
            // Add the animation's visualizations, in order.
            if (mOrigAnim != null)
            {
                for (int i = 0; i < mOrigAnim.Count; i++)
                {
                    int           serial = mOrigAnim[i];
                    Visualization vis    = VisualizationSet.FindVisualizationBySerial(mEditedList,
                                                                                      serial);
                    if (vis != null)
                    {
                        VisAnimItems.Add(vis);
                    }
                    else
                    {
                        // Could happen if the Visualization exists but isn't referenced by
                        // any VisualizationSets.  Shouldn't happen unless the project file
                        // was damaged.  Silently ignore it.
                        Debug.WriteLine("WARNING: unknown vis serial " + serial);
                    }
                }
            }

            // Add all remaining non-animation Visualizations to the "source" set.
            foreach (KeyValuePair <int, VisualizationSet> kvp in mEditedList)
            {
                foreach (Visualization vis in kvp.Value)
                {
                    if (vis is VisualizationAnimation)
                    {
                        // disallow using animations as animation frames
                        continue;
                    }
                    VisSourceItems.Add(vis);
                }
            }

            if (VisSourceItems.Count > 0)
            {
                visSourceGrid.SelectedIndex = 0;
            }
            if (VisAnimItems.Count > 0)
            {
                visAnimGrid.SelectedIndex = 0;
            }
        }
        /// <summary>
        /// Adds an item to the end of the animation list.
        /// </summary>
        /// <remarks>
        /// We could make this an insert or add-at-cursor operation.  This feels a bit more
        /// natural, and works since we're still limited to single-select on the anim list.
        /// The selection should be set to the last item added so we can add repeatedly.
        /// </remarks>
        private void AddSelection()
        {
            if (!IsAddEnabled)
            {
                return;
            }

            for (int i = 0; i < visSourceGrid.SelectedItems.Count; i++)
            {
                Visualization item = (Visualization)visSourceGrid.SelectedItems[i];
                VisAnimItems.Add(item);
            }
            if (visAnimGrid.SelectedIndex < 0)
            {
                visAnimGrid.SelectedIndex = 0;
            }

            RefreshAnim();
        }