Search in sources :

Example 1 with IModuleMenuPlugin

use of com.google.security.zynamics.binnavi.API.plugins.IModuleMenuPlugin in project binnavi by google.

the class CModuleNodeMenuBuilder method addPluginMenus.

/**
   * Adds the plugin-generated menus to the context menu.
   *
   * @param menu The context menu where the menu items are added.
   */
private void addPluginMenus(final JComponent menu) {
    final List<IModuleMenuPlugin> plugins = new ArrayList<>();
    for (final IPlugin<IPluginInterface> plugin : PluginInterface.instance().getPluginRegistry()) {
        if (plugin instanceof IModuleMenuPlugin) {
            plugins.add((IModuleMenuPlugin) plugin);
        }
    }
    boolean addedSeparator = false;
    for (final IModuleMenuPlugin plugin : plugins) {
        try {
            final List<JComponent> menuItems = plugin.extendModuleMenu(getPluginModules());
            if (menuItems != null) {
                for (final JComponent menuItem : menuItems) {
                    if (!addedSeparator) {
                        menu.add(new JSeparator());
                        addedSeparator = true;
                    }
                    menu.add(menuItem);
                }
            }
        } catch (final Exception exception) {
            CUtilityFunctions.logException(exception);
            final String innerMessage = "E00093: " + "Plugin caused an unexpected exception";
            final String innerDescription = CUtilityFunctions.createDescription(String.format("The plugin %s caused an unexpected exception.", plugin.getName()), new String[] { "The plugin contains a bug." }, new String[] { "The plugin probably behaves erroneously from this point on but it remains active" });
            NaviErrorDialog.show(getParent(), innerMessage, innerDescription, exception);
        }
    }
}
Also used : IPluginInterface(com.google.security.zynamics.binnavi.api2.IPluginInterface) IModuleMenuPlugin(com.google.security.zynamics.binnavi.API.plugins.IModuleMenuPlugin) ArrayList(java.util.ArrayList) JComponent(javax.swing.JComponent) JSeparator(javax.swing.JSeparator)

Aggregations

IModuleMenuPlugin (com.google.security.zynamics.binnavi.API.plugins.IModuleMenuPlugin)1 IPluginInterface (com.google.security.zynamics.binnavi.api2.IPluginInterface)1 ArrayList (java.util.ArrayList)1 JComponent (javax.swing.JComponent)1 JSeparator (javax.swing.JSeparator)1