Property Converter 2 Component

I had a meeting with a customer last week and introduced the Property Converter component to them and it quickly became a design discussion.  The result was, I took the OpenNTF project and implemented these changes.  The result is a new hidden component that can have N number of properties defined and you can attach a script (JavaScript) to each of those properties to do transformations or string manipulations.  The other modification is both the new and the old component now stores the scripts in the component data (which now transports with the composite application).  This should greatly reduce the amount of Java code and custom actions many people do to manipulate strings (properties).  This also means any time you need a new transformation you simply create a new property.

Once I get the legal approvals I will be submitting this back to OpenNTF.

New features:

PropertyConverter

  • Now saves the script with the component.
  • Now uses the new API’s for tooling in the CAE
  • The Save button and text field is hidden/readonly in the runtime
  • Test button now publishes the value to the property broker.
  • Added it to the CAE palette under “OpenNTF” category

PropertyConvert2 – brand new component

  • Based on the original concept but allows N number of properties to be created.
  • Each property is associated with its own script.
  • All scripts and properties are stored with the component in the CA.xml
  • The test button publishes the property.
  • Added it to the CAE palette under “OpenNTF” category

Here is a sample of the components in the run time (can be Notes or Expeditor) – realistically these would be hidden so they would be more like service level components.  The red lines show the flow of the wiring and I used a basic web browser component to display the resulting text.  You can imagine these components are hidden and you would only have your normal application components visible and these components doing the transformation.

(click on image to make larger)

propertyconvert2-runtime

Components in the CAE:

Notice the Save buttons and the script is now enabled for editing.  The component “knows” when it is in edit mode and allows the assembler to modify scripts and add properties.

(click on image to make larger)

propertyconvert2-cae

Why you don't have to suck at Eclipse plugins…

My friend and former colleague Juan R. Rodriguez from Everclear Technologies Inc. is offering a 4 day workshop on developing plugins and composite applications for Expeditor 6.2 – which is what Lotus Notes 8.5 is based on.  You can check out the agenda and labs below – you will get a very wide breath of coverage in the Eclipse and Expeditor platform with the principles of componentation and composites applied.  So if you want to impress Nathan or get hired by his team you might want to check out this workshop.

Workshop agenda

  • Workshop Overview
  • Composite Applications
  • OSGi Overview and Architecture
  • Eclipse architecture and the plug-in model, fragments and features, IDE and wizards
  • Expeditor Toolkit and Client for Desktops
  • Creating a Composite Application
  • Eclipse component development – SWT/JFace
  • Component collaboration with Property Broker
  • Fragments
  • Creating Features and Eclipse Update Site
  • Composite Application Editor
  • Integrating existing applications as components
  • Integrating browsers as components to access web applications
  • Browser container components with collaboration
  • Eclipse MVC Programming Design Pattern
  • OSGi and the Event Admin Service
  • Branding applications
  • Personalities
  • Extending the default personality
  • Preferences
  • Integrating AWT/Swing applications
  • Q & A

Workshop hands-on sessions

This hands-on workshop includes the following lab sessions to illustrate how to develop eclipse components and understand what tools can be used to build composite applications:

  • Lab 1 – Hello World and building a composite application
  • Lab 2 – Develop eclipse components using Eclipse IDE
  • Lab 3 – Component collaboration with Property Broker
  • Lab 4 – Creating Fragments
  • Lab 5 – Publishing an Eclipse Update Site
  • Lab 6 – Using the Composite Application Editor
  • Lab 7 – Integrating documents
  • Lab 8 – Integrating web browsers as components
  • Lab 9 – Web browser container
  • Lab 10 – Eclipse MVC Programming
  • Lab 11 – Cooperating components using OSGi Event Admin
  • Lab 12 – Branding your application
  • Lab 13 – Personalities
  • Lab 14 – Extending the default personality
  • Lab 15 – Using eclipse preferences in composite applications

Expeditor's most wanted!

The Lotus Expeditor Wiki is asking for input on anything and everything Expeditor.  The platform under Lotus Notes, Sametime, and Symphony is a very powerful platform based on Eclipse.  If you want to see more education material or postings on API’s, plugins, patterns, or anything related to the Eclipse side of the Lotus products, post your needs here.

Will HTML 5 kill Flash and Silverlight?

Very interesting article over at the InfoWorld site.  It has a lot of valid points and I think if something so standard as “HTML” will provide this stuff then it makes me understand why Microsoft is so reluctant to support HTML 5.

“HTML 5, a groundbreaking upgrade to the prominent Web presentation specification, could become a game-changer in Web application development, one that might even make obsolete such plug-in-based rich Internet application (RIA) technologies as Adobe Flash, Microsoft Silverlight, and Sun JavaFX.” – link

Extending Lotus Symphony

Many probably know that Lotus Symphony is based on Lotus Expeditor and Eclipse but you may not have put two and two together for new opportunities.  You can install pretty much any Eclipse plugin into stand alone Symphony; by default the Eclipse plugin install menu is enabled:

extending-symphony

Now, in Symphony 1.3, there is also support for composite applications.  So if a Notes or Expeditor developer create a .CA file a Lotus Symphony user can open it.  Of course you will have to make sure any features developed for are linked in the .CA file so it can be launched correctly.

