public InternalBrowseItem CloneBrowseMenu() { InternalBrowseItem ret = new InternalBrowseItem(); ret.BarBreak = BarBreak; ret.Break = Break; ret.BrowseType = BrowseType; ret.DriveInfo = DriveInfo; ret.Enabled = Enabled; ret.OwnerDraw = OwnerDraw; ret.Shortcut = Shortcut; ret.ShowShortcut = ShowShortcut; ret.Text = Text; ret.Visible = Visible; ret.SpecialFolder = SpecialFolder; if (MenuItems.Count > 0) { foreach (MenuItem child in MenuItems) { ret.MenuItems.Add(((InternalBrowseItem)child).CloneBrowseMenu()); } } //ret.Events.AddHandlers(this.Events); return(ret); }
private static void map_shortcut(DriveInfo drive_info, InternalBrowseItem menu_item) { string drive_letter = drive_info.Name.ToLower(System.Globalization.CultureInfo.InvariantCulture); for (int i = 0; i < drive_letters.Length; i++) { if (drive_letters[i] != drive_letter) { continue; } menu_item.Shortcut = drive_shortcuts[i]; break; } }
void browse_menu_Click(object sender, EventArgs e) { if (BrowseMenuClick == null) { return; } InternalBrowseItem menu = (InternalBrowseItem)sender; ContextMenu cont_menu = menu.GetContextMenu(); BrowseMenuClick (this, new BrowseMenuClickEventArgs (menu.BrowseType, cont_menu == null ? null : (mFilePanel)cont_menu.SourceControl, menu.DriveInfo, menu.SpecialFolder)); }
private void intern_build() { //clear parent_main_menu_item.MenuItems.Clear(); if (menu_items == null) { menu_items = new List <InternalBrowseItem>(); } menu_items.Clear(); //add drive refs DriveInfo[] dis = DriveInfo.GetDrives(); foreach (DriveInfo di in dis) { InternalBrowseItem drive_menu = new InternalBrowseItem(di); drive_menu.Click += new EventHandler(browse_menu_Click); menu_items.Add(drive_menu); } //add line InternalBrowseItem menu_break_1 = new InternalBrowseItem(BrowseTypes.Break); menu_items.Add(menu_break_1); //add special folders string[] spec_folder_enum_names = Enum.GetNames(typeof(Environment.SpecialFolder)); SortedList <string, object> spec_folder_enum_names_sorted = new SortedList <string, object>(StringComparer.InvariantCulture); foreach (string one_spec_folder_name in spec_folder_enum_names) { spec_folder_enum_names_sorted.Add(one_spec_folder_name, null); } InternalBrowseItem spec_folder_header_menu = new InternalBrowseItem(Options.GetLiteral(Options.LANG_SPECIAL_FOLDERS)); foreach (KeyValuePair <string, object> kvp in spec_folder_enum_names_sorted) { InternalBrowseItem spec_folder_menu = new InternalBrowseItem ((Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), kvp.Key), kvp.Key); spec_folder_header_menu.MenuItems.Add(spec_folder_menu); spec_folder_menu.Click += new EventHandler(browse_menu_Click); } menu_items.Add(spec_folder_header_menu); //add some browse items InternalBrowseItem find_menu = new InternalBrowseItem(BrowseTypes.Find); menu_items.Add(find_menu); find_menu.Click += new EventHandler(browse_menu_Click); InternalBrowseItem network_menu = new InternalBrowseItem(BrowseTypes.Network); menu_items.Add(network_menu); network_menu.Click += new EventHandler(browse_menu_Click); InternalBrowseItem jump_menu = new InternalBrowseItem(BrowseTypes.Jump); menu_items.Add(jump_menu); jump_menu.Click += new EventHandler(browse_menu_Click); InternalBrowseItem ftp_menu = new InternalBrowseItem(BrowseTypes.Ftp); menu_items.Add(ftp_menu); ftp_menu.Click += new EventHandler(browse_menu_Click); InternalBrowseItem processes_menu = new InternalBrowseItem(BrowseTypes.Processes); menu_items.Add(processes_menu); processes_menu.Click += new EventHandler(browse_menu_Click); //add to main menu parent_main_menu_item.MenuItems.AddRange(menu_items.ToArray()); //add to context menu if (context_menu == null) { context_menu = new ContextMenu(); } context_menu.MenuItems.Clear(); int added_ind = 0; foreach (InternalBrowseItem main_item in menu_items) { added_ind = context_menu.MenuItems.Add(main_item.CloneBrowseMenu()); context_menu.MenuItems[added_ind].Click += new EventHandler(browse_menu_Click); if (context_menu.MenuItems[added_ind].MenuItems.Count > 0) { foreach (InternalBrowseItem child_item in context_menu.MenuItems[added_ind].MenuItems) { child_item.Click += new EventHandler(browse_menu_Click); } } } //add line (only main menu) InternalBrowseItem menu_break_2 = new InternalBrowseItem(BrowseTypes.Break); parent_main_menu_item.MenuItems.Add(menu_break_2); //add refresh (only main menu) MenuItem refresh_menu = new MenuItem(Options.GetLiteral(Options.LANG_REFRESH)); parent_main_menu_item.MenuItems.Add(refresh_menu); refresh_menu.Click += new EventHandler(refresh_menu_Click); }