Exemplo n.º 1
0
        private TreeViewItem FindTreeViewItemUnderTreeViewItemByModelName(TreeViewItem tvi, string modelName)
        {
            TreeViewItem treeViewItemRet = null;

            if (tvi != null)
            {
                IAnimationElement model = tvi.DataContext as IAnimationElement;
                if (model.Name == modelName)
                {
                    return(tvi);
                }
                else if (tvi.Items != null)
                {
                    for (int i = 0; i < tvi.Items.Count; i++)
                    {
                        TreeViewItem item         = tvi.ItemContainerGenerator.ContainerFromItem(tvi.Items[i]) as TreeViewItem;
                        var          treeViewItem = FindTreeViewItemUnderTreeViewItemByModelName(item, modelName);
                        if (treeViewItem != null)
                        {
                            treeViewItemRet = treeViewItem;
                            break;
                        }
                    }
                }
            }
            return(treeViewItemRet);
        }
Exemplo n.º 2
0
 public AnimationGroupElement ConvertToGroup(IAnimationElement singleAnimationElement)
 {
     if (singleAnimationElement is AnimationSingleElement)
     {
         return(ConvertToGroup(singleAnimationElement as AnimationSingleElement));
     }
     return(null);
 }
Exemplo n.º 3
0
        public XmlAnimationElement(IAnimationElement animationElement)
        {
            if (animationElement != null) {
                Repeat = animationElement.Repeat;

                foreach (IFrameElement frameElement in animationElement.Frames) {
                    Frames.Add(new XmlFrameElement(frameElement));
                }
            }
        }
Exemplo n.º 4
0
        private void viewModel_ExpansionUpdateNeeded(object sender, CustomEventArgs <ExpansionUpdateEvent> e)
        {
            SequenceElement      sequenceElement = sender as SequenceElement;
            DependencyObject     dObject         = null;
            ExpansionUpdateEvent updateEvent     = e.Value;

            if (updateEvent == ExpansionUpdateEvent.Filter)
            {
                ExpandMatchedNode(sender); // Keeping way open for future filtering feature
            }
            else
            {
                if (this.viewModel.SelectedAnimationElementRoot != null && this.viewModel.SelectedAnimationParent != null)
                {
                    if (this.viewModel.SelectedAnimationElement is SequenceElement) // Sequence within a sequence
                    {
                        TreeViewItem item = treeViewAnimations.ItemContainerGenerator.ContainerFromItem(this.viewModel.SelectedAnimationElementRoot) as TreeViewItem;
                        dObject = FindTreeViewItemUnderTreeViewItemByModelName(item, this.viewModel.SelectedAnimationElement.Name);
                    }
                    else if (this.viewModel.SelectedAnimationElementRoot.Name == this.viewModel.SelectedAnimationParent.Name) // They are the same element
                    {
                        dObject = treeViewAnimations.GetItemFromSelectedObject(this.viewModel.SelectedAnimationParent);
                    }
                    else
                    {
                        TreeViewItem item = treeViewAnimations.ItemContainerGenerator.ContainerFromItem(this.viewModel.SelectedAnimationElementRoot) as TreeViewItem;
                        dObject = FindTreeViewItemUnderTreeViewItemByModelName(item, this.viewModel.SelectedAnimationParent.Name);
                    }
                }
                else if (this.viewModel.SelectedAnimationElementRoot == null && this.viewModel.SelectedAnimationElement is SequenceElement)
                {
                    dObject = treeViewAnimations.GetItemFromSelectedObject(this.viewModel.SelectedAnimationElement);
                }
                TreeViewItem tvi = dObject as TreeViewItem;
                if (tvi != null)
                {
                    IAnimationElement model = tvi.DataContext as IAnimationElement;
                    if (tvi.Items != null && tvi.Items.Count > 0)
                    {
                        if (updateEvent != ExpansionUpdateEvent.Delete)
                        {
                            tvi.IsExpanded = true;
                        }
                        else
                        {
                            UpdateExpansions(tvi);
                        }
                    }
                    else
                    {
                        tvi.IsExpanded = false;
                    }
                }
            }
        }
        public AnimationFrame(IAnimationElement frame)
        {
            this.Frame = frame;

            this.SpriteGroup = this.Frame.SpriteGroup;
            this.SpriteImage = this.Frame.SpriteImage;
            this.OffsetX     = this.Frame.OffsetX;
            this.OffsetY     = this.Frame.OffsetY;
            this.DisplayTime = this.Frame.DisplayTime;
            this.Flip        = this.Frame.Flip;
            this.Color       = this.Frame.Color;
        }
        public void AddNewElement()
        {
            AnimationSingleElement element = new AnimationSingleElement();

            element.SetStartTime(ParentTLE.PanelHub.TimeIdentyficator.SelectedTime);

            var panel = ParentTLE.PanelHub.SelectedPanel;

            if (panel == null)
            {
                throw new Exception("SelectedPanel is null");
            }

            var selectedCell = panel.SelectedPanelCell;

            if (selectedCell == null)
            {
                throw new Exception("SelectedCell is null");
            }

            ITLEPanelCellElement selectedPanelElement = ParentTLE.PanelHub.SelectedPanel.SelectedPanelCell.ReferenceElement;

            IAnimationElement animElem = selectedPanelElement as IAnimationElement;

            if (animElem == null)
            {
                throw new Exception("AddNewElement: Reference element is not an AnimationElement");
            }

            var parent = ParentTLE.TimeLine.SearchParentAnimationElement(animElem);

            if (parent != null)
            {
                var group = parent as AnimationGroupElement;
                if (group == null)
                {
                    throw new Exception("AddNewElement: Parent is not an GroupElement");
                }
                group.Elements.Add(element);
                ParentTLE.TimeLine.Refresh();
                ParentTLE.PanelHub.InitializePanel(ParentTLE.PanelHub.SelectedPanel.PanelName, group.Elements);
            }
            else
            {
                ParentTLE.TimeLine.AnimationElements.Add(element);
                ParentTLE.TimeLine.Refresh();
                ParentTLE.PanelHub.InitializePanel(ParentTLE.PanelHub.SelectedPanel.PanelName, ParentTLE.TimeLine.AnimationElements);
            }
        }
