示例#1
0
        private void OnAddMenu(IContextMenuCallback piCallback, ArrayList menuItems, InsertionPointId insertionPointId)
        {
            if (menuItems != null)
            {
                foreach (ContextMenuItem item in menuItems)
                {
                    if (item.Visible)
                    {
                        ContextSubMenuItem subMenuItem = item as ContextSubMenuItem;
                        if (subMenuItem == null)
                        {
                            AddItem(piCallback, item, insertionPointId);
                        }
                        else
                        {
                            AddItem(piCallback, subMenuItem, insertionPointId);

                            // Iterate through each sub menu.

                            foreach (ContextMenuItem menuItem in subMenuItem.MenuItems)
                            {
                                if (menuItem.Visible)
                                {
                                    AddItem(piCallback, subMenuItem, menuItem);
                                }
                            }
                        }
                    }
                }
            }
        }
示例#2
0
        }// CGenApplications

        internal override void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed)
        {
            // See if we're allowed to insert an item in the "view" section
            if ((pInsertionAllowed & (int)CCM.INSERTIONALLOWED_TOP) > 0)
            {
                // Stuff common to the top menu
                CONTEXTMENUITEM newitem = new CONTEXTMENUITEM();
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_TOP;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;

                newitem.strName          = CResourceStore.GetString("CGenApplications:AddApplicationOption");
                newitem.strStatusBarText = CResourceStore.GetString("CGenApplications:AddApplicationOptionDes");
                newitem.lCommandID       = COMMANDS.ADD_APPLICATION;

                // Now add this item through the callback
                piCallback.AddItem(ref newitem);


                newitem.strName          = CResourceStore.GetString("CGenApplications:FixApplicationOption");
                newitem.strStatusBarText = CResourceStore.GetString("CGenApplications:FixApplicationOptionDes");
                newitem.lCommandID       = COMMANDS.FIX_APPLICATION;

                // Now add this item through the callback
                piCallback.AddItem(ref newitem);
            }
        }// AddMenuItems
示例#3
0
        /// <summary>
        /// This function allows us to add items to the context menus
        /// </summary>
        public void AddMenuItems(IntPtr piDataObject, IContextMenuCallback piCallback, ref int pInsertionAllowed)
        {
            try
            {
                if (piDataObject == (IntPtr)DataObject.CUSTOMOCX || piDataObject == (IntPtr)DataObject.CUSTOMWEB)
                {
                    return;
                }

                DataObject dataObject;
                if (m_areMultipleResultsSelected)
                {
                    ResultDataItem item = m_snapin.GetSelectedItem((IResultData)m_console);
                    dataObject = new DataObject(m_snapin.FindNode(item.Param));
                }
                else
                {
                    dataObject = (DataObject)(IDataObject)Marshal.GetObjectForIUnknown(piDataObject);
                }

                if (dataObject != null && dataObject.Node != null)
                {
                    dataObject.Node.AddMenuItems(piCallback, ref pInsertionAllowed);
                }
            }
            catch (Exception e)
            {
                new ExceptionDialog(e, "The following exception has occurred in the snap-in:").ShowDialog(m_snapin);
            }
        }
示例#4
0
        }// onDelete

        internal override void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed)
        {
            // See if we're allowed to insert an item in the "view" section
            if (!ReadOnly && (pInsertionAllowed & (int)CCM.INSERTIONALLOWED_TOP) > 0)
            {
                // Stuff common to the top menu
                CONTEXTMENUITEM newitem = new CONTEXTMENUITEM();
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_TOP;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;

                newitem.strName          = CResourceStore.GetString("CSingleCodeGroup:NewOption");
                newitem.strStatusBarText = CResourceStore.GetString("CSingleCodeGroup:NewOptionDes");
                newitem.lCommandID       = COMMANDS.CREATE_CODEGROUP;

                // Now add this item through the callback
                piCallback.AddItem(ref newitem);


                newitem.strName          = CResourceStore.GetString("CSingleCodeGroup:DuplicateOption");
                newitem.strStatusBarText = CResourceStore.GetString("CSingleCodeGroup:DuplicateOptionDes");
                newitem.lCommandID       = COMMANDS.DUPLICATE_CODEGROUP;

                // Now add this item through the callback
                piCallback.AddItem(ref newitem);
            }
        }// AddMenuItems
