Class MenuBuildUtils

java.lang.Object
com.biglybt.ui.swt.MenuBuildUtils

public class MenuBuildUtils extends Object
A class which helps generate build SWT menus. It provides two main functions. The first provides the ability to create regenerateable menus (it will dispose old items when not displayed and invoke a callback method to regenerate it). The second provides the ability to create SWT menus based on the plugin API for menu creation - this allows internal code that generates menus to include plugins to append to their own internal menus.
  • Field Details

    • BASIC_MENU_ITEM_CONTROLLER

      public static final MenuBuildUtils.PluginMenuController BASIC_MENU_ITEM_CONTROLLER
      An instance of MenuItemPluginMenuControllerImpl with a default value of null - this will be the value passed when notifying selection and fill listeners.
    • pub_chat_pending

      private static AtomicBoolean pub_chat_pending
    • anon_chat_pending

      private static AtomicBoolean anon_chat_pending
  • Constructor Details

    • MenuBuildUtils

      public MenuBuildUtils()
  • Method Details

    • addMaintenanceListenerForMenu

      public static void addMaintenanceListenerForMenu(org.eclipse.swt.widgets.Menu menu, MenuBuildUtils.MenuBuilder builder)
    • addMaintenanceListenerForMenu

      public static void addMaintenanceListenerForMenu(org.eclipse.swt.widgets.Menu menu, MenuBuildUtils.MenuBuilder builder, boolean alwaysBuilt)
      Creates and adds a listener object to implement regeneratable menus. The first piece of functionality it offers is the ability to call a callback method to generate the menu when it is about to be displayed (the callback method is done by passing an object implementing the MenuBuilder interface). This means that the caller of this method only needs to provide the logic to construct the menu's contents. This is helpful if you want to update an existing menu. The second piece of functionality is that it automatically does what is required to dispose of existing menu items when the menu is hidden.
    • addPluginMenuItems

      public static void addPluginMenuItems(MenuItem[] items, org.eclipse.swt.widgets.Menu parent, boolean prev_was_separator, boolean enable_items, MenuBuildUtils.PluginMenuController controller)
      Creates menu items inside the given menu based on the plugin API MenuItem instances provided. This method is provided mainly as a utility method to make it easier for menus to incorporate menu components specified by plugins. Usually, the list of array items will be extracted from a class like MenuItemManager or TableContextMenuManager, where plugins will usually register menu items they have created.
      Parameters:
      items - The list of plugin MenuItem to add
      parent - The SWT Menu to add to.
      prev_was_separator - Indicates if the previous item in the menu is a separator or not
      enable_items - Indicates whether you want generated items to be enabled or not. If false, all items will be disabled. If true, then the items *may* be enabled, depending on how each MenuItem is configured.
      controller - The callback object used by this method when creating the SWT menus (used for invoking fill and selection listeners).
    • splitLongMenuListIntoHierarchy

      public static List<Object> splitLongMenuListIntoHierarchy(List<String> flat_entries, int split_after)
      Parameters:
      flat_entries - Overall list of menu entry names
      split_after - Split if more than this
      Returns:
      Entries are either a String or Object[]{ submeuname, List submenu entries }
    • addCommunityChatMenu

      public static void addCommunityChatMenu(org.eclipse.swt.widgets.Menu menu)
    • addChatMenu

      public static void addChatMenu(org.eclipse.swt.widgets.Menu menu, String chat_resource, String chat_key)
    • addChatMenu

      public static MenuItem addChatMenu(MenuManager menu_manager, MenuItem chat_item, MenuBuildUtils.ChatKeyResolver chat_key_resolver)
    • addChatSelectionMenu

      public static void addChatSelectionMenu(MenuManager menu_manager, MenuItem chat_item, String existing_chat, MenuBuildUtils.ChatSelectionListener _listener)
    • addChatSelectionMenu

      public static void addChatSelectionMenu(org.eclipse.swt.widgets.Menu menu, String resource_key, String existing_chat, MenuBuildUtils.ChatSelectionListener _listener)
    • addSeparator

      public static void addSeparator(org.eclipse.swt.widgets.Menu menu)
      Adds a separator if the current last item isn't one already
      Parameters:
      menu -
    • addColourChooser

      public static void addColourChooser(org.eclipse.swt.widgets.Menu menu, String item_resource, boolean can_clear, List<org.eclipse.swt.graphics.RGB> existing, Consumer<org.eclipse.swt.graphics.RGB> receiver)
    • hasOpenWithMenu

      public static boolean hasOpenWithMenu(Object target)
    • addOpenWithMenu

      public static org.eclipse.swt.widgets.MenuItem addOpenWithMenu(org.eclipse.swt.widgets.Menu menu, boolean has_menu, Object target)
    • addMOCHistory

      public static void addMOCHistory(org.eclipse.swt.widgets.Menu moc_menu, Consumer<String> moc_setter)
    • addToMOCHistory

      public static void addToMOCHistory(String path)