Расширения для 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.