lundi 28 juillet 2008

What's new?

So, what has been done during the last 2 weeks of this project? Here's a brief list of the completed tasks:

  • Added the resources strings (French and English)
  • Removed the repositories tab and added +/- buttons at the bottom of the available tree
  • Added KeyListeners to textfields in order to submit via the enter key
  • Available plugins are now removed after being installed
  • Corrected 2 bugs that were there before the project (1 in BrandingActivator, 1 in PluginManagerActivator)
  • Tabs are now Enabled/Disabled when the repositories are loading
  • Added validations on buttons for null pointers
  • Fail-over in AddRepositoryDialog (if you add an XML file that doesn't exist and you close the dialog while it's searching, you won't get a timeout after closing it)

As you can see, it's getting more and more complete as the end of the summer approaches :)

Here are some screenshots of the updates:

Loading repositories and disabled components :

Adding a repository and +/- button :

Unknown remote repository in the tree :

That's it for this week! For next week, I'll do mostly "invisible" stuff, like refactoring variable names and applying the code format...

mercredi 16 juillet 2008

Mid-term update!

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:
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:
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?

vendredi 4 juillet 2008


So...What happened since the last patch...Hmmm...Well, pretty much everything! I didn't have a lot of time to post since the last one, but it's going to change (I'm moving tomorrow so I was planning it and everything). So, here we go:

First of all, about the OBR. We decided to go for the initial idea of the Felix OBR. Plus, I'll provide an interface for the deployment packages (It's not yet in a felix release, but I'm sure I can play with a SNAPSHOT). So I'm hosting an OBR on a local machine. I won't write the IP address now, since I'm moving tomorrow (my IP is going to change).

About the plugin management system now. We chose to make a plugin management system similar to the Netbeans one (different tabs for updates, downloaded plugins, installed, etc). It's pretty advanced as of today. My personnal goals are achieved, even though I ran into some obstacles. I'm glad I had my mentor and SC/Felix communities to help me. The main features have been implemented. You can add/remove repositories, download resources, install them, delete them. I also started the GUI for it. Everything is now available in a branch of SC. You can see it there:

The code is in the plugin called pluginmanager. So, that's it for this week. Come back next week for further updates!