示例#5
0
        }// CompareObjects

        //-------------------------------------------------------
        // Methods to extend IContextMenu
        //-------------------------------------------------------

        //-------------------------------------------------
        // AddMenuItems
        //
        // This function allows us to add items to the context menus
        //-------------------------------------------------
        public void AddMenuItems(IDataObject piDataObject, IContextMenuCallback piCallback, ref int pInsertionAllowed)
        {
            // The piDataObject is really a CDO is disguise....
            CDO item = (CDO)piDataObject;

            item.Node.AddMenuItems(ref piCallback, ref pInsertionAllowed, item.Data);
        }// AddMenuItems
示例#6
0
        private void OnAddSubMenu(IContextMenuCallback piCallback)
        {
            if (m_subMenuItems != null)
            {
                foreach (ContextSubMenuItem subMenuItem in m_subMenuItems)
                {
                    if (subMenuItem.Visible)
                    {
                        // Add the popup.

                        AddItem(piCallback, subMenuItem, InsertionPointId.PrimaryTop);

                        // Iterate through each sub menu.

                        foreach (ContextMenuItem menuItem in subMenuItem.MenuItems)
                        {
                            if (menuItem.Visible)
                            {
                                AddItem(piCallback, subMenuItem, menuItem);
                            }
                        }
                    }
                }
            }
        }
        }// ResultItemSelected

        internal override void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed, Object oResultItem)
        {
            CONTEXTMENUITEM newitem = new CONTEXTMENUITEM();

            // See if we're allowed to insert an item in the "view" section
            if ((pInsertionAllowed & (int)CCM.INSERTIONALLOWED_TOP) > 0)
            {
                // Stuff common to the top menu
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_TOP;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;

                if (oResultItem == null)
                {
                    newitem.strName          = CResourceStore.GetString("CSharedAssemblies:AddOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CSharedAssemblies:AddOptionDes");
                    newitem.lCommandID       = COMMANDS.ADD_GACASSEMBLY;
                    // Now add this item through the callback
                    piCallback.AddItem(ref newitem);
                }
            }
            // See if we can insert in the view menu
            if ((pInsertionAllowed & (int)CCM.INSERTIONALLOWED_VIEW) > 0)
            {
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_VIEW;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;

                // If we're showing the taskpad right now
                if (m_oResults is CGenericTaskPad)
                {
                    newitem.strName          = CResourceStore.GetString("CSharedAssemblies:ViewAssembliesOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CSharedAssemblies:ViewAssembliesOptionDes");
                    newitem.lCommandID       = COMMANDS.SHOW_LISTVIEW;
                }
                // Currently, we're showing the list view
                else
                {
                    newitem.strName          = CResourceStore.GetString("CSharedAssemblies:ViewHTMLOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CSharedAssemblies:ViewHTMLOptionDes");
                    newitem.lCommandID       = COMMANDS.SHOW_TASKPAD;
                }
                // Now add this item through the callback
                piCallback.AddItem(ref newitem);

                // Add a 'Refresh' menu item
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_VIEW;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;
                newitem.strName           = CResourceStore.GetString("CSharedAssemblies:RefreshOption");
                newitem.strStatusBarText  = CResourceStore.GetString("CSharedAssemblies:RefreshOptionDes");
                newitem.lCommandID        = COMMANDS.REFRESH_DISPLAY;
                piCallback.AddItem(ref newitem);
            }
        }// AddMenuItems
示例#8
0
        private void AddItem(IContextMenuCallback piCallback, ContextSubMenuItem subMenuItem, ContextMenuItem menuItem)
        {
            MmcContextMenuItem item = new MmcContextMenuItem();

            item.Name             = menuItem.Name;
            item.StatusBarText    = menuItem.StatusText;
            item.CommandId        = menuItem.CommandId;
            item.InsertionPointId = (uint)subMenuItem.CommandId;
            item.Flags            = 0;
            item.SpecialFlags     = 0;
            piCallback.AddItem(ref item);
        }
示例#9
0
        internal void AddMenuItems(IContextMenuCallback piCallback, ref int pInsertionAllowed)
        {
            // Conditionally add menu items.

            if ((pInsertionAllowed & (int)ContextMenuFlags.InsertionAllowedView) > 0)
            {
                // Refresh first.

                RemoveViewMenuItems();
                if (IsSelected)
                {
                    AddViewMenuItems();
                }

                // Add the items.

                OnAddViewMenu(piCallback);
            }
            else
            {
                // Refresh first.

                RemoveMenuItems();
                if (IsSelected)
                {
                    AddMenuItems();
                }
                else
                {
                    AddResultMenuItems();
                }

                // Add the items.

                if ((pInsertionAllowed & (int)ContextMenuFlags.InsertionAllowedTop) > 0)
                {
                    OnAddTopMenu(piCallback);
                    OnAddSubMenu(piCallback);
                }

                if ((pInsertionAllowed & (int)ContextMenuFlags.InsertionAllowedNew) > 0)
                {
                    OnAddNewMenu(piCallback);
                }

                if ((pInsertionAllowed & (int)ContextMenuFlags.InsertionAllowedTask) > 0)
                {
                    OnAddTaskMenu(piCallback);
                }
            }
        }
