private void DeleteFavorite(DrillDownMenuItem drillDownMenuItem) { if (favoritesMenu.TopMenuItem != null) { RemoveMenuItem(favoritesMenu.TopMenuItem, drillDownMenuItem); } }
private void AddFolder(DrillDownMenuItem drillDownMenuItem) { if (favoritesMenu.TopMenuItem != null) { DrillDownMenuItem newFolder = new DrillDownMenuItem() { IsFolder = true, Caption = StringResources.NewFavoritesFolder_Text, Parent = drillDownMenuItem.Parent }; DrillDownMenuItem backButton = new DrillDownMenuItem() { IsBackItem = true, Caption = newFolder.Parent.Caption, Parent = newFolder }; newFolder.Children.Add(backButton); int idx = drillDownMenuItem.Parent.Children.IndexOf(drillDownMenuItem); if (drillDownMenuItem.IsBackItem) { idx++; } drillDownMenuItem.Parent.Children.Insert(idx, newFolder); } }
private void PasteFavorite(DrillDownMenuItem pasteTargetItem, DrillDownMenuItem pasteItem) { if (favoritesMenu.TopMenuItem != null) { DrillDownMenuItem cloneEntry = pasteItem.Clone() as DrillDownMenuItem; int idx = 0; if (pasteTargetItem.IsFolder) { cloneEntry.Parent = pasteTargetItem; idx = pasteTargetItem.Children.Count; } else if (pasteTargetItem.IsBackItem) { cloneEntry.Parent = pasteTargetItem.Parent.Parent; idx = pasteTargetItem.Parent.Parent.Children.Count; } else { cloneEntry.Parent = pasteTargetItem.Parent ?? favoritesMenu.TopMenuItem; idx = cloneEntry.Parent.Children.IndexOf(pasteTargetItem); if (pasteTargetItem.IsBackItem) { idx++; } } cloneEntry.Parent.Children.Insert(idx, cloneEntry); } }
private void ContextCommandCanExecute(object sender, CanExecuteRoutedEventArgs e) { DrillDownMenuItem menuItem = GetMenuItem(e.OriginalSource); if (menuItem != null) { if (e.Command == ApplicationBarCommands.AddFolder) { e.CanExecute = true; } else if (e.Command == ApplicationBarCommands.Paste) { e.CanExecute = (_rememberItem != null); } else if ((e.Command == ApplicationBarCommands.Rename) || (e.Command == ApplicationBarCommands.Copy) || (e.Command == ApplicationBarCommands.Cut) || (e.Command == ApplicationBarCommands.Delete)) { e.CanExecute = (!menuItem.IsBackItem); } else { e.CanExecute = ((!menuItem.IsFolder) && (!menuItem.IsBackItem)); } } }
public override object Clone() { ShellDrillDownMenuItem clone = new ShellDrillDownMenuItem { Caption = this.Caption, Id = this.Id, IsBackItem = this.IsBackItem, IsEnabled = this.IsEnabled, IsFolder = this.IsFolder, IsReadOnly = this.IsReadOnly, AssemblyFile = this.AssemblyFile, IsAuthorized = this.IsAuthorized, Operation = this.Operation, Parameters = this.Parameters, EventTopic = this.EventTopic, }; BindingOperations.ClearAllBindings(clone); ObservableCollection <DrillDownMenuItem> children = new ObservableCollection <DrillDownMenuItem>(); foreach (DrillDownMenuItem child in this.Children) { DrillDownMenuItem childClone = child.Clone() as DrillDownMenuItem; childClone.Parent = clone; children.Add(childClone); } clone.Children = children; return(clone); }
public void AddToFavorites(IShellModule module, DrillDownMenuItem drillDownMenuItem) { var pane = (from NavigationPane p in navigationBar.Items where p.Tag == module select p).LastOrDefault(); ApplicationBar bar = pane.Content as ApplicationBar; bar.AddToFavorites(drillDownMenuItem, null); }
private static XmlElement AddChild(XmlDocument document, DrillDownMenuItem menuItem) { string name = menuItem.IsFolder ? "folder" : "item"; XmlElement node = document.CreateElement(name); XmlAttribute a = document.CreateAttribute("caption"); a.Value = menuItem.Caption; node.Attributes.Append(a); if (!string.IsNullOrEmpty(menuItem.Id)) { a = document.CreateAttribute("id"); a.Value = menuItem.Id; node.Attributes.Append(a); } if ((!menuItem.IsFolder) && (menuItem is ShellDrillDownMenuItem)) { ShellDrillDownMenuItem shellMenuItem = (menuItem as ShellDrillDownMenuItem); a = document.CreateAttribute("operation"); a.Value = shellMenuItem.Operation; node.Attributes.Append(a); a = document.CreateAttribute("assemblyFile"); a.Value = shellMenuItem.AssemblyFile; node.Attributes.Append(a); a = document.CreateAttribute("topicIdentity"); a.Value = shellMenuItem.EventTopic; node.Attributes.Append(a); a = document.CreateAttribute("parameters"); a.Value = shellMenuItem.Parameters; node.Attributes.Append(a); } if (menuItem.IsFolder) { foreach (DrillDownMenuItem child in menuItem.Children) { if (!child.IsBackItem) { node.AppendChild(AddChild(document, child)); } } } return(node); }
private void favoritesMenu_Drop(object sender, DragEventArgs e) { DrillDownMenuItem dropTarget = favoritesMenu.GetDropTarget(e); DrillDownMenuItem dropObject = (DrillDownMenuItem)e.Data.GetData(typeof(DrillDownMenuItem)); if (dropTarget != null && dropObject != null) { if (dropTarget != dropObject) { PasteFavorite(dropTarget, dropObject); DeleteFavorite(dropObject); } } }
private void ContextCommandExecuted(object sender, ExecutedRoutedEventArgs e) { DrillDownMenuItem menuItem = GetMenuItem(e.OriginalSource); if (menuItem != null) { if (e.Command == ApplicationBarCommands.AddToFavorites) { AddToFavorites(menuItem, (DrillDownMenuItem)e.Parameter); } else if (e.Command == ApplicationBarCommands.AddFolder) { AddFolder(menuItem); } else if (e.Command == ApplicationBarCommands.Delete) { DeleteFavorite(menuItem); } else if (e.Command == ApplicationBarCommands.Paste) { PasteFavorite(menuItem, _rememberItem); _rememberItem = null; } else if (e.Command == ApplicationBarCommands.Rename) { menuItem.IsReadOnly = false; } else if (e.Command == ApplicationBarCommands.Copy) { _rememberItem = menuItem; } else if (e.Command == ApplicationBarCommands.Cut) { _rememberItem = menuItem; DeleteFavorite(menuItem); } else if (e.Command == ApplicationBarCommands.OpenInNewWindow) { StartMenuItemExecuted(this, new StartMenuItemExecutedEventArgs(menuItem as ShellDrillDownMenuItem, null, StartOption.NewWindow)); } else if (e.Command == ApplicationBarCommands.AddToDashboard) { StartMenuItemExecuted(this, new StartMenuItemExecutedEventArgs(menuItem as ShellDrillDownMenuItem, null, StartOption.Dashboard)); } } }
private bool RemoveMenuItem(DrillDownMenuItem parent, DrillDownMenuItem itemToDelete) { if (parent.Children.Contains(itemToDelete)) { itemToDelete.Parent = null; parent.Children.Remove(itemToDelete); return(true); } else { foreach (DrillDownMenuItem childItem in parent.Children) { if (RemoveMenuItem(childItem, itemToDelete)) { return(true); } } } return(false); }
public void AddToFavorites(DrillDownMenuItem drillDownMenuItem, DrillDownMenuItem targetFolder) { if (favoritesMenu.TopMenuItem != null) { DrillDownMenuItem cloneEntry = drillDownMenuItem.Clone() as DrillDownMenuItem; DrillDownMenuItem currentFolder = favoritesMenu.CurrentFolder; if (targetFolder != null) { currentFolder = targetFolder; } if (currentFolder.IsBackItem) { currentFolder = currentFolder.Parent ?? favoritesMenu.TopMenuItem; } cloneEntry.Parent = currentFolder; currentFolder.Children.Add(cloneEntry); } }
private void Menu_MouseMove(object sender, MouseEventArgs e) { base.OnMouseMove(e); if (e.LeftButton == MouseButtonState.Pressed) { if (e.MouseDevice.Captured != null) { if (e.MouseDevice.Captured.GetType().IsAssignableFrom(typeof(ListBox)) && ((ListBox)e.MouseDevice.Captured).SelectedItem != null && typeof(DrillDownMenuItem).IsAssignableFrom(((ListBox)e.MouseDevice.Captured).SelectedItem.GetType()) && !((DrillDownMenuItem)((ListBox)e.MouseDevice.Captured).SelectedItem).IsBackItem) { // Package the data. DrillDownMenuItem selected = (DrillDownMenuItem)((ListBox)e.MouseDevice.Captured).SelectedItem; DataObject data = new DataObject(); data.SetData(typeof(DrillDownMenuItem), selected); DragDropEffects dEffect; if (sender == favoritesMenu) { dEffect = DragDropEffects.Move; } else { dEffect = DragDropEffects.Copy; } favoritesMenu.AllowDrop = true; // Inititate the drag-and-drop operation. DragDrop.DoDragDrop(this, data, dEffect); favoritesMenu.AllowDrop = false; } } } }
public void QueueForUpdate(string applicationName, DrillDownMenuItem favoritesMenu) { _favoritesUpdateCache[applicationName] = favoritesMenu as ShellDrillDownMenuItem; }