Nevron Open Vision Documentation
Rich Text Editor / Commanding / Command Bars / Text Command Bars via Code
In This Topic
    Text Command Bars via Code
    In This Topic

    If you are building a cross-platform NOV application, you can't use the Visual Studio designer, so you should customize the command bars via code.

     Hiding Menus and Toolbars

    To hide a command bar or a command bar item use the corresponding Get... method of the NRichTextViewWithCommandBars or NRichTextViewWithCommandBarsControl class and set its Visibility property to Collapsed:

    • GetMainMenu - gets the main menu bar.  When you get the menu bar, you can use it's FindMenuDropDownByText method to get a specific menu drop down. Then if you want to hide a specific menu item from the drop down menu, you can use the Items.FindByText method of the menu item, but if the menu item does not contain sub menu items, it's better to use the RemoveCommands method discussed in the next section.
    • GetTooBar - gets a toolbar with a given name.
    • GetStatusBar - gets the status bar.

    The following code snippet hides the "View" menu and the "View" toolbar:

    Hide menus and toolbars
    Copy Code
    // Hide the "View" menu drop down
    nRichTextViewWithCommandBarsControl1.GetMainMenuBar()
        .FindMenuDropDownByText(NRichTextCommandBarBuilder.MenuViewName).Visibility = ENVisibility.Collapsed;
    
    // Hide the "View" toolbar
    nRichTextViewWithCommandBarsControl1.GetToolBar(
        NRichTextCommandBarBuilder.ToolbarViewName).Visibility = ENVisibility.Collapsed;
    
    Note that instead of using string literals like "View", it is better to use the string constants defined in the NRichTextCommandBarBuilder class to get menu and toolbar names as shown in the code snippet above.
     Removing Commands

    To remove all widgets associated with specific commands from the commanding UI, use the RemoveCommands method of the drawing view with command bars.

    Remove commands
    Copy Code
    // Create an array of commands to remove
    NCommand[] commandsToRemove = new NCommand[] {
        NRichTextView.OpenCommand,
        NRichTextView.OpenUrlCommand,
        NRichTextView.SaveAsCommand,
        NRichTextView.SaveCommand
    };
    
    NRichTextViewWithCommandBars richTextWithCommandBars = new NRichTextViewWithCommandBars();
    richTextWithCommandBars.RemoveCommands(commandsToRemove);
    

    Always use the RemoveCommands item to remove individual menu and toolbar items, unless the menu item has sub items. In that case, use the GetMainMenu method of the menu bar, then FindMenuDropDownByText to get the menu drop down and finally Items.FindByText to get the item with sub items.

     Modifying Builder Collections

    If you want to remove a given toolbar or menu from the builders, you can easily do so by using the Remove method of the ToolBarBuilders and MenuDropDownBuilders collection of the rich text command bar builder respectively. You can get or remove builders by name.

    The names of all rich text menu and toolbar builders are exposed as constants in the NRichTextCommandBarBuilder class. For example, to remove the "File" menu and the "Standard" toolbar of a command bars based rich text UI, you can use the following piece of code:

    Remove Toolbar and Menu Builders
    Copy Code
    commandBarBuilder.MenuDropDownBuilders.Remove(NRichCommandBarBuilder.MenuFileName);
    commandBarBuilder.ToolBarBuilders.Remove(NRichCommandBarBuilder.ToolbarStandardName);
    

    To add or insert your own toolbar or menu drop down builder, you can use the Add or Insert methods of the corresponding builder collection respectively.

    Add Custom Toolbar and Menu Builders
    Copy Code
    commandBarBuilder.MenuDropDownBuilders.Insert(1, new CustomMenuBuilder());
    commandBarBuilder.ToolBarBuilders.Insert(0, new CustomToolBarBuilder());
    
     Custom Menu Builders

    To create a custom menu builder, you should create a class that inherits NMenuDropDownBuilder:

    Create custom menu drop down builder
    Copy Code
    public class CustomMenuBuilder : NMenuDropDownBuilder
    {
        public CustomMenuBuilder()
            : base("Custom Menu")
        {
        }
    
        protected override void AddItems(NMenuItemCollection items)
        {
            // Add the "Copy" menu item
            items.Add(CreateMenuItem(Nevron.Nov.Presentation.NResources.Image_Edit_Copy_png,
                NRichTextView.CopyCommand));
    
            // Add the custom command menu item
            items.Add(CreateMenuItem(NResources.Image_Ribbon_16x16_smiley_png, CustomCommand));
        }
    }
    
     Custom Toolbar Builders

    To create a custom toolbar builder, you should create a class that inherits NToolBarBuilder:

    Create custom toolbar builder
    Copy Code
    public class CustomToolBarBuilder : NToolBarBuilder
    {
        public CustomToolBarBuilder()
            : base("Custom Toolbar")
        {
        }
    
        protected override void AddItems(NCommandBarItemCollection items)
        {
            // Add the "Copy" button
            items.Add(CreateButton(Nevron.Nov.Presentation.NResources.Image_Edit_Copy_png, NRichTextView.CopyCommand));
    
            // Add the custom command button
            items.Add(CreateButton(NResources.Image_Ribbon_16x16_smiley_png, CustomCommand));
        }
    }
    

    To replace the original "Standard" toolbar builder with the custom one, use the following code:

    Replace the "Standard" toolbar builder
    Copy Code
    NRichTextCommandBarBuilder commandBarBuilder = new NRichTextCommandBarBuilder();
    int toolbarIndex = commandBarBuilder.ToolBarBuilders.IndexOf(NRichTextCommandBarBuilder.ToolbarStandardName);
    commandBarBuilder.ToolBarBuilders[toolbarIndex] = new CustomStandardToolbar();
    
    See Also