Exemplo n.º 1
0
        /// <summary>
        /// Creates a new instance of ToolStrip (Wrapped)
        /// </summary>
        /// <param name="toolbarList">Toolbar List of the Main Toolbar</param>
        /// <param name="toolbarId">Id of the Toolbar</param>
        /// <param name="style">Toolbar type</param>
        /// <returns>A new instance of the Toolbar (wrapped)</returns>
        public static ToolStripWrapper Add(this ToolbarsList toolbarList, string toolbarId, ToolbarHelper.ToolbarStyle style)
        {
            ToolStripWrapper toolbar = new ToolStripWrapper(toolbarId, toolbarList.ToolbarParent);

            toolbar.Dock         = DockStyle.Top;
            toolbar.CaptionStyle = style;
            toolbarList.Add(toolbar);
            (toolbarList.ToolbarParent as ToolStripWrapper).Parent.Controls.Add(toolbar); //The Toolbar is inserted in the Controls of the Form

            return(toolbar);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Shows or simulates a Context/Popup Menu according to the tool ID or ToolStripItem instance
        /// </summary>
        /// <param name="toolbar">Toolbar Instance</param>
        /// <param name="tool">Tool to get, can be instance of string</param>
        /// <param name="flags"></param>
        /// <param name="x">Position X</param>
        /// <param name="y">Position Y</param>
        public static void PopupMenu(this ToolStripWrapper toolbar, object tool, object flags = null, int x = 0, int y = 0)
        {
            string toolName = string.Empty;

            if (tool is String)
            {
                var toolFromToolbar = toolbar.Tools[Convert.ToString(tool)];
                if (toolFromToolbar != null)
                {
                    toolName = toolFromToolbar.Name;
                }
            }
            else
            if (tool is ToolStripItem)
            {
                toolName = (tool as ToolStripItem).Name;
            }

            var toolStripDropDown = toolbar.PopupMenus[toolName];

            toolStripDropDown.Show(x == 0 && y == 0 ? Cursor.Position : new Point(x, y));
        }
Exemplo n.º 3
0
        public static object GetRealOldValue(this ToolStripItem item, string property, object value)
        {
            object valueToReturn = value;

            if (property.Equals("Visible") || property.Equals("Enabled"))
            {
                ToolStripWrapper toolbarRoot = (item as ToolStripItemWrapper).ToolbarParent as ToolStripWrapper;
                if (toolbarRoot == null)
                {
                    return(valueToReturn);
                }

                ToolStripItemWrapper itemInTools = toolbarRoot.Tools[item.Name];
                if (itemInTools == null)
                {
                    return(valueToReturn);
                }

                foreach (ToolStripWrapper toolbar in toolbarRoot.Toolbars)
                {
                    if (toolbar.Items.ContainsKey(item.Name))
                    {
                        if (property.Equals("Visible"))
                        {
                            valueToReturn = toolbar.Items[item.Name].Visible;
                            break;
                        }

                        if (property.Equals("Enabled"))
                        {
                            valueToReturn = toolbar.Items[item.Name].Enabled;
                            break;
                        }
                    }
                }
            }
            return(valueToReturn);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Spread the change of the property in all instances ( tools of toolbar, tools of tools, tools of menu, popup menu etc)
        /// </summary>
        /// <param name="item">ToolStripItem instance</param>
        /// <param name="property">Name of the property to update</param>
        /// <param name="value">Value to update</param>
        /// <param name="excludeChangeInToolList">True to avoid updating in the instance(first parameter) because was updated previously</param>
        public static void SpreadChange(this ToolStripItem item, string property, object value, bool excludeChangeInToolList = false)
        {
            PropertyInfo prop = null;

            //Get the toolbar of the ToolStripItem
            ToolStripWrapper toolbarRoot = (item as ToolStripItemWrapper).ToolbarParent as ToolStripWrapper;

            if (toolbarRoot == null)
            {
                return;                      //No change needed
            }
            //Get the tool in the tools of toolbar
            ToolStripItemWrapper itemInTools = toolbarRoot.Tools[item.Name];

            if (itemInTools == null)
            {
                return;                      //No change needed
            }
            //The property in the tools list of the toolbar is updated
            prop = itemInTools.GetType().GetProperty(property, BindingFlags.Public | BindingFlags.Instance);
            if (null != prop && prop.CanWrite && !excludeChangeInToolList)
            {
                prop.SetValue(itemInTools, value, null);
            }

            //Checks if the popupmenus collection was already reviewed. The popup menus collection is stored in the toolbar root ( the one defined in the designer ). Must be checked 1 time.
            bool popupMenuAlreadyChecked = false;

            //Then we need to get all instances of the ToolStripItem in the toolbars
            foreach (IToolbar toolbar in toolbarRoot.Toolbars)
            {
                //Get the tool in the toolbar items
                var itemInToolbar = (toolbar as ToolStrip).Items[item.Name];
                if (itemInToolbar != null)
                {
                    //The property is updated in the tool
                    prop = itemInToolbar.GetType().GetProperty(property, BindingFlags.Public | BindingFlags.Instance);
                    if (null != prop && prop.CanWrite)
                    {
                        prop.SetValue(itemInToolbar, value, null);
                    }

                    if (toolbar.ToolbarRoot != null && !popupMenuAlreadyChecked)
                    {
                        //Get the popup menus
                        var popupMenus = toolbar.ToolbarRoot.PopupMenus;
                        if (popupMenus.Count > 0)
                        {
                            //Iterate the popup menus of the control
                            foreach (var popupMenu in popupMenus)
                            {
                                if (popupMenu.Value != null)
                                {
                                    //If the key of the tool is present in the popup menus list
                                    if (popupMenu.Value.Items.ContainsKey(item.Name))
                                    {
                                        //Get the Value of the PopupMenu and update its value in the list
                                        var itemInPopupMenu = popupMenu.Value.Items[item.Name];
                                        prop = itemInPopupMenu.GetType().GetProperty(property, BindingFlags.Public | BindingFlags.Instance);
                                        if (null != prop && prop.CanWrite)
                                        {
                                            prop.SetValue(itemInPopupMenu, value, null);
                                        }
                                    }

                                    //Then we must update the GUI. For this we get the item in the toolbar items
                                    var menu = ((toolbar as ToolStrip).Items[popupMenu.Key.ToString()] as ToolStripDropDownButton);
                                    if (menu != null && menu.DropDownItems.ContainsKey(item.Name))
                                    {
                                        //If the key is present in the dropdown items we must update the value as well
                                        var submenu = menu.DropDownItems[item.Name];
                                        prop = submenu.GetType().GetProperty(property, BindingFlags.Public | BindingFlags.Instance);
                                        if (null != prop && prop.CanWrite)
                                        {
                                            prop.SetValue(submenu, value, null);
                                        }
                                        popupMenuAlreadyChecked = true; //The popup menus list was already reviewed
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }