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));
                }
            }
        }
Exemplo n.º 5
0
        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;
                    }
                }
            }
        }
Exemplo n.º 13
0
 public void QueueForUpdate(string applicationName, DrillDownMenuItem favoritesMenu)
 {
     _favoritesUpdateCache[applicationName] = favoritesMenu as ShellDrillDownMenuItem;
 }