## The QuickNotepadPlugin Class

The major issues encountered when writing a plugin core class arise from the developer's decisions on what features the plugin will make available. These issues have implications for other plugin elements as well.

- Will the plugin provide for actions that the user can trigger using jEdit's menu items, toolbar buttons and keyboard shortcuts?

- Will the plugin have its own visible interface?

- Will the plugin have settings that the user can configure?

- Will the plugin respond to any messages reflecting changes in the host application's state?

Recall that the plugin core class must extend `EditPlugin`. In QuickNotepad's plugin core class, there are no special initialization or shutdown chores to perform, so we will not need a `start()` or `stop()` method.

The resulting plugin core class is lightweight and straightforward to implement:

-     public class QuickNotepadPlugin extends EditPlugin {
          public static final String NAME = "quicknotepad";
          public static final String MENU = "quicknotepad.menu";
          public static final String PROPERTY_PREFIX
              = "plugin.QuickNotepadPlugin.";
          public static final String OPTION_PREFIX
              = "options.quicknotepad.";

  First we define a few static `String` data members to enforce consistent syntax for the name of properties we will use throughout the plugin.

-         public void createMenuItems(Vector menuItems) {
              menuItems.addElement(GUIUtilities.loadMenu(MENU));
          }

  This implementation of the `EditPlugin.createMenuItems()` method is very typical. It uses a jEdit utility function to create the menu, taking the list of actions from the `quicknotepad` property, and the label from `quotenotepad.label`.

  If the plugin only had a single menu item (for example, an item activating a dockable window), we would call `GUIUtilities.loadMenuItem()` instead of `GUIUtilities.loadMenu()`.

-     public void createOptionPanes(OptionsDialog od) {
              od.addOptionPane(new QuickNotepadOptionPane());
          }

      }

  This implementation of the `EditPlugin.createOptionPanes()` method adds a new instance of `QuickNotepadOptionPane` to the given instance of the Global Options dialog box.