private void LoadMenus(Menu.MenuItemCollection items, IEnumerable<IPluginMenuItem> pluginMenu)
 {
     foreach (var pluginItem in pluginMenu)
     {
         var invokable = pluginItem as IPluginMenuInvokableItem;
         if (invokable != null)
         {
             var invokableHash = Guid.NewGuid().ToString();
             _form.Sc.Register(typeof(IInvokable), invokable.Invokable, invokableHash);
             items.Add(new MenuItem(invokable.Name, (sender, ev) => _form.Sc.GetInstance<IInvokable>(invokableHash).DoWork()));
             continue;
         }
         var submenu = pluginItem as IPluginSubMenuItem;
         if (submenu != null)
         {
             var item = new MenuItem(submenu.Name);
             items.Add(item);
             LoadMenus(item.MenuItems, submenu.Submenu);
             continue;
         }
         items.Add(new MenuItem(pluginItem.Name) { Enabled = false });
     }
 }
Esempio n. 2
0
 private void AddAttributesMenu(Menu.MenuItemCollection mnuColl, EventHandler e)
 {
     IDictionaryEnumerator enumerator = this._attributes.GetEnumerator();
     while (enumerator.MoveNext())
     {
         string str = "";
         MenuItem item = new MenuItem(enumerator.Key.ToString() + str, e);
         mnuColl.Add(item);
     }
 }
Esempio n. 3
0
		private MenuItem AddMenu(Menu.MenuItemCollection Parent,string Caption,EventHandler eh)
		{
			MenuItem NewItem=null;
			int i=-1;
			if (!allowRepeat)
			{
				i=Parent.Count;
				while (i-->0)
				{
					if (Parent[i].Text==Caption)
					{
						NewItem=Parent[i];
						break;
					}
				}
			}

			if (i==-1)//is allowRepeat or !allowRepeat but is new item 
			{
				NewItem=new MenuItem(Caption,eh);
				//	NewItem.Click+=eh;
				Parent.Add(NewItem);
			}
			MergeMenu(Parent.IndexOf(NewItem));
			return NewItem;
		}
Esempio n. 4
0
        /// <summary>
        /// Recursive add method to handle nesting of menu items.
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="mi"></param>
        private static void AddMenuItem(Menu.MenuItemCollection parent, SymbologyMenuItem mi)
        {
            MenuItem m;
            if (mi.Icon != null)
            {
                m = new IconMenuItem(mi.Name, mi.Icon, mi.ClickHandler);
            }
            else if (mi.Image != null)
            {
                m = new IconMenuItem(mi.Name, mi.Image, mi.ClickHandler);
            }
            else
            {
                m = new IconMenuItem(mi.Name, mi.ClickHandler);
            }

            parent.Add(m);
            foreach (SymbologyMenuItem child in mi.MenuItems)
            {
                AddMenuItem(m.MenuItems, child);
            }
        }
Esempio n. 5
0
 /// <summary>
 /// メニューアイテムの階層を再帰的にコピーします
 /// </summary>
 /// <param name="dest"></param>
 /// <param name="src"></param>
 private void cloneMenuItemRecursive( Menu.MenuItemCollection dest, Menu.MenuItemCollection src ) {
     if ( src.Count > 0 ) {
         foreach ( MenuItem item in src ) {
             MenuItem clone = item.CloneMenu();
             cloneMenuItemRecursive( clone.MenuItems, item.MenuItems );
             dest.Add( clone );
         }
     }
 }
Esempio n. 6
0
        // Add dynamic menu item in a submenu. Parameter menuItems
        // contains existing menu items in the submenu.
        private void AddMenuItemInSubmenu(MenuItem menuItem,
           Menu.MenuItemCollection menuItems)
        {
            switch (_itemInsertMode)
            {
                case ItemInsertMode.Append:
                    if (_itemCount == _maxItems)
                    {
                        menuItems.RemoveAt(0);
                        _itemCount--;
                    }
                    menuItems.Add(menuItem);
                    break;

                case ItemInsertMode.Prepend:
                    if (_itemCount == _maxItems)
                    {
                        menuItems.RemoveAt(_maxItems - 1);
                        _itemCount--;
                    }
                    menuItems.Add(0, menuItem);
                    break;
                default:
                    break;
            }
            _itemCount++;
            _anchor.Enabled = true;
        }
Esempio n. 7
0
        // Add inline dynamic menu item. Parameter menuItems contains
        // existing inline dynamic menu items.
        private void AddMenuItemInline(MenuItem menuItem,
           Menu.MenuItemCollection menuItems)
        {
            int anchorIndex = _anchor.Index;
            switch (_itemInsertMode)
            {
                case ItemInsertMode.Append:
                    if (_itemCount == _maxItems)
                    {
                        menuItems.RemoveAt(anchorIndex + 1);
                        _itemCount--;
                    }
                    menuItems.Add(anchorIndex + _itemCount + 1, menuItem);
                    break;

                case ItemInsertMode.Prepend:
                    if (_itemCount == _maxItems)
                    {
                        menuItems.RemoveAt(anchorIndex + _maxItems);
                        _itemCount--;
                    }
                    menuItems.Add(anchorIndex + 1, menuItem);
                    break;
                default:
                    break;
            }
            _itemCount++;
            _separator.Visible = true;
        }
Esempio n. 8
0
        public void Recurse(String aRoot, Menu.MenuItemCollection aParentItems)
        {
            IEnumerator items;
              mDataStore.GetElements(aRoot, out items);
              items.Reset();

              MenuItem item;

              while (items.MoveNext())
              {
            // |id| is the item's unique identifier within the DataStore.
            // The handling code can use this to probe for more information
            // about the selected item.
            CommandTarget current = items.Current as CommandTarget;
            if (current != null)
            {
              String id = current.Data as String;

              int idKey = id.GetHashCode();

              if (!mMenus.ContainsKey(idKey))
              {
            item = new ManticoreMenuItem(current.Label,
                                         new EventHandler(OnCommandInternal),
                                         "bookmarks-item", id);
            if (aRoot != Root)
              aParentItems.Add(item);
            else
              aParentItems.Add(mInsertionPoint++, item);
            mMenus.Add(id.GetHashCode(), item);

            if (current.IsContainer)
              Recurse(current.Data as String, item.MenuItems);
              }
            }
              }

              ResetInsertionPoint();
        }