Plugin development

Revision as of 3 July 2014 15:05 by sannanordgren (Comments | Contribs) n


Contents

Extending jAlbum

Skins extend the way jAlbum presents albums. Plugins extend the jAlbum application itself. Here is how it works and how you make your own extensions using jAlbum's Plugin API.

A word on the wording

We're talking about "extensions" and "plugins" here so we'd better explain the terminology: A plugin is a certain type of jAlbum extension that implements the JAlbumPlugin interface. All jAlbum plugins are therefore extensions, but not all extensions are plugins. An extension is a way of packaging code so jAlbum can install it with a simple double-click just like skins are installed. You could for instance package a jAlbum image filter as a jAlbum extension for easy installation.

Possibilities

Being Java code, a plugin can do virtually anything you can do in Java. A plugin is able to interact with jAlbum objects like its UI and album making engine AlbumBean. It can for instance modify how jAlbum creates and scales images.

A plugin can hook itself into jAlbum's UI in various ways. jAlbum already comes with several plugins installed:

  • As menu items under jAlbum's Tools menu. The "Skin development" menu and its JTextPad editor is a plugin
  • As menu items under jAlbum's File->Import menu.
  • As a context menu item, when right clicking album objects. The "Print" item is a plugin
  • To a keyboard hotkey. Pressing F3 will launch the "Instant preview" plugin
  • As a tab of jAlbum's edit view. The "Camera" tab is a plugin
  • As an image filter. The image filters/tools visible in jAlbum's edit mode are also plugins

Packaging and installing

A jAlbum plugin is usually packaged as .jaext (jAlbum Extension) file so it can be installed into jAlbum by double clicking it, or dropping it onto jAlbum (v9.4 and above). A .jaext file is simply a .jar file renamed to .jaext, and a .jar file by the way is simply a bunch of zipped java class files. Extensions end up installed in the "ext" folder of jAlbum's new centralized config folder. This way they survive jAlbum updates. During development, they can also be added as plain class files to jAlbum's "plugins" folder.

glödlampa.png

We plan on setting up a central repository for extensions just like we have for skins. In the meantime, please submit your extensions to us and you will get to blog about them in our blog (If they're good, that is ;-) ).