IntelliJ Community . PluginManager

 
PluginManager 

HOME INDEX SEARCH CHANGES GO  

Introduction

This plugin provides an interface to view all installed and available plugins and to download available plugins.

This plugin was tested with IDEA #675 and 3.0.4 on Windows 2000.

How To Use

For Plugin Users

Once you download and install the plugin, there will be a "Plugins" section in IDE Settings. From there you can view some details about plugins you currently have installed as well as details about all available IDEA plugins. You can also download available plugins. Downloaded plugins are placed in a "downloadedPlugins" directory under IDEA's home directory (see To Do item below about making this configurable).


NOTE: To set your proxy host:

Add this to your idea.bat right after the "SET JVM_ARGS" line (you'll need to provide the correct proxy host and port)--it's 
line 43 for me:    
set JVM_ARGS= %JVM_ARGS% -Dhttp.proxySet=true    
set JVM_ARGS= %JVM_ARGS% -Dhttp.proxyHost=<proxyHost>    
set JVM_ARGS= %JVM_ARGS% -Dhttp.proxyPort=<proxyPort>    

tip.gif Better still, just set your IDEA_JVM_ARGS environment variable and leave idea.bat unchanged (saves upgrade hassles) wink -- AndrewArmstrong - 04 Dec 2002

tip.gif Or, if you don't have an idea.bat (I didn't in version 3.0.4), alter idea.lax in the idea/bin directory as follows:

    Append -Dhttp.proxySet=true -Dhttp.proxyHost=<proxyHost> -Dhttp.proxyPort=<proxyPort> to the lax.nl.java.option.additional property.
-- AdamWinter - 05 Jun 2003

The Plugin Manager obtains the list of available plugins from a "Plugin Registry", which is simply an XML file (the "idea-plugin-registry.xml" attached below). Clicking "Refresh List" in the Plugin Manager downloads the registry to your machine and updates the list of available plugins.

NOTE: The Plugin Manager will downloaded new plugins into the IDEA_HOME\downloadedPlugins folder. Move it into the plugins dir manually and restart IDEA (this is because some plugins are packaged as jars, some as jars within zips, etc.)

For Plugin Developers

The Plugin Manager retrieves the list of available plugins from the "Plugin Registry"--it's simply an XML file (the "idea-plugin-registry.xml" attached below) that contains information about each plugin. I encourage plugin developers to update this XML file when they create or update their plugins.

