# Class AbstractPlugin

java.lang.Object
com.lightdev.app.shtm.AbstractPlugin

All Implemented Interfaces:
  `SHTMLPlugin`

public abstract class AbstractPlugin extends Object implements SHTMLPlugin
Base class for plug-ins of application SimplyHTML.

Defines some common methods for reuse in plug-ins. All settings such as dockLocation or activation state of a plug-in are stored persistently in a preferences file with the help of class `Prefs`. The preferences file is valid for the current user, so each user has own plug-in settings.

Menus are constructed with the help of class `DynamicResource`. This class needs menu definitions accessible in a .properties file as described in the API docs of `DynamicResource`. I.e., methods of class `AbstractPlugin` only work as defined herein when accompanied by such .properties file accordingly.

See Also:
  - `DynamicResource`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected boolean`
`active`
status of plug-in
`protected final JComponent`
`c`
component of this plug-in
`protected int`
`dockLocation`
current dock location
`protected JFrame`
`frame`
JFrame for dockLocation=none
`protected String`
`helpMenuId`
the id in the ResourceFile for the help menu of this plug-in
`protected JMenuItem`
`hMenu`
the help menu provided by this plug-in
`protected String`
`internalName`
the internal name of this plug-in
`protected SHTMLPanelImpl`
`owner`
the owner of this plug in
`protected String`
`pluginMenuId`
the id in the ResourceFile for the menu of this plug-in
`protected JMenuItem`
`pMenu`
the plug-in menu provided by this plug-in
`protected final Preferences`
`prefs`
reference for user preferences for this class
`static final String`
`PREFSID_PLUGIN_ACTIVE`
constant for active setting in preferences file
`static final String`
`PREFSID_PLUGIN_DOCK_LOCATION`
constant for dock location setting in preferences file
`static UIResources`
`textResources`
TextResources of plug-in

### Fields inherited from interface SHTMLPlugin

`DOCK_LOCATION_BOTTOM, DOCK_LOCATION_LEFT, DOCK_LOCATION_NONE, DOCK_LOCATION_RIGHT, DOCK_LOCATION_TOP`

## Constructor Summary

Constructors
Constructor
Description
`AbstractPlugin()`
construct an AbstractPlugin

## Method Summary

Modifier and Type
Method
Description
`protected void`
`createFrame()`
create a frame for the component of this plug-in, if it has a JComponent to display.
`protected void`
`createFrameAsNeeded(int location)`
create, show or hide frame as needed, depending on a given dock location
`protected void`
`createHelpMenu()`
create the help menu
`protected void`
`createPluginMenu()`
create the plug-in menu
`JComponent`
`getComponent()`
get the component that this plug-in produces, if any
`int`
`getDockLocation()`
get the location the component returned by getDockComponent() shall be docked at.
`String`
`getGUIName()`
get the name of the plug-in as it shall appear on a GUI.
`JMenuItem`
`getHelpMenu()`
get a menu item providing documentation about this plug-in.
`String`
`getInternalName()`
get the name used internally for this plug-in
`SHTMLPanelImpl`
`getOwner()`
get the owner of this plug-in
`Action`
`getOwnerAction(String cmd)`
get an action from the resource bundle of the owner of this plug-in
`String`
`getOwnerResString(String nm)`
get a string from the resource bundle of the owner of this plug-in
`JMenuItem`
`getPluginMenu()`
get a menu of actions this plug-in provides.
`void`
`initHelpMenu()`
`void`
`initPlugin(SHTMLPanelImpl owner)`
init the plug-in this is called by the PluginManager directly after instantiating the plug-in
`void`
`initPlugin(SHTMLPanel owner, String internalName, String pluginMenuId, String helpMenuId)`
initialize the plugin
`boolean`
`isActive()`
get the status of the plug-in
`void`
`setDockLocation(int location)`
set the location the component returned by getDockComponent() shall be docked at.
`void`
`setOwner(SHTMLPanelImpl owner)`
set the owner of this plug-in
`void`
`setStatus(boolean isActive)`
set status of plug-in and persistently store setting in a preferences file

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface SHTMLPlugin

`initPlugin, showInitialInfo`

## Field Details

### textResources

public static UIResources textResources
TextResources of plug-in

### PREFSID_PLUGIN_ACTIVE

public static final String PREFSID_PLUGIN_ACTIVE
constant for active setting in preferences file

See Also:
  - Constant Field Values

### PREFSID_PLUGIN_DOCK_LOCATION

public static final String PREFSID_PLUGIN_DOCK_LOCATION
constant for dock location setting in preferences file

See Also:
  - Constant Field Values

### internalName

protected String internalName
the internal name of this plug-in

### pluginMenuId

protected String pluginMenuId
the id in the ResourceFile for the menu of this plug-in

### helpMenuId

protected String helpMenuId
the id in the ResourceFile for the help menu of this plug-in

### pMenu

protected JMenuItem pMenu
the plug-in menu provided by this plug-in

### hMenu

protected JMenuItem hMenu
the help menu provided by this plug-in

### active

protected boolean active
status of plug-in

### dockLocation

protected int dockLocation
current dock location

### c

protected final JComponent c
component of this plug-in

### frame

protected JFrame frame
JFrame for dockLocation=none

### prefs

protected final Preferences prefs
reference for user preferences for this class

### owner

protected SHTMLPanelImpl owner
the owner of this plug in

## Constructor Details

### AbstractPlugin

public AbstractPlugin()
construct an AbstractPlugin

Constructor may not have parameters so that java.lang.Class.newInstance can be used on it.

## Method Details

### initPlugin

public void initPlugin(SHTMLPanelImpl owner)
init the plug-in this is called by the PluginManager directly after instantiating the plug-in

### createPluginMenu

protected void createPluginMenu()
create the plug-in menu

### createHelpMenu

protected void createHelpMenu()
create the help menu

### initHelpMenu

public void initHelpMenu()

Specified by:
  `initHelpMenu` in interface `SHTMLPlugin`

### createFrame

protected void createFrame()
create a frame for the component of this plug-in, if it has a JComponent to display.

### createFrameAsNeeded

protected void createFrameAsNeeded(int location)
create, show or hide frame as needed, depending on a given dock location

Parameters:
  `location` - the dock location of the plug-in, one of DOCK_LOCATION_TOP, DOCK_LOCATION_BOTTOM, DOCK_LOCATION.LEFT, DOCK_LOCATION_RIGHT or DOCK_LOCATION_NONE, if the component shall not dock.

### initPlugin

public void initPlugin(SHTMLPanel owner, String internalName, String pluginMenuId, String helpMenuId)
initialize the plugin

Parameters:
  `owner` - the owner of this plug-in
  `internalName` - the internal name this plug-in shall have
  `pluginMenuId` - the id of the plug-in menu in the TextResources, or null if no plugin-in menu is to be created
  `helpMenuId` - the id of the help menu for this plug-in in the TextResources, or null if no help menu is to be created

### setOwner

public void setOwner(SHTMLPanelImpl owner)
set the owner of this plug-in

Specified by:
  `setOwner` in interface `SHTMLPlugin`
Parameters:
  `owner` - the main frame of the instance of SimplyHTML creating the plug-in

### getOwner

public SHTMLPanelImpl getOwner()
get the owner of this plug-in

Specified by:
  `getOwner` in interface `SHTMLPlugin`
Returns:
  the owner of this plug-in

### setStatus

public void setStatus(boolean isActive)
set status of plug-in and persistently store setting in a preferences file

Specified by:
  `setStatus` in interface `SHTMLPlugin`
Parameters:
  `isActive` - indicates whether or not the plug-in shall be activated

### setDockLocation

public void setDockLocation(int location)
set the location the component returned by getDockComponent() shall be docked at. Persistently store setting in a preferences file.

Specified by:
  `setDockLocation` in interface `SHTMLPlugin`
Parameters:
  `location` - the dock location, one of DOCK_LOCATION_TOP, DOCK_LOCATION_BOTTOM, DOCK_LOCATION.LEFT, DOCK_LOCATION_RIGHT or DOCK_LOCATION_NONE, if the component shall not dock.

### getPluginMenu

public JMenuItem getPluginMenu()
get a menu of actions this plug-in provides.

`JMenu` is a descendant of `JMenuItem` so this method may return a single menu item up to a whole structure of submenus in its return value.

Specified by:
  `getPluginMenu` in interface `SHTMLPlugin`
Returns:
  the plug-in menu

### getHelpMenu

public JMenuItem getHelpMenu()
get a menu item providing documentation about this plug-in.

`JMenu` is a descendant of `JMenuItem` so this method may return a single menu item up to a whole structure of submenus in its return value.

Specified by:
  `getHelpMenu` in interface `SHTMLPlugin`
Returns:
  a menu item with help for this plug-in

### getGUIName

public String getGUIName()
get the name of the plug-in as it shall appear on a GUI.

Specified by:
  `getGUIName` in interface `SHTMLPlugin`
Returns:
  the name of the plug-in

### getInternalName

public String getInternalName()
get the name used internally for this plug-in

Specified by:
  `getInternalName` in interface `SHTMLPlugin`
Returns:
  the internal name of this plug-in

### getDockLocation

public int getDockLocation()
get the location the component returned by getDockComponent() shall be docked at.

Specified by:
  `getDockLocation` in interface `SHTMLPlugin`
Returns:
  the dock location, one of DOCK_LOCATION_TOP, DOCK_LOCATION_BOTTOM, DOCK_LOCATION.LEFT, DOCK_LOCATION_RIGHT or DOCK_LOCATION_NONE, if the component shall not dock.

### getComponent

public JComponent getComponent()
get the component that this plug-in produces, if any

Specified by:
  `getComponent` in interface `SHTMLPlugin`
Returns:
  the component produced by this plug-in, or null if none is produced

### isActive

public boolean isActive()
get the status of the plug-in

Specified by:
  `isActive` in interface `SHTMLPlugin`
Returns:
  true, if activated, false if not

### getOwnerResString

public String getOwnerResString(String nm)
get a string from the resource bundle of the owner of this plug-in

Specified by:
  `getOwnerResString` in interface `SHTMLPlugin`
Parameters:
  `nm` - the name of the string resource to get
Returns:
  the string with the given name or null, if none is found

### getOwnerAction

public Action getOwnerAction(String cmd)
get an action from the resource bundle of the owner of this plug-in

Specified by:
  `getOwnerAction` in interface `SHTMLPlugin`
Parameters:
  `cmd` - the name of the action to get
Returns:
  the action with the given name or null, if none is found