Расширения для OV SD 4.5 Notifier
Теперь программа поддерживает плагины.

Для создания плагина потребуется API. Плагин должен определить методы интерфейса com.qwertovsky.ovsd45notifier.plugin.Plugin.

 
/**
 * Add items to menu of tray icon.<br />
 * Example:
 * <pre>
 * public void createMenuItem(Menu parent) throws Exception
 * {
 *  MenuItem menuItem = new MenuItem(parent, SWT.CHECK);
 * menuItem.setText(getName());
 * menuItem.setSelection(isEnabled());
 * menuItem.addSelectionListener(new SelectionAdapter()
 *  {
 *   public void widgetSelected(SelectionEvent event)
 *   {
 *    MenuItem item = ((MenuItem)event.getSource());
 *    setEnabled(item.getSelection());
 *   }
 *  });
 * }
 * </pre>
 * @param parent
 * @throws Exception
 */
public void createMenuItem(Menu parent) throws Exception;

/**
 * Method for process service call.<br />
 * Service call put to all plugins. If it's not need to show notification for service call, 
 * function must return FALSE value. It is not stop processing of other plugins. 
 * @param serviceCall
 * @return show notification for this service call or not
 * @throws Exception
 */
public boolean processServiceCall(ServiceCall serviceCall) throws Exception;


/**
 * If plugin is not enabled, {@link #processServiceCall(ServiceCall)} is not invoked. 
 * @return boolean (enabled or not)
 */
public boolean isEnabled();

/**
 * 
 * @return name of plugin
 */
public String getName();

/**
 * Plugin can get logger of application.
 * @param logger
 */
public void setLogger(Logger logger);
 

Плагины загружаются с помощью ServiceLoader. Поэтому в архиве с плагином должен быть файл,

META-INF/services/com.qwertovsky.ovsd45notifier.plugin.Plugin
содержащий полное имя класса плагина.

Пример плагина - это фильтры заявок (https://bitbucket.org/qwertovsky/ovsd45notifierfilterplugin).