private void InsertOrdered(ProjectItem parent, ProjectItem item)
        {
            parent.AddChild(item);

            m_treeView.RemoveChild(parent, item, parent.Children.Count == 1);

            VirtualizingTreeViewItem treeViewItem = m_treeView.GetTreeViewItem(item);

            if (treeViewItem == null)
            {
                m_treeView.AddChild(parent, item);
            }

            ProjectItem[] orderedChildren = parent.Children.OrderBy(projectItem => projectItem.NameExt).ToArray();
            int           index           = Array.IndexOf(orderedChildren, item);

            item.SetSiblingIndex(index);

            if (item.IsFolder)
            {
                if (index > 0)
                {
                    object prevSibling = parent.Children[index - 1];
                    m_treeView.SetNextSibling(prevSibling, item);
                }
                else
                {
                    if (parent.Children.Count > 1)
                    {
                        object nextSibling = parent.Children[1];
                        m_treeView.SetPrevSibling(nextSibling, item);
                    }
                }
            }
        }
        private void OnObjectDestroying(ExposeToEditor o)
        {
            GameObject parent      = null;
            bool       isLastChild = false;

            if (o.Parent != null)
            {
                parent      = o.Parent.gameObject;
                isLastChild = (o.Parent.ChildCount - o.Parent.MarkedAsDestroyedChildCount) <= 1; //ChildCount is not yet decremented
            }

            m_treeView.RemoveChild(parent, o.gameObject, isLastChild);
        }
Example #3
0
        protected virtual void OnObjectDestroying(ExposeToEditor o)
        {
            ExposeToEditor parent = o.GetParent();

            try
            {
                m_treeView.ItemsRemoved -= OnItemsRemoved;
                m_treeView.RemoveChild(parent, o);
            }
            finally
            {
                m_treeView.ItemsRemoved += OnItemsRemoved;
            }
        }
Example #4
0
        public virtual void RemoveProperty(RuntimeAnimationProperty propertyItem)
        {
            RuntimeAnimationProperty parent = propertyItem.Parent;

            m_propertiesTreeView.RemoveChild(propertyItem.Parent, propertyItem);
            if (parent != null && parent.Children != null && parent.Children.Count > 0)
            {
                parent.Children.Remove(propertyItem);
                if (parent.Children.Count == 0)
                {
                    m_propertiesTreeView.RemoveChild(null, parent);
                }
            }
        }
        private void OnDestroyProjectClick()
        {
            ProjectInfo selectedProject = (ProjectInfo)m_treeView.SelectedItem;

            PopupWindow.Show("Delete Project", "Delete " + selectedProject.Name + " project?", "Delete", args =>
            {
                ProjectInfo[] projectInfo = m_treeView.Items.OfType <ProjectInfo>().ToArray();
                int index = Array.IndexOf(projectInfo, selectedProject);
                m_project.DeleteProject(selectedProject.Name, (error, deletedProject) =>
                {
                    if (error.HasError)
                    {
                        PopupWindow.Show("Unable to delete project", error.ErrorText, "OK");
                        args.Cancel = true;
                        return;
                    }

                    m_treeView.RemoveChild(null, selectedProject, projectInfo.Length == 1);

                    if ((projectInfo.Length - 1) == index)
                    {
                        m_treeView.SelectedIndex = (index - 1);
                    }
                    else
                    {
                        m_treeView.SelectedIndex = index;
                    }
                });
            },
                             "Cancel");
        }
        private void OnItemDrop(object sender, ItemDropArgs e)
        {
            Editor.DragDrop.RaiseDrop(e.PointerEventData);

            if (!(e.DropTarget is AssetItem) && (e.DragItems == null || !e.DragItems.Contains(e.DropTarget)))
            {
                ProjectItem parent = (ProjectItem)e.DropTarget;
                foreach (ProjectItem item in e.DragItems)
                {
                    if (item.Parent != parent)
                    {
                        m_listBox.RemoveChild(item.Parent, item, item.Parent.Children.Count == 1);
                        parent.AddChild(item);
                    }
                }
            }
        }