示例#10
0
文件: Snapin.cs 项目: formist/LinkMe
 /// <summary>
 /// Add menu items based on MMC's insertion rules.
 /// </summary>
 void IExtendContextMenu.AddMenuItems(IntPtr piDataObject, IContextMenuCallback piCallback, ref int pInsertionAllowed)
 {
     try
     {
         DataObject dataObject = (DataObject)(IDataObject)Marshal.GetObjectForIUnknown(piDataObject);
         if (dataObject.Node != null)
         {
             dataObject.Node.AddMenuItems(piCallback, ref pInsertionAllowed);
         }
     }
     catch (Exception e)
     {
         new ExceptionDialog(e, "The following exception has occurred in the snap-in:").ShowDialog(this);
     }
 }
示例#11
0
        }// ResultItemSelected

        internal override void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed, Object oResultItem)
        {
            CONTEXTMENUITEM newitem = new CONTEXTMENUITEM();

            // See if we're allowed to insert an item in the "view" section
            if ((pInsertionAllowed & (int)CCM.INSERTIONALLOWED_TOP) > 0)
            {
                if (!m_fIKnowMyDependencies)
                {
                    // Stuff common to the top menu
                    newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_TOP;
                    newitem.fFlags            = 0;
                    newitem.fSpecialFlags     = 0;

                    newitem.strName          = CResourceStore.GetString("CApplicationDepends:DiscoverNowMenuOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CApplicationDepends:DiscoverNowMenuOptionDes");
                    newitem.lCommandID       = COMMANDS.FIND_DEPENDENTASSEMBLIES;

                    piCallback.AddItem(ref newitem);
                }
            }
            // See if we can insert in the view menu
            if ((pInsertionAllowed & (int)CCM.INSERTIONALLOWED_VIEW) > 0)
            {
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_VIEW;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;

                // If we're showing the taskpad right now
                if (m_oResults is CGenericTaskPad && m_fAllowListView)
                {
                    newitem.strName          = CResourceStore.GetString("CApplicationDepends:ViewAssembliesOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CApplicationDepends:ViewAssembliesOptionDes");
                    newitem.lCommandID       = COMMANDS.SHOW_LISTVIEW;
                }
                // Currently, we're showing the list view
                else if (!(m_oResults is CGenericTaskPad))
                {
                    newitem.strName          = CResourceStore.GetString("CApplicationDepends:ViewHTMLOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CApplicationDepends:ViewHTMLOptionDes");
                    newitem.lCommandID       = COMMANDS.SHOW_TASKPAD;
                }
                // Now add this item through the callback
                piCallback.AddItem(ref newitem);
            }
        }// AddMenuItems
示例#12
0
        }// SavePolicy

        internal override void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed)
        {
            CONTEXTMENUITEM newitem = new CONTEXTMENUITEM();

            // See if we're allowed to insert an item in the "view" section
            if (!ReadOnly && (pInsertionAllowed & (int)CCM.INSERTIONALLOWED_TOP) > 0)
            {
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_TOP;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;
                newitem.strName           = CResourceStore.GetString("CSecurityPolicy:ResetOption");
                newitem.strStatusBarText  = CResourceStore.GetString("CSecurityPolicy:ResetOptionDes");
                newitem.lCommandID        = COMMANDS.RESET_POLICY;

                // Now add this item through the callback
                piCallback.AddItem(ref newitem);

                if (!isNoSave)
                {
                    // See if we can have a recover policy option
                    if (m_fUndo && File.Exists(m_pl.StoreLocation + ".old"))
                    {
                        // Add the save... item to the menu
                        if (m_fRedo)
                        {
                            newitem.strName          = CResourceStore.GetString("CSecurityPolicy:RedoOption");
                            newitem.strStatusBarText = CResourceStore.GetString("CSecurityPolicy:RedoOptionDes");
                        }
                        else
                        {
                            newitem.strName          = CResourceStore.GetString("CSecurityPolicy:UndoOption");
                            newitem.strStatusBarText = CResourceStore.GetString("CSecurityPolicy:UndoOptionDes");
                        }
                        newitem.lCommandID = COMMANDS.UNDO_SECURITYPOLICY;
                        // Now add this item through the callback
                        piCallback.AddItem(ref newitem);
                    }
                }
            }
        }// AddMenuItems