compapp-symphony

So from a business partner point you can provide plugins and composite applications for the Symphony product suite.  You can also deploy entire RCP based applications to Symphony.  If you have the coolest plugin you can essentially deploy it to Symphony, Notes, Sametime, and Expeditor installations.

Online Eclipse RCP Training

I was checking my blog this morning for comments and I noticed this Google Ad for Quickstart Eclipse RCP Training so I clicked the link and found a pretty nice venue for Eclipse RCP education.  I often recommend the old RCP book (which is kind of dated at this point) and I think getting a fresh online course is much better considering most of what you can find is on the internet.  Once you get a primer with the basics you will be able to Google for just about anything.  This course looks like it starts in about 2 weeks.

From the site:

Public RCP Quickstart course to be held online, June 24th – 26th, 2009.

Logistics

This course will be held online using the GoToMeeting service. The PDF manual and lab materials will be delivered as an encrypted archive available a few days before the course begins.
The timing of the course is meant to be convenient for students throughout North America, though you’re welcome to take the course from anywhere in the world. The specific course times for the North American time zones are as follows:

  • Eastern: 11am – 6pm
  • Central: 10am – 5pm
  • Mountain: 9am – 4pm
  • Pacific: 8am – 3pm

How can you make a BONES like application?

No “bones” about it, you could definitely make an application like the one Nathan’s team put together but it will not be trivial.  I wish my team could have developed this kind of demo years ago – Notes 8 could have used a first class application like this to demonstrate the power of the Eclipse framework.  This truly is a composite application at its best – mixing the world of Eclipse and Notes so seamlessly you don’t even know its a Lotus Notes based application – congrats!  It is really just an Eclipse RCP application surfaced through the composite application framework.  So even though it doesn’t use wiring, properties, or actions – it uses the CA to surface the RCP application from an NSF and then the application leverages all of the power of Notes that has been there forever.

So what would you need to know in order to create a similar application?  Here are a few pointers you can reference to get started:

  • The Notes.jar API’s.  From what I understand the communication with Notes is almost completely through the Java API’s.  This has challenges in itself because of the threading problems.  So you will also need to understand threading…a few bullets down.
  • SWT programming – ok, you might not have to go to the point Lotus911 did and create all of your own custom controls but you will need to know a good level of SWT programming if you do not intend on using the canned UI from the Notes Java views.  The key here is to look at the JFace stuff and learn how to create Data and Label providers.  If you want some of the low level Notes controls then check out the SWidgets that ship with Notes.  Your controls will then at least be compatible with the Notes themes.
  • The Eclipse Jobs framework – know this in and out.  You really need to understand multi-threading and the Eclipse Jobs framework makes it alot easier then working directly with threads.
  • SWT Layouts – these are a bare, not only in SWT but also AWT/Swing.  They are just very hard to figure out.
  • Eclipse plugin development.  You need to fully grasp plugins, features, and fragments. Especially if you intend on supporting multiple operating systems.  I always recommend this book, which covers jobs, swt, plugins,etc.

The last thing you need is a lot of ambition.  The application these guys put together is nothing short of amazing when you think about how long it took them or just think about the end result and realize its Lotus Notes.

Killer Notes 8 application

I got this from a colleague who received it from another colleague who got it forwarded from someone from Lotus911 – no mention of names.  I figure since its on YouTube I can blog about it.  The application is absolutely beautiful with an amazing user interface.   As Nathan explains it is based on Notes 8 and a Foundations server.  It is an excellent display of using Eclipse Java as the front end to Lotus Notes data and of course it comes with all of the benefits of NSF as Nathan explains.

Great Job Lotus911!

Google Wave, Apache Shindig, and OpenSocial

With the announcement of Google Wave, we now have three distinct camps (maybe more) for creating that new Web 2.0 killer application/component.  We have a lot of consumers of widgets (check out the supported sites) but we have three main API “frameworks”; Microsofts Silverlight, Apache Shindig and now Google Wave.  Shindig and Wave are very similar in the roots (support the same base specifications) and are very compatible at many levels.  There are clear distinction is in the API’s that both platforms support (Wave actually extends OpenSocial) but with the added extensions Wave supports it looks like it has gone a little further in supporting broader real world use cases (Robots, Embedded API).  The great thing about Wave is it does support OpenSocial gadgets and its specification:

“Gadgets, which you may know from OpenSocial, are client-side programs that make it easy to write full applications inside of Google Wave. The neat part is that we’ve introduced an extension to the OpenSocial gadgets API that enables you to take advantage of the collaborative nature of Wave when building a gadget.” – link

Silverlight continues to be very MS like but seems to be gaining a lot of ground – I am seeing more and more job openings for Silverlight developers. Silverlight also supports OpenSocial gadgets and compliments Silverlight very well.

So if you want to start developing base gadgets for these platforms and sites, stick with Open Social gadgets – and since OS Gadgets just require an iFrame you can stick them pretty much in any web page.  You can start developing and debugging these gadgets with the Open Social Development Environment (OSDE) for Eclipse today.  You can even watch the introduction video that walks you through what OSDE can do.