Example #7
0
 public virtual void Remove(ProjectItem[] items)
 {
     foreach (ProjectItem item in items)
     {
         if (m_folders != null && (m_folders.All(f => f.Children == null || !f.Children.Contains(item))))
         {
             m_raiseItemDeletedEvent = false;
             try
             {
                 m_listBox.RemoveChild(item.Parent, item);
             }
             finally
             {
                 m_raiseItemDeletedEvent = true;
             }
         }
     }
 }
        private void OnItemEndDrag(object sender, ItemArgs e)
        {
            Editor.DragDrop.RaiseDrop(e.PointerEventData);

            foreach (ProjectItem item in e.Items)
            {
                if (m_folders.All(f => f.Children == null || !f.Children.Contains(item)))
                {
                    m_raiseItemDeletedEvent = false;
                    try
                    {
                        m_listBox.RemoveChild(item.Parent, item);
                    }
                    finally
                    {
                        m_raiseItemDeletedEvent = true;
                    }
                }
            }
        }
 public void RemoveProjectItemsFromTree(ProjectItem[] projectItems)
 {
     for (int i = 0; i < projectItems.Length; ++i)
     {
         ProjectItem projectItem = projectItems[i];
         if (projectItem.IsFolder)
         {
             m_treeView.RemoveChild(projectItem.Parent, projectItem);
         }
     }
 }
 protected virtual void OnObjectDestroying(ExposeToEditor o)
 {
     try
     {
         m_treeView.ItemsRemoved -= OnItemsRemoved;
         if (IsFilterEmpty)
         {
             ExposeToEditor parent = o.GetParent();
             m_treeView.RemoveChild(parent, o);
         }
         else
         {
             m_treeView.RemoveChild(null, o);
         }
     }
     finally
     {
         m_treeView.ItemsRemoved += OnItemsRemoved;
     }
 }
        private void OnItemEndDrag(object sender, ItemArgs e)
        {
            Editor.DragDrop.RaiseDrop(e.PointerEventData);

            foreach (ProjectItem item in e.Items)
            {
                if (m_folders.All(f => f.Children == null || !f.Children.Contains(item)))
                {
                    m_listBox.RemoveChild(item.Parent, item, item.Parent.Children.Count == 1);
                }
            }
        }
Example #12
0
 public void RemoveProjectItemsFromTree(ProjectItem[] projectItems)
 {
     for (int i = 0; i < projectItems.Length; ++i)
     {
         ProjectItem projectItem = projectItems[i];
         if (projectItem.IsFolder)
         {
             bool isLastChild = projectItem.Parent == null || projectItem.Parent.Children.Where(p => p.IsFolder).Count() == 1;
             m_treeView.RemoveChild(projectItem.Parent, projectItem, isLastChild);
         }
     }
 }
        private void OnItemDrop(object sender, ItemDropArgs e)
        {
            DragDrop.RaiseDrop(e.PointerEventData);

            ProjectItem parent = (ProjectItem)e.DropTarget;

            foreach (ProjectItem item in e.DragItems)
            {
                if (item.Parent != parent)
                {
                    m_listBox.RemoveChild(item.Parent, item, item.Parent.Children.Count == 1);
                    parent.AddChild(item);
                }
            }
        }
Example #14
0
        private void OnDestroyProjectClick()
        {
            ProjectInfo selectedProject = (ProjectInfo)m_treeView.SelectedItem;

            if (selectedProject == null)
            {
                return;
            }

            m_windowManager.Confirmation(
                m_localization.GetString("ID_RTEditor_ProjectsDialog_DeleteProject", "Delete Project"),
                string.Format(m_localization.GetString("ID_RTEditor_ProjectsDialog_AreYouSureDeleteProject", "Delete {0} project?"), selectedProject.Name),
                (sender, args) =>
            {
                ProjectInfo[] projectInfo = m_treeView.Items.OfType <ProjectInfo>().ToArray();
                int index     = Array.IndexOf(projectInfo, selectedProject);
                Editor.IsBusy = true;
                m_project.DeleteProject(selectedProject.Name, (error, deletedProject) =>
                {
                    Editor.IsBusy = false;
                    if (error.HasError)
                    {
                        m_windowManager.MessageBox("Unable to delete project", error.ErrorText);
                        args.Cancel = true;
                        return;
                    }

                    m_treeView.RemoveChild(null, selectedProject);

                    if ((projectInfo.Length - 1) == index)
                    {
                        m_treeView.SelectedIndex = (index - 1);
                    }
                    else
                    {
                        m_treeView.SelectedIndex = index;
                    }
                });
            },
                (sender, args) => { },
                m_localization.GetString("ID_RTEditor_ProjectsDialog_Btn_Delete", "Delete"),
                m_localization.GetString("ID_RTEditor_ProjectsDialog_Btn_Cancel", "Cancel"));
        }