示例#13
0
        private void AddItem(IContextMenuCallback piCallback, ContextMenuItem menuItem, InsertionPointId insertionPointId)
        {
            MmcContextMenuItem newItem = new MmcContextMenuItem();

            newItem.Name             = menuItem.Name;
            newItem.StatusBarText    = menuItem.StatusText;
            newItem.CommandId        = menuItem.CommandId;
            newItem.InsertionPointId = (uint)insertionPointId;

            if (menuItem.IsSeparator)
            {
                newItem.Flags = (int)ContextMenuFlags.Separator;
            }
            else
            {
                newItem.Flags = (menuItem.IsChecked ? (int)ContextMenuFlags.Checked : (int)ContextMenuFlags.Unchecked)
                                | (menuItem.IsEnabled ? (int)ContextMenuFlags.Enabled : (int)(ContextMenuFlags.Grayed | ContextMenuFlags.Disabled));
            }

            newItem.SpecialFlags = menuItem.IsDefault ? (int)ContextMenuFlags.SpecialDefaultItem : 0;
            piCallback.AddItem(ref newItem);
        }
示例#14
0
        }// AddMenuItems

        internal virtual void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed)
        {
        }// AddMenuItems
        }// GetPermissionIndex

        internal override void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed, Object oResultItem)
        {
            // See if we're allowed to insert an item in the "view" section
            if ((pInsertionAllowed & (int)CCM.INSERTIONALLOWED_VIEW) > 0 && oResultItem == null)
            {
                CONTEXTMENUITEM newitem;
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_VIEW;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;

                // If we're showing the taskpad right now
                if (m_oResults != this)
                {
                    newitem.strName          = CResourceStore.GetString("CSinglePermissionSet:ViewPermissionsOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CSinglePermissionSet:ViewPermissionsOptionDes");
                    newitem.lCommandID       = COMMANDS.SHOW_LISTVIEW;
                }

                // Currently, we're showing the list view
                else
                {
                    newitem.strName          = CResourceStore.GetString("CSinglePermissionSet:ViewHTMLOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CSinglePermissionSet:ViewHTMLOptionDes");
                    newitem.lCommandID       = COMMANDS.SHOW_TASKPAD;
                }
                // Now add this item through the callback
                piCallback.AddItem(ref newitem);
            }


            // See if we can insert on the top
            if ((pInsertionAllowed & (int)CCM.INSERTIONALLOWED_TOP) > 0)
            {
                CONTEXTMENUITEM newitem = new CONTEXTMENUITEM();
                // Stuff common to the top menu
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_TOP;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;

                // If they are right clicking on the node item
                if (oResultItem == null)
                {
                    if (!ReadOnly)
                    {
                        newitem.strName          = CResourceStore.GetString("CSinglePermissionSet:AddPermOption");
                        newitem.strStatusBarText = CResourceStore.GetString("CSinglePermissionSet:AddPermOptionDes");
                        newitem.lCommandID       = COMMANDS.ADD_PERMISSIONS;

                        // Now add this item through the callback
                        piCallback.AddItem(ref newitem);
                    }
                    // We only care if the policy level is read only in this case... if the
                    // permission set is read only, we still want to display this menu option
                    if (!base.ReadOnly)
                    {
                        newitem.strName          = CResourceStore.GetString("CSinglePermissionSet:DuplicateOption");
                        newitem.strStatusBarText = CResourceStore.GetString("CSinglePermissionSet:DuplicateOptionDes");
                        newitem.lCommandID       = COMMANDS.DUPLICATE_PERMISSIONSET;

                        // Now add this item through the callback
                        piCallback.AddItem(ref newitem);
                    }
                }
                // They right-clicked on one of the permissions shown in the result view
                else
                {
                    // If this is a read-only permission set, then provide an option to view the current permission
                    if (ReadOnly)
                    {
                        newitem.strName          = CResourceStore.GetString("CSinglePermissionSet:ViewPermOption");
                        newitem.strStatusBarText = CResourceStore.GetString("CSinglePermissionSet:ViewPermOptionDes");
                        newitem.lCommandID       = COMMANDS.VIEW_PERMISSION;

                        // Now add this item through the callback
                        piCallback.AddItem(ref newitem);
                    }
                }
            }
        }// AddMenuItems