Exemplo n.º 7
0
        private void viewModel_AnimationElementDraggedFromGrid(object sender, EventArgs e)
        {
            IAnimationElement modelToSelect = sender as IAnimationElement;
            TreeViewItem      tvi           = itemNodeParent; // Got the selected treeviewitem

            if (tvi != null)
            {
                IAnimationElement model = tvi.DataContext as IAnimationElement;
                if (tvi.Items != null)
                {
                    tvi.IsExpanded = true;
                    tvi.UpdateLayout();
                    for (int i = 0; i < tvi.Items.Count; i++)
                    {
                        TreeViewItem item = tvi.ItemContainerGenerator.ContainerFromItem(tvi.Items[i]) as TreeViewItem;
                        if (item != null)
                        {
                            model = item.DataContext as IAnimationElement;
                            if (model.Name == modelToSelect.Name)
                            {
                                item.IsSelected = true;
                                item.UpdateLayout();
                                this.viewModel.SelectedAnimationElement = model as IAnimationElement;
                                this.viewModel.SelectedAnimationParent  = tvi.DataContext as IAnimationElement;
                                TreeViewItem rootItem = GetRootTreeViewItemParent(item);
                                if (rootItem != null)
                                {
                                    this.viewModel.SelectedAnimationElementRoot = rootItem.DataContext as IAnimationElement;
                                    if (this.viewModel.SelectedAnimationElementRoot is SequenceElement)
                                    {
                                        this.viewModel.IsSequenceAbilitySelected = true;
                                    }
                                    else
                                    {
                                        this.viewModel.IsSequenceAbilitySelected = false;
                                    }
                                }
                                else
                                {
                                    this.viewModel.SelectedAnimationElementRoot = null;
                                }
                                break;
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 8
0
        public IAnimationElement SearchParentAnimationElement(IAnimationElement singleAnimationElement)
        {
            foreach (var AnimationElement in AnimationElements)
            {
                if (AnimationElement is AnimationGroupElement)
                {
                    var group = AnimationElement as AnimationGroupElement;

                    AnimationGroupElement result = group.SearchParentAnimationElement(singleAnimationElement);
                    if (result != null)
                    {
                        return(result);
                    }
                }
            }
            return(null);
        }
Exemplo n.º 9
0
        public AnimationGroupElement SearchParentAnimationElement(IAnimationElement singleAnimationElement)
        {
            foreach (var element in Elements)
            {
                if (Elements.Contains(singleAnimationElement))
                {
                    return(this);
                }

                if (element is AnimationGroupElement)
                {
                    var group = element as AnimationGroupElement;

                    AnimationGroupElement result = group.SearchParentAnimationElement(singleAnimationElement);
                    if (result != null)
                    {
                        return(result);
                    }
                }
            }
            return(null);
        }
        public static object GetCurrentSelectedAnimationInAnimationCollection(Object tv, out IAnimationElement animationElement)
        {
            IAnimationElement selectedAnimationElement = null;

            animationElement = null;
            TreeView treeView = tv as TreeView;

            if (treeView != null && treeView.SelectedItem != null)
            {
                DependencyObject dObject = treeView.GetItemFromSelectedObject(treeView.SelectedItem);
                TreeViewItem     tvi     = dObject as TreeViewItem; // got the selected treeviewitem
                if (tvi != null)
                {
                    selectedAnimationElement = tvi.DataContext as IAnimationElement;
                }
                dObject = VisualTreeHelper.GetParent(tvi); // got the immediate parent
                tvi     = dObject as TreeViewItem;         // now get first treeview item parent
                while (tvi == null)
                {
                    dObject = VisualTreeHelper.GetParent(dObject);
                    tvi     = dObject as TreeViewItem;
                    if (tvi == null)
                    {
                        var tView = dObject as TreeView;
                        if (tView != null)
                        {
                            break;
                        }
                    }
                    else
                    {
                        animationElement = tvi.DataContext as IAnimationElement;
                    }
                }
            }

            return(selectedAnimationElement);
        }
        public void AddNewChildElement()
        {
            AnimationSingleElement element = new AnimationSingleElement();

            element.SetStartTime(ParentTLE.PanelHub.TimeIdentyficator.SelectedTime);

            var panel = ParentTLE.PanelHub.SelectedPanel;

            if (panel == null)
            {
                throw new Exception("SelectedPanel is null");
            }

            var selectedCell = panel.SelectedPanelCell;

            if (selectedCell == null)
            {
                throw new Exception("SelectedCell is null");
            }

            ITLEPanelCellElement panelElement = ParentTLE.PanelHub.SelectedPanel.SelectedPanelCell.ReferenceElement;

            if (panelElement as AnimationGroupElement != null)
            {
                AnimationGroupElement group = panelElement as AnimationGroupElement;
                group.Elements.Add(element);
                ParentTLE.PanelHub.InitializeNewAnimationPanel(group.Elements.ToList());
            }
            else if (panelElement as AnimationSingleElement != null)
            {
                AnimationSingleElement singleAnimationElement = panelElement as AnimationSingleElement;
                IAnimationElement      parentParentElement    = ParentTLE.TimeLine.SearchParentAnimationElement(singleAnimationElement);

                if (parentParentElement is AnimationGroupElement)
                {
                    var par = parentParentElement as AnimationGroupElement;
                    if (par != null)
                    {
                        var convertedGroup = par.ConvertToGroup(singleAnimationElement);
                        convertedGroup.Elements.Add(element);

                        ParentTLE.PanelHub.InitializeNewAnimationPanel(convertedGroup.Elements.ToList());
                    }
                }
                else if (parentParentElement == null)// no parent, timeline
                {
                    var group = ParentTLE.TimeLine.ConvertToGroup(singleAnimationElement);
                    group.Elements.Add(element);

                    ParentTLE.PanelHub.InitializeNewAnimationPanel(group.Elements.ToList());
                }
            }
            else //null no group, directly attached to TimeLine. This shouldn't be used, although just in case.
            {
                ParentTLE.TimeLine.AnimationElements.Add(element);
                ParentTLE.PanelHub.InitializeNewAnimationPanel(ParentTLE.TimeLine.GetAnimationSingleElementFirstLayer());
                //throw new Exception("Nesu: TimeLineEditor - Parent animation element is null");
            }

            ParentTLE.TimeLine.Refresh();
        }
Exemplo n.º 12
0
        private void viewModel_AnimationAdded(object sender, CustomEventArgs <bool> e)
        {
            IAnimationElement modelToSelect = sender as IAnimationElement;

            if (sender == null) // Need to unselect
            {
                DependencyObject dObject = treeViewAnimations.GetItemFromSelectedObject(treeViewAnimations.SelectedItem);
                TreeViewItem     tvi     = dObject as TreeViewItem; // Got the selected treeviewitem
                if (tvi != null)
                {
                    tvi.IsSelected = false;
                    this.viewModel.SelectedAnimationElementRoot = null;
                }
            }
            else
            {
                bool    itemFound = false;
                TextBox txtBox    = null;
                treeViewAnimations.UpdateLayout();
                if (sender is IAnimationElement)
                {
                    if (this.viewModel.SelectedAnimationElement == null || !(this.viewModel.SelectedAnimationElement is SequenceElement || this.viewModel.SelectedAnimationParent is SequenceElement)) // A new animation has been added to the collection
                    {
                        for (int i = 0; i < treeViewAnimations.Items.Count; i++)
                        {
                            TreeViewItem item = treeViewAnimations.ItemContainerGenerator.ContainerFromItem(treeViewAnimations.Items[i]) as TreeViewItem;
                            if (item != null)
                            {
                                var model = item.DataContext as IAnimationElement;
                                if (model.Name == modelToSelect.Name)
                                {
                                    item.IsSelected = true;
                                    itemFound       = true;
                                    txtBox          = FindTextBoxInTemplate(item);
                                    this.viewModel.SelectedAnimationElement     = model as IAnimationElement;
                                    this.viewModel.SelectedAnimationParent      = null;
                                    this.viewModel.SelectedAnimationElementRoot = null;
                                    break;
                                }
                            }
                        }
                    }
                }
                if (!itemFound && (this.viewModel.SelectedAnimationElement is SequenceElement || this.viewModel.SelectedAnimationParent is SequenceElement)) // Added somewhere in nested animation
                {
                    DependencyObject dObject = null;
                    if (this.viewModel.SelectedAnimationElementRoot != null && this.viewModel.SelectedAnimationParent != null)
                    {
                        if (this.viewModel.SelectedAnimationElement is SequenceElement) // Sequence within a sequence
                        {
                            TreeViewItem item = treeViewAnimations.ItemContainerGenerator.ContainerFromItem(this.viewModel.SelectedAnimationElementRoot) as TreeViewItem;
                            dObject = FindTreeViewItemUnderTreeViewItemByModelName(item, this.viewModel.SelectedAnimationElement.Name);
                        }
                        else if (this.viewModel.SelectedAnimationElementRoot.Name == this.viewModel.SelectedAnimationParent.Name) // They are the same element
                        {
                            dObject = treeViewAnimations.GetItemFromSelectedObject(this.viewModel.SelectedAnimationParent);
                        }
                        else
                        {
                            TreeViewItem item = treeViewAnimations.ItemContainerGenerator.ContainerFromItem(this.viewModel.SelectedAnimationElementRoot) as TreeViewItem;
                            dObject = FindTreeViewItemUnderTreeViewItemByModelName(item, this.viewModel.SelectedAnimationParent.Name);
                        }
                    }
                    else if (this.viewModel.SelectedAnimationElementRoot == null && this.viewModel.SelectedAnimationElement is SequenceElement)
                    {
                        dObject = treeViewAnimations.GetItemFromSelectedObject(this.viewModel.SelectedAnimationElement);
                    }
                    TreeViewItem tvi = dObject as TreeViewItem; // Got the selected treeviewitem
                    if (tvi != null)
                    {
                        IAnimationElement model = tvi.DataContext as IAnimationElement;
                        if (tvi.Items != null)
                        {
                            tvi.IsExpanded = true;
                            tvi.UpdateLayout();
                            for (int i = 0; i < tvi.Items.Count; i++)
                            {
                                TreeViewItem item = tvi.ItemContainerGenerator.ContainerFromItem(tvi.Items[i]) as TreeViewItem;
                                if (item != null)
                                {
                                    model = item.DataContext as IAnimationElement;
                                    if (model.Name == modelToSelect.Name)
                                    {
                                        item.IsSelected = true;
                                        itemFound       = true;
                                        item.UpdateLayout();
                                        txtBox = FindTextBoxInTemplate(item);
                                        this.viewModel.SelectedAnimationElement = model as IAnimationElement;
                                        this.viewModel.SelectedAnimationParent  = tvi.DataContext as IAnimationElement;
                                        if (this.viewModel.SelectedAnimationElementRoot == null)
                                        {
                                            this.viewModel.SelectedAnimationElementRoot = tvi.DataContext as IAnimationElement;
                                        }
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                if (txtBox != null && this.viewModel.SelectedAnimationElement is PauseElement)
                {
                    if (!(e != null && e.Value == false)) // to avoid renaming in case of cut-paste or drag-drop
                    {
                        this.viewModel.EnterAnimationElementEditModeCommand.Execute(txtBox);
                    }
                }
            }
            //this.UpdateDataGrid(modelToSelect);
        }
 public void AddAnimationElement(IAnimationElement element) =>
 ((List <IAnimationElement>) this.AnimationElements).Add(element);