Example #15
0
        private void OnDestroyProjectClick()
        {
            ProjectInfo selectedProject = (ProjectInfo)m_treeView.SelectedItem;

            if (selectedProject == null)
            {
                return;
            }

            m_windowManager.Confirmation("Delete Project", "Delete " + selectedProject.Name + " project?", (sender, args) =>
            {
                ProjectInfo[] projectInfo = m_treeView.Items.OfType <ProjectInfo>().ToArray();
                int index     = Array.IndexOf(projectInfo, selectedProject);
                Editor.IsBusy = true;
                m_project.DeleteProject(selectedProject.Name, (error, deletedProject) =>
                {
                    Editor.IsBusy = false;
                    if (error.HasError)
                    {
                        m_windowManager.MessageBox("Unable to delete project", error.ErrorText);
                        args.Cancel = true;
                        return;
                    }

                    //m_treeView.RemoveChild(null, selectedProject, projectInfo.Length == 1);
                    //m_treeView.Remove(selectedProject);

                    m_treeView.RemoveChild(null, selectedProject);

                    if ((projectInfo.Length - 1) == index)
                    {
                        m_treeView.SelectedIndex = (index - 1);
                    }
                    else
                    {
                        m_treeView.SelectedIndex = index;
                    }
                });
            },
                                         (sender, args) => { },
                                         "Delete",
                                         "Cancel");
        }
        private void OnPropertiesRemoved(object sender, ItemsRemovedArgs e)
        {
            m_propertiesTreeView.ItemsRemoved -= OnPropertiesRemoved;

            List <Tuple <int, RuntimeAnimationProperty> > removedProperties = new List <Tuple <int, RuntimeAnimationProperty> >();

            HashSet <int> removedHs = new HashSet <int>();

            foreach (RuntimeAnimationProperty item in e.Items)
            {
                if (item.Parent != null)
                {
                    int row = IndexOf(item.Parent);
                    if (!removedHs.Contains(row))
                    {
                        removedHs.Add(row);
                        removedProperties.Add(new Tuple <int, RuntimeAnimationProperty>(row, item.Parent));

                        m_propertiesTreeView.RemoveChild(null, item.Parent);

                        for (int i = 0; i < item.Parent.Children.Count; ++i)
                        {
                            row = IndexOf(item.Parent.Children[i]);
                            if (!removedHs.Contains(row))
                            {
                                removedHs.Add(row);
                                removedProperties.Add(new Tuple <int, RuntimeAnimationProperty>(row, item.Parent.Children[i]));
                            }
                        }
                    }
                }

                else
                {
                    int row = IndexOf(item);
                    if (!removedHs.Contains(row))
                    {
                        removedHs.Add(row);
                        removedProperties.Add(new Tuple <int, RuntimeAnimationProperty>(row, item));

                        if (item.Children != null)
                        {
                            for (int i = 0; i < item.Children.Count; ++i)
                            {
                                row = IndexOf(item.Children[i]);
                                if (!removedHs.Contains(row))
                                {
                                    removedHs.Add(row);
                                    removedProperties.Add(new Tuple <int, RuntimeAnimationProperty>(row, item.Children[i]));
                                }
                            }
                        }
                    }
                }
            }

            for (int i = 0; i < removedProperties.Count; ++i)
            {
                RuntimeAnimationProperty property = removedProperties[i].Item2;
                Unsubscribe(property);
                m_props.Remove(property);
                Clip.Remove(property);
            }

            if (m_propertiesTreeView.ItemsCount == 2)
            {
                m_props.Remove(m_emptyTop);
                m_propertiesTreeView.RemoveChild(null, m_emptyTop);
                removedProperties.Insert(0, new Tuple <int, RuntimeAnimationProperty>(0, m_emptyTop));
            }

            IEnumerable <Tuple <int, RuntimeAnimationProperty> > orderedItems = removedProperties.OrderBy(t => t.Item1);

            if (PropertiesRemoved != null)
            {
                PropertiesRemoved(new ItemsArg {
                    Items = orderedItems.Select(t => t.Item2).ToArray(), Rows = orderedItems.Select(t => t.Item1).ToArray()
                });
            }

            m_propertiesTreeView.ItemsRemoved += OnPropertiesRemoved;
        }