[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[mylyn-integrators] Better browser-based task editor

Hello Mylyn developers!

I have created small prototype to explore possible integration between
browser-based task editor and rest of Mylyn/Eclipse. I would like to
show it to you (link to video is below), and to get some feedback. I
will use my connector for FogBugz as an example here, but idea is not
restricted to this system only.

For connector that I work on (FogBugz connector), browser-based editor
would actually make lot of sense. Current version of connector uses
task editor based on mylyn UI. This has several problems. Since
FogBugz XML API is not complete, custom task editor can never support
all features known from Web UI. Even though task editor is trying hard
to duplicate stuff known from Web UI, it is far from perfect. Lot of
stuff is missing, some concepts are different in Mylyn than they are
in Web UI (i.e. displaying/uploading attachments, html editing, custom
fields, ...) Also Web UI progresses very fast, and it's very hard to
keep up with it.

For these and some other reasons I have decided to give browser-based
task editor a try. But instead of using BrowserFormPage from Mylyn, my
idea is to integrate browser UI into Eclipse/Mylyn as much as
possible. I have developed a prototype to see how it would work in
practice, and it seems to me, that it might be the way to go forward.

Deep integration is possible thanks to Browser component in SWT, which
supports executing additional Javascript code and calling Java code
from Javascript. Using some javascript, I can integrate FogBugz Web UI
and Eclipse/Mylyn together!

I have recorded small demo for you to see what I mean by this
integration. You can see how FogBugz Web UI and Eclipse/Mylyn work
together:

- When case is first opened, user is not authenticated. My javascript
code detects this situation, and asks connector for username/password
that user already supplied. Then it logs the user in with his
credentials.
- When user edits case in the web UI, my java code asks Mylyn to
refresh associated task.
- When user clicks case reference, instead of changing content of
current browser window, my code opens new Task editor instead (through
Mylyn)
- When user right-clicks on the attachment, we show Mylyn attachment
menu, with features like "Apply Patch..."
- When creating new task from Mylyn, we open FogBugz page for creating
new case. After user submits the case, we tell Mylyn to "convert" it's
associated local task to real task.

See the demonstration here: http://vimeo.com/21166223

What are the benefits of such integration?

First and foremost, task editing uses UI that people know and use
everyday. This is full UI with support for all the bells and whistles
that users are used to, not some limited replacement. Our task list is
still up-to-date, we can work with contexts (through Task list), we
can use nice features related to attachments. With some more hacking,
it would be possible to put missing pieces from Mylyn UI into the web
page (with javascript again): task category combo, attach context
checkbox, ...

There are some cons too... e.g. offline mode doesn't work (although I
think it would be possible to implement some support with a some from
caching proxy) and it works differently than most other connectors.

I am interested to hear what you think about this way of implementing
connector task editor. My prototype code also uses lot of Mylyn
internal API ... would you be interested in exposing required stuff to
make integration like this easier, or is this something you don't like
in principle?

Thank you for your time,
-Peter Stibrany