use of com.google.security.zynamics.binnavi.api2.plugins.IPlugin in project binnavi by google.
the class CProjectContainerNodeMenuBuilder method createMenu.
@Override
protected void createMenu(final JComponent menu) {
menu.add(new JMenuItem(CActionProxy.proxy(new CCreateProjectAction(getParent(), database, new CNodeSelectionUpdater(getProjectTree(), findNode())))));
final List<IProjectFolderMenuPlugin> plugins = new ArrayList<IProjectFolderMenuPlugin>();
for (final IPlugin<IPluginInterface> plugin : PluginInterface.instance().getPluginRegistry()) {
if (plugin instanceof IProjectFolderMenuPlugin) {
plugins.add((IProjectFolderMenuPlugin) plugin);
}
}
if (!plugins.isEmpty()) {
menu.add(new JSeparator());
for (final IProjectFolderMenuPlugin plugin : plugins) {
try {
final List<JComponent> menuItems = plugin.extendProjectFolderMenu(getPluginDatabase());
if (menuItems != null) {
for (final JComponent menuItem : menuItems) {
menu.add(menuItem);
}
}
} catch (final Exception exception) {
CUtilityFunctions.logException(exception);
final String innerMessage = "E00089: " + "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);
}
}
}
}
use of com.google.security.zynamics.binnavi.api2.plugins.IPlugin in project binnavi by google.
the class PluginInterface method reloadPlugins.
/**
* Reloads all plugins.
*/
public void reloadPlugins() {
registry.getNative().unloadAll();
NaviLogger.info("Loading built-in plugins...");
final Collection<IPlugin<IPluginInterface>> plugins = new PluginLoader().getPlugins();
for (final IPlugin<IPluginInterface> plugin : plugins) {
registry.addPlugin(plugin);
}
CPluginLoader.loadPlugins(mainWindow.getFrame(), this, registry.getNative(), startPath, ConfigManager.instance());
for (final IPluginInterfaceListener listener : listeners) {
try {
listener.loadedPlugins();
} catch (final Exception exception) {
CUtilityFunctions.logException(exception);
}
}
}
use of com.google.security.zynamics.binnavi.api2.plugins.IPlugin in project binnavi by google.
the class CCriteriaFactory method getConditions.
/**
* Returns all available criterium creators.
*
* @return All available criterium creators.
*/
public List<ICriteriumCreator> getConditions() {
final List<ICriteriumCreator> conditions = new ArrayList<ICriteriumCreator>();
conditions.add(new CTextCriteriumCreator());
conditions.add(new CTagCriteriumCreator(m_tagManager));
conditions.add(new CColorCriteriumCreator(m_graph));
conditions.add(new CIndegreeCriteriumCreator());
conditions.add(new COutdegreeCriteriumCreator());
conditions.add(new CVisibilityCriteriumCreator());
conditions.add(new CSelectionCriteriumCreator());
for (@SuppressWarnings("rawtypes") final IPlugin plugin : PluginInterface.instance().getPluginRegistry()) {
if (plugin instanceof ICriteriaSelectionPlugin) {
final ICriteriaSelectionPlugin cplugin = (ICriteriaSelectionPlugin) plugin;
conditions.add(new CPluginCriteriumCreator(m_view2D, cplugin));
}
}
return conditions;
}
use of com.google.security.zynamics.binnavi.api2.plugins.IPlugin in project binnavi by google.
the class CProjectNodeMenuBuilder 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<IProjectMenuPlugin> plugins = new ArrayList<IProjectMenuPlugin>();
for (@SuppressWarnings("rawtypes") final IPlugin plugin : PluginInterface.instance().getPluginRegistry()) {
if (plugin instanceof IProjectMenuPlugin) {
plugins.add((IProjectMenuPlugin) plugin);
}
}
if (!plugins.isEmpty()) {
boolean addedSeparator = false;
for (final IProjectMenuPlugin plugin : plugins) {
try {
final List<JComponent> menuItems = plugin.extendProjectMenu(getPluginProjects());
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 = "E00088: " + "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);
}
}
}
}
use of com.google.security.zynamics.binnavi.api2.plugins.IPlugin in project binnavi by google.
the class PluginLoader method getPlugins.
@Override
public Collection<IPlugin<IPluginInterface>> getPlugins() {
final List<IPlugin<IPluginInterface>> plugins = Lists.newArrayList();
plugins.add(new PathfinderPlugin());
plugins.add(new CallResolverPlugin());
plugins.add(new LoopSelectionCriteriumPlugin());
plugins.add(new VisualCoveragePlugin());
// Plugins below this line are not supposed to be shipped.
return plugins;
}
Aggregations