Friday, March 12, 2010

PerforceNB 1.0.3 beta release

PerforceNB is a Perforce version control client for NetBeans IDE.

Today I released the version 1.0.3 which I consider is a beta quality release.

The features available for 1.0.3 are:

  • Connection configuration, multiple connection, each project can have its own connection
  • Colored labels and version information in Project View, File View (local and depot revision)
  • Implemented actions:
    • Manage / Unmanage by perforce (on projects)
    • Add
    • Edit
    • Delete
    • Revert
    • Revert unchanged
    • Refresh (don't sync, just refresh the cache below and redraw the interface)
    • Diff against have revision
    • Submit (works only with default change list)
    • Manage connections (creates, edits multiple connections) 
    • Sync action (on selected file/files/folders/project). You can sync from the latest version or from a specific changelist. 
  • Out of sync decoration for updated files with different revisions
  • Cache is now persisted on local storage when NetBeans is closed, and is reloaded from local storage when NetBeans open projects. Now there is no need to query Perforce server when NB starts for every project. This is a big improvement when we have many projects, loading is very fast.
  • Ignored files management (rules for all projects). (In the next version will be added support for ignored files based on mask and on absolute paths.)
  • Automated actions (add, edit, delete, move)
  • Option to enable/disable the automated actions
  • Icon marking projects managed by perforce system (enable/disabled depending if there are pending actions or not).
  • a lot of bug fixes 
You can download  and read about on PerforceNB Home page.

    Monday, March 8, 2010

    Five things I like most at NetBeans Platform 6.8

    NetBeans 6.8 is there since December 2009. It did not look like a very important upgrade at first. At least not very important for Platform developers. But using the new version of platform, some things which may appear small at first, has been visibly improved. The most important improvements are listed here (according to my personal feelings). For a complete overview of changes in platform API you can take a look here.

    Wrapped libraries
    That was one of the major headaches source. Developing modules for NetBeans (as for other platforms) requires sometimes links to other libraries. Third-party libraries, other than the modules provided by the platform, needs to be linked and wrapped in your custom pluggins or platform-based applications.

    Wrapping libraries was done in the past in two ways. By creating a module library wrapper plugin for every library which need to be imported. But when you have to link a bigger library, which have a lot of jars, that was a pain. Because a module library wrapper could be created only for one jar. You can end up with easy to have twenty-thirty libraries only to link to something like apache logging libraries or Seam or similar.


    The second approach was to create a big jar with all jars from library. For this operation, NetBeans is helpfull, but you have other two problem to solve. First is that the new jar will have it's own manifest. That means that if there is information in manifest files of every jar, that information is lost or not complete. If that information is important, you have a nice problem to solve. The second is that you can loose control over which libraries you have, which versions. Become very difficult in time to maintain the upgrades.

    Solution is the new wrapped libraries feature. Now each plugin module in NetBeans can have it's own dependencies on external libraries. For configuration, you have a new tab panel to add as much as needed libraries. The cool thing is that you can specify also the source code and javadocs for every wrapped jar. That was not possible in the old versions.

    ActionListeners are everywhere

    That could not look as important as it is. In the old versions you could use ActionListeners only for always enabled type of actions. Not you can use the same interface also for context aware and callback action types. That is really cool, even it does not sounds like that at first. A main aspect here is that it is used a "well known" interface.

    The first consequence is that if you want to migrate a swing-based app on NetBeans platform, is easier because you just have to pipe your actions. The second consequence is that you don't have to use specific platform interfaces like cookies. I don't say that cookies were bad, but they are old and there is better and much usable alternative.



    Declarative Asynchronous actions

    That's small, but makes code cleaner and flexible. Also throws away the need to manage yourself the asynchronous behavior of your actions. Nice done.

    Enhanced IO API


    We already had colors and links. And it was very useful. But now is even more flexible.

    You can color the output as you like because you can output with IOColorPrint.print. So you can made your output lines from peaces colored independently. You can also put more hypelinks on the same line. You can, again, add an importance marker, which improves readability on verbose outputs. Finally, you can specify the parent of an IOTab and set its icon and tooltip message. All of them are small things, but used together can be very helpful on creating really effective and friendly output for your application. I appreciate very much an application which let you know what is going on.

    Annotations

    That's not a specific point. There are some very useful annotations added. The point is, thought, not the specific annotations added. But the trend to use as much as possible annotations. I hope that this trend will continue. I already used @OptionsPanelController.SubRegistration and @ConvertAsJavaBean. But there are more, take a look.

    Copyright

    Creative Commons License Java Sign Blog Content by Aurelian Tutuianu is licensed under a BY-NC-SA.