Теперь программа поддерживает плагины.
Для создания плагина потребуется
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.