示例#16
0
 private void OnAddTaskMenu(IContextMenuCallback piCallback)
 {
     OnAddMenu(piCallback, m_taskMenuItems, InsertionPointId.PrimaryTask);
 }
示例#17
0
 private void OnAddViewMenu(IContextMenuCallback piCallback)
 {
     OnAddMenu(piCallback, m_viewMenuItems, InsertionPointId.PrimaryView);
 }
示例#18
0
        }// RedoChildren

        internal virtual void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed, Object oResultItem)
        {
            AddMenuItems(ref piCallback, ref pInsertionAllowed);
        }// AddMenuItems
示例#19
0
        }// CGenSecurity

        internal override void AddMenuItems(ref IContextMenuCallback piCallback, ref int pInsertionAllowed)
        {
            // See if we're allowed to insert an item in the "view" section
            if ((pInsertionAllowed & (int)CCM.INSERTIONALLOWED_TOP) > 0)
            {
                // Stuff common to the top menu
                CONTEXTMENUITEM newitem = new CONTEXTMENUITEM();
                newitem.lInsertionPointID = CCM.INSERTIONPOINTID_PRIMARY_TOP;
                newitem.fFlags            = 0;
                newitem.fSpecialFlags     = 0;

                // Add the new... item to the menu
                newitem.strName          = CResourceStore.GetString("CGenSecurity:NewOption");
                newitem.strStatusBarText = CResourceStore.GetString("CGenSecurity:NewOptionDes");
                newitem.lCommandID       = COMMANDS.NEW_SECURITYPOLICY;
                // Now add this item through the callback
                piCallback.AddItem(ref newitem);

                // Add the open... item to the menu
                newitem.strName          = CResourceStore.GetString("CGenSecurity:OpenOption");
                newitem.strStatusBarText = CResourceStore.GetString("CGenSecurity:OpenOptionDes");
                newitem.lCommandID       = COMMANDS.OPEN_SECURITYPOLICY;
                // Now add this item through the callback
                piCallback.AddItem(ref newitem);

                // Add the Reset... item to the menu
                newitem.strName          = CResourceStore.GetString("CGenSecurity:ResetOption");
                newitem.strStatusBarText = CResourceStore.GetString("CGenSecurity:ResetOptionDes");
                newitem.lCommandID       = COMMANDS.RESET_POLICY;
                // Now add this item through the callback
                piCallback.AddItem(ref newitem);

                // This option should only be available if the user can write to either
                // the machine policy level or the user policy level
                if (!MachineNode.ReadOnly || !UserNode.ReadOnly)
                {
                    // Add the Adjust Security Policy... item to the menu
                    newitem.strName          = CResourceStore.GetString("CGenSecurity:AdjustSecurityOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CGenSecurity:AdjustSecurityOptionDes");
                    newitem.lCommandID       = COMMANDS.ADJUST_SECURITYPOLICY;
                    // Now add this item through the callback
                    piCallback.AddItem(ref newitem);
                }

                // Add the evaulate... item to the menu
                newitem.strName          = CResourceStore.GetString("CGenSecurity:EvaluateAssemOption");
                newitem.strStatusBarText = CResourceStore.GetString("CGenSecurity:EvaluateAssemOptionDes");
                newitem.lCommandID       = COMMANDS.EVALUATE_ASSEMBLY;
                // Now add this item through the callback
                piCallback.AddItem(ref newitem);

                // This option should only be available if the user can write to either
                // the machine policy level or the user policy level
                if (!MachineNode.ReadOnly || !UserNode.ReadOnly)
                {
                    // Add the Add fully trusted... item to the menu
                    newitem.strName          = CResourceStore.GetString("CGenSecurity:TrustAssemOption");
                    newitem.strStatusBarText = CResourceStore.GetString("CGenSecurity:TrustAssemOptionDes");
                    newitem.lCommandID       = COMMANDS.TRUST_ASSEMBLY;
                    // Now add this item through the callback
                    piCallback.AddItem(ref newitem);
                }

                // Add the Create Deployment Package... item to the menu
                newitem.strName          = CResourceStore.GetString("CGenSecurity:CreateDeployOption");
                newitem.strStatusBarText = CResourceStore.GetString("CGenSecurity:CreateDeployOptionDes");
                newitem.lCommandID       = COMMANDS.CREATE_MSI;
                // Now add this item through the callback
                piCallback.AddItem(ref newitem);
            }
        }// AddMenuItems