Presentations in Eclipse

I’ve been tinkering on-and-off for a couple of years on some Eclipse-based presentation software. My primary motivation is my distrust of existing presentation software. Curiously, I get a new head of steam on the “project” every time PowerPoint or Open Office fries one of my documents. Last week was one of those times.

The effort has been two-fold. Actually laying out slides is probably a pretty obvious first target. I’ve been using draw2d from GEF for this and have had some success. One of the things that drives me nuts about existing presentation software is the whole WYSIWYG editing paradigm. Frankly, I hate pushing pixels around to make stuff look right and to simply fit on a slide. Open Office is particularly annoying in this regard; in some of my presentations, the title is in a different place on almost every slide and, frankly, I can’t be bothered to spend the time to tweak each slide to make it right. Most of my effort in this area has been to automate the assembly process as possible.

Some of my effort has been around just making stuff automatically fit. I just specify a bunch of bullets, and slide render makes it fit by reducing the font size until everything fits. Its a simple algorithm, but it works. Want to add a picture? No problem, a few simple rules govern the placement and the text just flows around it. Graphics inside text is also easy using draw2d (the text management stuff is quite awesome).

The missing piece as always been the mechanism for editing slide content. A while back it occurred to me that content can just be specified using wiki markup. For example:

=Slide One Title=
* Bullet one
* Bullet two

=Slide Two Title=
* Bullet three
** Nested bullet one
** Nested bullet two
* Bullet four

The basic idea is that the heading, denoted by the equals sign (=), the slide title. Everything between this heading and the next is the content of the slide. The second slide shows a picture that will be rendered to the right of the bullets. I envision adding support for some other tags. For example, [[Method:/MyProject/src/org.eclipse.stuff.MyClass#myMethod()]] will render the contents of the specified method on the slide (taken live out of the workspace). I’m not quite there yet, but I think it’d be cool.

Using the wiki-style text will make it easier to collaborate, track changes, change templates, borrow slides from other presentations (imagine an “include slides” markup), and more. My presentations will just be projects in my workspace (images are found relative to the markup file). Most of my images are screen shots anyway, so they’ll be easy to include. More interesting images can be created with GIMP, or possibly with an SVG editor (I’ve read that GEF provides some SVG import support that I need to look into).

I’ve decided on using the MediaWiki markup for this as it’s what we use on Eclipsepedia, so I’m already familiar with it.

The best part is that most of the work has already been done. The WikiText SOC project (completed under the supervision of the Mylyn project) has implemented a Wiki parser that I’ve managed to leverage. I haven’t looked at the editors yet, but I imagine they’ll be helpful as well.

My intent is to clean up the code and contribute it to the Examples project. The initial version will provide basic image and text support. At some point in the future, I’ll sort out the method displaying option, and look into things like table support. I’ll post some pictures in the coming week.

In the meantime… is this a crazy idea?

This entry was posted in Uncategorized. Bookmark the permalink.

8 Responses to Presentations in Eclipse

  1. Wayne Beaton says:

    Hi Eugene. I was inspired by the Takahashi method on my last speaking engagement. For my Ericsson R&D PM&T conference keynote, all my slides had 1-3 words on them over some kind of background image. It worked well. The difference is that you have to prepare more; but I think the audience is better for it.

    One of the original inspirations for this effort was an HTML-based presentation by Chris Laffra I saw about 4 years ago. While that is interesting, it is hardly a showcase of Eclipse technology. That and some of the cool things I’d like to do with this are made possible with it being Eclipse-based.


  2. Alex Blewitt says:

    Before you go too far along those lines, you might want to look at SliTeX, which is a slide-focussed derivative of (La)TeX. That uses declarative formatting which can be typeset into PDF as well as other forms. If you’re not familiar with those, you might find it overkill and/or too deep to go into.

    Another variant is just have them as (x)html, and use appropriate styles to format the slides. See HTML Slidey for an example (

    And whilst you’re at it, you might want to consider DocBook’s slides support. There’s also an XSL which can translate that into Apple Keynote presenters.

    Whatever you do, I’d recommend that you target the resulting format to be playable in one of the shower apps (powerpoint/keynote/pdf). There’s nothing worse than having a format which is only playable in a niche player (flash?). Like it or not, PowerPoint is a standard (and with the new Office 10 stuff, you can generate it via XSL too), but PDF for an output mechanism (if you’re not going down the XHTML route) is a good alternative.

    Lastly, I did this kind of thing for years. PowerPoint always won out in the end. Whilst it might be fun to play with GEF, you’re not going to get much traction for end-user presentations, not the least of which is hooking up all the things that presenters actually use (see title of slides upcoming, use dedicated hardware dongles for ‘forward’ and ‘back’, show second screen on second monitor, add timing, use voice narration …). I’ll bet your solution will do ‘the basics’, but unless you’re going to invest a huge amount of time/money, it’s always going to be missing ‘that one feature’ which makes Powerpoint the de facto standard.

  3. Wayne Beaton says:

    Thanks for the info Alex. Honestly, the main point is not to build the next great bit of presentation software. If this were the point, I’d have finished years ago (either finished as in have written the software, or finished as in given up). It’s my job (at least its a big part of it) to understand as much as possible about the various Eclipse technologies so that I can talk intelligently and convincingly about them. It’s been my experience that having something “real” to work on is a great way to learn how to use technology. I don’t intend to compete with PowerPoint, just build an example of how you might go about exploiting some Eclipse technologies. If I can scratch a creative itch at the same time… all the better.

    Maybe once the XULRunner CQ is passed, I might consider something HTML based…

  4. Dave Carver says:

    Another possibility would be the new Incubator project in WTP, VEX (visual editor for XML). Basically given an XML format, you write a CSS stylesheet, and VEX lets you do WYSIWYG editing. Could possibly be used to also do simple presentations, and has been mentioned, you can then use XSLT to convert it to the final version or into another standardized format.

  5. Karl Trygve Kalleberg says:

    Your approach doesn’t sound very different from MagicPoint [1], which is a very easy-to-use presentation program for X11 based on a wiki-like markup. Of course, you’d be leveraging the Eclipse stack, whereas MGP is based on somewhat older technology;)

    I’ve sometimes been putting MGP to good use. When you have simple presentations with few pictures and a bit of text, MGP is great. My only concern with MGP is the limited selection of styles. If you went down the XHTML/CSS route, I’m sure people using your “demo” would eventually contribute some styles back upstream.


  6. Mark Melvin says:

    Sounds similar to Bruce:

    Bruce does all you describe and more, and it’s in Python so it’s even better.😉

  7. David Green says:

    That’s an interesting application of wiki markup. Have you thought about converting it to PPT or Keynote? That might make presentation easier. WikiText uses the Document Builder design pattern, so it’s feasible to do it using the available APIs (providing of course that you know enough about the output format).

    I’m interested to hear about how this went for you.

    BTW, the Mylyn WikiText project was a contribution of Textile-J ( to Mylyn, not from the Google SOC as you stated above.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s