In this update I'm presenting the work done so far in the plugin management project. First of all, you can check out the source of the project if you want to try. It's in SIP Communicator's SVN under the pluginmgmt branch.
The project consists of making an advanced plugin management system. This system would allow users to add repositories in order to download/install/update the plugins. It would be similar to what you can find in Eclipse IDE / NetBeans and others.
You can see the GUI of what has been done so far in the plugins section (from the configuration window). The first thing you can notice is that it now has tabs! I'll describe what each tab does in the following paragraphs...
Installed tab
This tab represents what could be found in the plugin section before this project. It's basically a list of installed plugins, and a couple of buttons for the different functionalities.
Available tab
This is a brand new tab used to show the available plugins. They are displayed in a tree, with their repository as the parent node. When selecting a resource to download, it's full description will show in the right panel. Many plugins can be downloaded at the same time. The tree allows multiple selections. Once you've chosen your plugins, you click the download button and it's gonna do it in the background. There is a state label with a pretty interesting loading icon showing the status of the download.
Downloaded tab
Once you download plugins, they will be shown in the downloaded tab. From there, you can install one or more of them at the same time. This tab looks very much like the available tab, with the plugins shown as a tree and a panel for the resource description. You can also delete downloaded resources in this tab (downloading won't uninstall installed plugins). If the install is successful, the user will be noticed, and if it's not, the missing requirements will be shown too.
Updates tab
The updates tab shows the currently available or downloaded updates for installed plugins. Once again, it's shown in a tree structure with a panel for the resource information. The first level under the root isn't for the repositories this time, it's for the installed bundles. The leafs are the currently available versions. If an update is "available", clicking the button will download and install it. If the update is "downloaded", it will simply install it. Once again, if there's a problem (like a missing package), the user is noticed.
Repositories tab
This tab is a work in progress. It's used for managing the repositories. Currently, it only allows to add and delete repositories. The URL of an added repository has to point to an XML file with the Felix OBR repository.xml structure.
Search feature
In the Available, Downloaded and Updates tabs, you can see a "Filter" text field at the top. It is used to search within all the plugin shown. In the Available and Downloaded tabs, it searches within the resources names. In the Updates tabs, it searches within the bundles names.
Second part of the project
Many things are left to do for the end of the program. Some parts of the GUI are still very bogus and some functionalities are still missing (refresh buttons and things like this). The most important parts have been implemented, so what's left to do is add functionalities, correct bugs / performance / fail-over issues. The whole OBR service has been overidden in order to provide more functionnalities. That was the core of the project. The remaning features are related to USING those extra functionalities. I also have a bunch of TODOs in my code which I'll have to go through and finish them all. Most of them are for error handling, changing variable/method names, adding functionalities, code formatting. To make it short: expect more for the end of the program!
NOTE : If you want check-out and run the code, you'll need to add some repositories. One of them that is always up is:
http://oscar-osgi.sf.net/obr2/repository.xml
However, the resources on this OBR can't be installed because some requirements are missing.
You can also try my own repository. It's not always up so it won't always work:
http://74.59.129.185:8080/repository/repository.xml
The resources can all be installed. I modified the version numbers of those plugins in the manifest file. That way, you'll see those resources as updates in the tab of the same name. Isn't that great?