private void ToolStripMenuItem_Click(object sender, EventArgs e) { ToolStripMenuItem item = sender as ToolStripMenuItem; Structures.MenuItem menuitem = MenuStruct.FindMenuItemByToolStripMenuItem(item); if (menuitem.TypeOfEntity != null) { if (menuitem.TypeOfEntity.IsSubclassOf(typeof(BaseEntity))) { this.ShowManagementForm.ShowManagerForm(menuitem.TypeOfEntity); } else { if (menuitem.TypeOfEntity.IsSubclassOf(typeof(Form))) { this.ShowManagementForm.ShwoForm(menuitem.TypeOfEntity); } else { throw new GwinException(String.Format("The type '{0}' does not inherit from BaseEntity or Form", menuitem.TypeOfEntity)); } } } else { throw new GwinException(String.Format("Type of entity of MenuItem is null")); } }
/// <summary> /// Calculate MenuItmes from DataBase and Model Config /// </summary> private void CalculateMenuItems() { // Create Parent groups Menu from ManuItemApplication Table foreach (MenuItemApplication menuItemApplication in this.MenuItemApplicationService.GetAll()) { //Continue if user don't have a role required by menuItemApplication roles if (menuItemApplication.Roles != null && menuItemApplication.Roles.Count > 0) { if (!GwinApp.Instance.user.HasOneOfRoles(menuItemApplication.Roles)) { continue; } } // Create Parent Menu Item Structures.MenuItem menuItem = new Structures.MenuItem(true); menuItem.ToolStripMenuItem.Name = "toolStripMenuItem" + menuItemApplication.Code; menuItem.ToolStripMenuItem.Size = new System.Drawing.Size(82, 20); // Title menuItem.ToolStripMenuItem.Text = (menuItemApplication.Title.Current != string.Empty) ? menuItemApplication.Title.Current : menuItem.ToolStripMenuItem.Text = menuItemApplication.Code; MenuStruct.ParentMenuItems.Add(menuItem); } // Create SubMenu MenuItems from ModelCondiguration Entities Dictionary <Type, MenuAttribute> MenuAttributes_And_Types = new GwinEntitiesManager().Get_All_Type_And_MenuAttributes(); foreach (var menuAttributes_And_Types in MenuAttributes_And_Types) { Type EntityType = null; string Title = null; string Group = null; // Determine Category of Type : Entity or Form if (menuAttributes_And_Types.Key.IsSubclassOf(typeof(Form))) { if (menuAttributes_And_Types.Value.EntityType == null) { throw new GwinException(String.Format("The property EntityType of MenuAttribute of the Form {0} is null \n it can not be null we use it to check security permission", menuAttributes_And_Types.Key)); } EntityType = menuAttributes_And_Types.Value.EntityType; ConfigEntity configEntity = ConfigEntity.CreateConfigEntity(EntityType); Group = menuAttributes_And_Types.Value.Group; if (menuAttributes_And_Types.Value.Title != null) { Title = configEntity.Translate(menuAttributes_And_Types.Value.Title); } } else { if (menuAttributes_And_Types.Key.IsSubclassOf(typeof(BaseEntity))) { EntityType = menuAttributes_And_Types.Key; ConfigEntity configEntity = ConfigEntity.CreateConfigEntity(EntityType); Group = configEntity.Menu.Group; Title = configEntity.Menu.Title; } else { throw new GwinException(String.Format("The Type {0} does not inherit from BaseEntity or Form ", menuAttributes_And_Types.Key)); } } // Security : Continue if User dont have persmission if (!GwinApp.Instance.user.HasAccess(EntityType)) { continue; } // Create MenuItem and Save to Dictionary MenyItem Structures.MenuItem SubMenuItem = new Structures.MenuItem(false); SubMenuItem.ToolStripMenuItem.Name = menuAttributes_And_Types.Key.FullName; SubMenuItem.ToolStripMenuItem.Size = new System.Drawing.Size(82, 20); SubMenuItem.ToolStripMenuItem.Text = Title; SubMenuItem.ToolStripMenuItem.Click += ToolStripMenuItem_Click; SubMenuItem.TypeOfEntity = menuAttributes_And_Types.Key; // Find Parent if Exist Structures.MenuItem ParentMenuItem = null; if (Group != null) { string toolStripMenuItem_key = "toolStripMenuItem" + Group; ParentMenuItem = MenuStruct.ParentMenuItems.Where(m => m.ToolStripMenuItem.Name == toolStripMenuItem_key).SingleOrDefault(); // If parrent exist if (ParentMenuItem != null) { ParentMenuItem.Add(SubMenuItem); } else { // throw new GwinException(String.Format("the Parent {0} of {1} not exist ", configEntity.Menu.Group, toolStripMenuItem_key)); // Patent not exist bevause user not have permission required by Parent Menu } } else { this.MenuStruct.ParentMenuItems.Add(SubMenuItem); } } }