To add or update information about your plugin in the Plugin Registry, simply do the following:

  • Download the latest copy of the registry to your machine (e.g. right-click on the attachment link below and select "Save Target As..."). A DTD is available for the registry, too (see the "idea-plugin-registry.dtd" attachment below).
  • Add/update the information about your plugin:
    • If you're adding a new entry, just include a new <idea-plugin>...</idea-plugin> block. It's helpful if you place it in alphabetical order so others can find their plugins more easily in the file.
    • If you're updating an entry for one of your plugins, simply find it in the registry and edit the appropriate fields.
  • Upload the new version of the registry (click on the registry file's "action" link below to go to the update form). That's it! Now all Plugin Manager users will be able to refresh their available plugin list and see your changes.

A typical registry entry looks like this:

   <idea-plugin>
      <name>PluginManager</name>
      <description>
         Provides an interface to view all installed and available plugins and to download
         available plugins.
      </description>
      <version>0.1</version>
      <vendor>Chris Bartley (http://www.chrisbartley.com/)</vendor>
      <idea-version min="3.0" max="3.0"/>
      <docUrl>http://www.intellij.org/twiki/bin/view/Main/PluginManager</docUrl>
      <binUrl>http://www.intellij.org/twiki/pub/Main/PluginManager/PluginManager-0.1.zip</binUrl>
      <srcUrl></srcUrl>
      <lastModified year="2002" month="11" day="10"/>
   </idea-plugin>

You'll probably notice that a registry entry looks a lot like the plugin.xml file you created and bundled with your plugin. That's intentional, to make registry maintenance easier and so the Plugin Manager can easily compare installed and available plugins (e.g. to check for updates).

You should copy the <name>, <description>, <version>, <vendor>, and <idea-version/> tags directly from the plugin.xml file that you bundled with your plugin. The tag values need to match so the Plugin Manager can correctly detect updates.

Fill out the values for the remaining tags as appropriate (don't forget the <lastModified> tag!).

When you're done updating the registry file, please validate it using the DTD to make sure there are no mistakes before uploading.

Known Issues

  • Didn't actually download every plugin and get the vendor/description/etc from the plugin.xml. Just gathered the info from the Wiki. For the version comparison (when implemented) to work correctly, the version in the registry will have to match what's in your plugin.xml, so I'd appreciate any help from plugin authors to make sure the info is correct.
  • Needs refactoring/cleanup/better error handling, etc.
  • I don't know how to get text to flow nicely in Swing widgets, so I'm currently dumping the plugin description into a JEditorPane with text/html content type (so that extra whitespace is ignored). I think it looks kinda weird that the description is in a white box, but the rest of the details aren't. Suggestions on better ways to do this are welcomed and appreciated. Thanks!
  • Would the Options menu be a more appropriate place for the Plugin Manager? (perhaps as simply a "Plugins" menu item to go along with Live Templates, Keymaps, etc.) I'm undecided on this, partially because I'm still not entirely sure what the criteria are for placing something in IDE Settings vs. the Options menu (e.g. to me, Code Styles and Color Schemes could arguably be placed under the Options menu too). Thoughts?
  • Kinda weird that both Installed Plugins and Available Plugins lists can both have selections at the same time (since Plugin Details displays the latest selection). Maybe prevent selections in both at the same time?
  • Ugly interface

To Do

  • Create an icon for the configurable in IDE Settings
  • Show icons for new and updated plugins in the list of available plugins (i.e. make use of the last modified tag in the plugin registry)
  • Provide a way to open browser and go to a plugin's docUrl (right now the docUrl is just appended to the description). But how on earth do you do that in a cross-platform way? I've seen the JavaWorld article, but is that the best way? Is there any way to get the browser path registered in IDEA's IDE Settings?
  • Show min/max targeted IDEA versions in Plugin Detail area
  • Better interface for downloading: better error handling, progress bar, change mouse pointer, etc.
  • Allow user to choose where downloaded plugins will be placed
  • Detect whether file(s) to be downloaded already exist(s).
  • Allow for multiple bin URLs and multiple bin URL groups. Multiple URLs are useful for when the plugin depends on other libs. Multiple groups are useful for, say, providing both .zip and .tar.gz versions.
  • Show some sort of icon for installed plugins when a new version is available (will require parsing and comparison of version numbers)
  • Provide some kind of option to download the source as well (e.g. if made available in a separate zip file).
  • Consider extending various elements in the DTD. E.g., allow multiple vendors, provide support for vendor name, email, URL, etc.
  • Maybe provide an option to automatically update plugin list (daily?) and provide notification when new versions are available.
  • Maybe have a "Developer Mode" checkbox that would provide an extra tab to add/update plugins in the idea-plugin-registry.xml file? I don't know how tricky it'd be to do a form post to the Wiki to update the idea-plugin-registry.xml file without going through the actual Wiki interface. At the very least, provide a simple Swing app (or maybe just another plugin) to help developers view how their plugin(s) will be rendered in the Plugin Manager's Plugin Detail area (so they can add HTML markup to descriptions, etc.).

Feature Requests

  • The lower list [Available Plugins] should exclude plugins in the upper list [Installed Plugins] that are the same version. Ideally, the lower list should only have plugins you do not have at all, and the upper list should indicate which plugins have updates available. (ErbC)
  • I would love a Check for Updates button that not only found updates, but gave me the option to go ahead and install them (ie download the plugin and copy the jar into the plugin directory). The one thing I don't know is how hard it would be to find the jar in whatever your downloading from the site (if it's a .zip, .jar, etc). (TobinJuday)
  • A nice feature to have would be to allow a display of all the Actions exported by an installed plugin. Currently it is difficult to discover all the actions that a given plugin implements without manually reading the plugin.xml file. I think your PluginManager would be a logical place to put this feature. (NathanielColangelo)
    • A good idea, but the only problem is that plugins don't have to declare their actions in plugin.xml. So, the PluginManager could read some of them, but not necessarily all. (ChrisBartley)
  • Perform network connectivity in the separate thread. Downloading of large plugins through slow connnection blocks IDEA for a long periods.

Version History

v 0.1.1 (Nov 11 2002)

  • Corrected a problem with installed plugin detection for plugins whose plugin.xml file references a DTD. Many thanks to SaschaWeinreuter for finding the problem and providing the solution! smile
  • Updated docs

v 0.1 (Nov 10 2002)

  • Initial version

Plugin brainstorming

Please take a look on PluginManagerBrainstorming

-- ChrisBartley - 11 Nov 2002

IntelliJPluginWebForm
IntelliJPluginName:
IntelliJPluginVersion:
IntelliJPluginVendor:
IntelliJPluginBinary:
IntelliJPluginSource:
IntelliJPluginClassification:
TopicClassification: IntelliJPluginPackage
TopicShortDescription: This plugin provides an interface to view all installed and available plugins and to download available plugins.
TestedOnOS:
ShouldRunOnOS:

Attachment: sort Action: Size: Date: Who: Comment:
idea-plugin-registry.dtd action 1015 17 Nov 2002 - 00:09 ChrisBartley Plugin Registry DTD (v 0.1)
idea-plugin-registry.xml action 56270 14 Jul 2004 - 17:22 ThomasKimpton modified : OpenFolder v1.1
PluginManager-0.1.1.zip action 43297 11 Nov 2002 - 14:34 ChrisBartley v 0.1.1

e d i t a t t a c h r e f - b y d i f f s m o r e
Have ideas, requests, problems regarding this site? Send feedback.
Copyright © 2000-2003 by the contributing authors. All materials at intellij.org are the property of the contributing authors.