Class Plugin

  • All Implemented Interfaces:
    MapFrameListener
    Direct Known Subclasses:
    PluginProxy

    public abstract class Plugin
    extends java.lang.Object
    implements MapFrameListener
    For all purposes of loading dynamic resources, the Plugin's class loader should be used (or else, the plugin jar will not be within the class path).

    A plugin may subclass this abstract base class (but it is optional).

    The actual implementation of this class is optional, as all functions will be called via reflection. This is to be able to change this interface without the need of recompiling or even breaking the plugins. If your class does not provide a function here (or does provide a function with a mismatching signature), it will not be called. That simple.

    Or in other words: See this base class as an documentation of what automatic callbacks are provided (you can register yourself to more callbacks in your plugin class constructor).

    Subclassing Plugin and overriding some functions makes it easy for you to keep sync with the correct actual plugin architecture of JOSM.

    • Field Detail

      • info

        private PluginInformation info
        This is the info available for this plugin. You can access this from your constructor.

        (The actual implementation to request the info from a static variable is a bit hacky, but it works).

    • Constructor Detail

      • Plugin

        protected Plugin​(PluginInformation info)
        Creates the plugin
        Parameters:
        info - the plugin information describing the plugin.
    • Method Detail

      • setPluginInformation

        public void setPluginInformation​(PluginInformation info)
        Sets the plugin information object for this plugin
        Parameters:
        info - the plugin information object
      • getPluginDirs

        public IBaseDirectories getPluginDirs()
        Get the directories where this plugin can store various files.
        Returns:
        the directories where this plugin can store files
        Since:
        13007
      • mapFrameInitialized

        public void mapFrameInitialized​(MapFrame oldFrame,
                                        MapFrame newFrame)
        Description copied from interface: MapFrameListener
        Called after Main.mapFrame is initialized. (After the first data is loaded). You can use this callback to tweak the newFrame to your needs, as example install an alternative Painter.
        Specified by:
        mapFrameInitialized in interface MapFrameListener
        Parameters:
        oldFrame - The old MapFrame
        newFrame - The new MapFrame
      • getPreferenceSetting

        public PreferenceSetting getPreferenceSetting()
        Called in the preferences dialog to create a preferences page for the plugin, if any available.
        Returns:
        the preferences dialog, or null
      • addDownloadSelection

        public void addDownloadSelection​(java.util.List<DownloadSelection> list)
        Called in the download dialog to give the plugin a chance to modify the list of bounding box selectors.
        Parameters:
        list - list of bounding box selectors
      • getPluginResourceClassLoader

        public java.lang.ClassLoader getPluginResourceClassLoader()
        Get a class loader for loading resources from the plugin jar. This can be used to avoid getting a file from another plugin that happens to have a file with the same file name and path. Usage: Instead of getClass().getResource("/resources/pluginProperties.properties"); write getPluginResourceClassLoader().getResource("resources/pluginProperties.properties"); (Note the missing leading "/".)
        Returns:
        a class loader for loading resources from the plugin jar