Resources for AD201 – How the Jedi’s Do Plug-in Development

As promised, here is the list of resources referenced for the AD201 Lotusphere session.

You can drag and drop the following links to your My Widgets panel in the Notes client:

Attachment Viewer Widget

Mail Rules Widget

Multiple Database Search Widget

Referenced Project links:

Blocking Sex

I reconfigured my router last night and decided to block sites that contain the word “sex” in them. Unfortunately, a very popular WordPress plugin I use on my posts, Sexy Bookmarks, stopped working for me. I guess sex isn’t always a bad thing…

Be Social at Lotusphere, get on Tungle!

I published my Meet the Developers lab schedule on Tungle and the different sessions I will be attending. Do the same to let everyone know where you will be at Lotusphere!

You can install the Eclipse plugin from here using widgets: link

You also check my Tungle.me calendar here.

Plugin Development at Lotusphere

If you have any interest in Eclipse, Java, or plugin development then don’t miss these sessions at Lotusphere 2011!

JMP103 – Jumpstart Your “Jedi Plug-in Development Skills” with the Masters

AD102 – Hacking IBM Lotus Designer (Gently)

AD201 – How the Jedis Do Plug-in Development

BP203 – Leveraging the New Java APIs in IBM Lotus Notes 8.5.1 and 8.5.2

BOF103 – Let’s Talk Plugin Development!

Let me know if I missed any sessions that will be touching Eclipse or plugin development.

Google contributes GUI designer tool to Eclipse!

Wow, perfect timing for our Lotusphere presentation. You can download the tool right from Google or you can read about the functionality it brings.

Tools being donated include the WindowBuilder Java UI design tool as well as CodePro Profiler, a runtime Java analysis gauging factors like memory leaks. Both tools became Google property when the company bought Instantiations in August; they will now become open source projects at Eclipse. WindowBuilder has been used for development related to Standard Widget Toolkit, GWT (Google Web Toolkit), and Swing.

Check out the full article on InfoWorld.

Be careful of inserted version numbers!

You created the worlds best plugin and deployed it to all of your Lotus Notes users so this flashy new view shows in the sidebar.  You rely on some Notes API’s and everything works great on your machine.  You then create your widget’s extension.xml and post it to the widget catalog.   You send out the email the new widget is available.

You wait…you wait…you wait…

You get some good feedback that your new sidebar application works great.

Then, you get a couple of emails saying “your sidebar application isn’t showing up”.  You start asking for errors, logs, console errors, etc.  Nothing seems to show any glaring problems.  Then you start asking, well what version of Lotus Notes are you running?  You get answers like Notes 8.1.2, Notes 8.5, Notes 8.5.1, etc.  Isn’t that the beauty of Notes!  You then realize you yourself are running Notes 8.5.2 and that is what you actually wrote the plugin against – in the Eclipse IDE.  You open up the Manifest.MF to see if there would be any problems.  This is what you see:

Require-Bundle: org.eclipse.core.runtime,
 org.eclipse.ui,org.eclipse.ui.views,
 org.eclipse.core.runtime,
 com.ibm.notes.java.api,
 com.ibm.notes.java.ui,
 com.ibm.notes.client;bundle-version="8.5.2"

Do you see the problem?  The problem is the plugin “com.ibm.notes.client” requires specifically version “8.5.2“.  These means if the plugin does not have the required bundles (and any versions specified) it will not activate in the Eclipse platform.  Now, let’s say this was intentional because you used some new API that was introduced in Notes 8.5.2 – then this is good!  There were no visible “crashes” or problems, the plugin just didn’t start – which is the beauty of OSGI.  If you are not intending this, then you simply need to remove the version restriction:

Require-Bundle: org.eclipse.core.runtime,
 org.eclipse.ui,org.eclipse.ui.views,
 org.eclipse.core.runtime,
 com.ibm.notes.java.api,
 com.ibm.notes.java.ui,
 com.ibm.notes.client

This is actually a huge benefit of OSGI but mixing the plugin installation with widgets can cause some confusing results because there are no errors reported when the widget is installed.  The user thinks everything went “well”.  So in the end, be careful of the the Eclipse IDE, it inserts these version numbers in your manifest automatically.

What do you want to know about plugin development?

Now that we are in for Lotusphere 2011,  we are deciding which topics to include in the plugin Jumpstart and the session during the week.  If you plan on attending either of these and want to provide input to the session please feel free to post your suggestions here!  We have a good set of things we want to cover but its always good to hear what is in demand from the community.

Don’t be shy, email me or post a response here. 🙂

Thanks for all feedback and we hope you take time out of your busy Lotusphere schedule to learn about plugin development!

How the Jedis do plugin development!

Yep, that is the title of our Lotusphere session.  I have the honor of presenting with Mikkel Heisterberg.  Mikkel will also be doing a plugin jumpstart session on Sunday with Ryan Baxter, we will be building off of that and presenting more advanced topics in the Jedi session during the week. In the end, if you have any interest in Eclipse, Java, and plugin development for the Lotus brand products then this is the place for you!

Creating your first plugin in Lotus Notes

A colleague of mine (Ryan Baxter) has created his second video in his development series.  This is a very easy to follow video and the great thing I like about this series is it really shows how to extend Lotus Notes using Eclipse.   It is 14 minutes long and filled with a lot of little tips.   It’s not just basic Eclipse Java, it relates it to Notes!  Ryan has contributed these videos to VideoFest and you can also watch them on YouTube.   Great job Ryan!

This video shows how you can add a right click context menu to a Lotus Notes Java view. Check it out on Ryan’s blog.