src/RumahScarlett/RumahScarlett.Presentation/Helper/RoleManager.cs
/// <summary>
/// Tambahkan node child dari Menu parent
/// </summary>
/// <param name="listFormAction">Data FormActionModel</param>
/// <param name="treeNode">Node parent</param>
/// <param name="toolStripMenuItem">Menu item parent</param>
Tambahkan node child dari Menu parent
Tambahkan node child dari Menu parent
private void AddMenuToTree(List<IFormActionModel> listFormAction, TreeNode treeNode
         , ToolStripDropDownItem toolStripMenuItem)
      {
         if (toolStripMenuItem.DropDownItems.Count > 0)
         {
            foreach (var item in toolStripMenuItem.DropDownItems)
            {
               if (!(item is ToolStripMenuItem)) continue;
               var menuItem = (ToolStripMenuItem)item;
               if (menuItem.TagIgnore()) continue;
               var node = new TreeNode(menuItem.Text.Replace("&", ""));
               node.Tag = new NodeTag()
               {
                  FormAction = menuItem.Tag.ToString(), 
                  Tag = menuItem.AccessibleName, 
                  MenuParent = menuItem.AccessibleDescription 
               };
               treeNode.Nodes.Add(node);
               AddMenuToTree(listFormAction, node, menuItem);
               if (!string.IsNullOrWhiteSpace(menuItem.AccessibleName))
               {
                  var accsName = menuItem.AccessibleName;
                  if (accsName.Equals("menuForm")) 
                  {
                     var formAction = listFormAction.Where(fa => fa.form_name.Equals(menuItem.Tag.ToString())).FirstOrDefault();
                     if (formAction != null)
                     {
                        foreach (var prop in formAction.GetType().GetProperties())
                        {
                           if (prop.Name.Equals("form_name") || prop.Name.Equals("form_text")) continue;
                           if (prop.GetValue(formAction, null) == null) continue;
                           var actionNode = new TreeNode(prop.GetValue(formAction, null).ToString());
                           actionNode.Tag = new NodeTag()
                           {
                              FormAction = menuItem.Tag.ToString(), 
                              Tag = "action",
                              MenuParent = menuItem.AccessibleDescription 
                           };
                           node.Text = formAction.form_text; 
                           node.Tag = new NodeTag()
                           {
                              FormAction = menuItem.Tag.ToString(), 
                              Tag = menuItem.AccessibleName, 
                              MenuParent = menuItem.AccessibleDescription 
                           };
                           node.Nodes.Add(actionNode);
                        }
                     }
                  }
               }
            }
         }
      }
private void AddMenuToTree ( List < IFormActionModel > listFormAction , TreeNode treeNode , ToolStripDropDownItem toolStripMenuItem ) { if ( toolStripMenuItem . DropDownItems . Count > 0 ) { foreach ( var item in toolStripMenuItem . DropDownItems ) { if ( ! ( item is ToolStripMenuItem ) ) continue ; var menuItem = ( ToolStripMenuItem ) item ; if ( menuItem . TagIgnore ( ) ) continue ; var node = new TreeNode ( menuItem . Text . Replace ( " " , " " ) ) ; node . Tag = new NodeTag ( ) { FormAction = menuItem . Tag . ToString ( ) , Tag = menuItem . AccessibleName , MenuParent = menuItem . AccessibleDescription } ; treeNode . Nodes . Add ( node ) ; AddMenuToTree ( listFormAction , node , menuItem ) ; if ( ! string . IsNullOrWhiteSpace ( menuItem . AccessibleName ) ) { var accsName = menuItem . AccessibleName ; if ( accsName . Equals ( " " ) ) { var formAction = listFormAction . Where ( fa => fa . form_name . Equals ( menuItem . Tag . ToString ( ) ) ) . FirstOrDefault ( ) ; if ( formAction != null ) { foreach ( var prop in formAction . GetType ( ) . GetProperties ( ) ) { if ( prop . Name . Equals ( " " ) || prop . Name . Equals ( " " ) ) continue ; if ( prop . GetValue ( formAction , null ) == null ) continue ; var actionNode = new TreeNode ( prop . GetValue ( formAction , null ) . ToString ( ) ) ; actionNode . Tag = new NodeTag ( ) { FormAction = menuItem . Tag . ToString ( ) , Tag = " " , MenuParent = menuItem . AccessibleDescription } ; node . Text = formAction . form_text ; node . Tag = new NodeTag ( ) { FormAction = menuItem . Tag . ToString ( ) , Tag = menuItem . AccessibleName , MenuParent = menuItem . AccessibleDescription } ; node . Nodes . Add ( actionNode ) ; } } } } } } }
Tambahkan node child dari Menu parent
Tambahkan node child dari Menu parent
// Cek apakah toolStripMenuItem mempunyai sub MenuItem // yang merupakan DropDownItem // Lewati jika sub MenuItem bukan merupakan toolstripmenuitem (bisa saja ToolStripSeparator) // Lewati jika sub MenuItem mempunyai Tag ignore // Buat node child menu / sub menu / menuForm // Tambahkan object NodeTag ke Tag node child // Form name // menu / menuForm // Menu header (parent) di MenuStrip // Tambahkan node child ke node parent // Cek jika ada sub menu item lagi dengan recursive method // Tambahkan node action(node untuk Button) ke node terakhir // yang merupakan menu form (menu yang memanggil form) // Cek jika terdapat value pada AccessibleName // Menu yang memanggil Form // Cek jika nama form terdapat pada listFormAction, // Looping setiap property di object FormActionModel // Tidak termasuk kolom form_name dan form_text // Lewati property yang tidak memilike value // Buat node (button) action // Tambahkan object NodeTag pada Tag node (button) action // Form name // Menu header (parent) di MenuStrip // Node  menuForm text sesuai Form name // Tambahkan object NodeTag pada Tag node Form // Form name // menuForm // Menu header (parent) di MenuStrip // Tambahkan node (button) action ke node Form
listFormAction
List<IFormActionModel>
None
treeNode
TreeNode
None
toolStripMenuItem
ToolStripDropDownItem
Menu item parent
Menu item parent