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); }
public AnimationGroupElement ConvertToGroup(IAnimationElement singleAnimationElement) { if (singleAnimationElement is AnimationSingleElement) { return(ConvertToGroup(singleAnimationElement as AnimationSingleElement)); } return(null); }
public XmlAnimationElement(IAnimationElement animationElement) { if (animationElement != null) { Repeat = animationElement.Repeat; foreach (IFrameElement frameElement in animationElement.Frames) { Frames.Add(new XmlFrameElement(frameElement)); } } }
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); } }
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; } } } } } }
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); }
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(); }
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);