Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[mylyn-integrators] Customizing task editor (parts) in Mylyn 3.0

I'm running into some trouble with moving my connector Mylyn 3.0.  I'd
like to leverage more of the Mylyn framework's UI, but that's proving
difficult because much of the "good stuff" is internal.  The repository
to which I connect has over a hundred attributes, custom attributes on
attachments, etc.  (Yeah, it's a bit of a mess.)

This message is a little long, but I'm just trying to describe the
troubles I've had recently and see whether I'm missing something.  If
not, I'm wondering how to proceed.  Do I just file bugs to request more
public access to things that I need?  I'd like to have a robust
connector that doesn't reimplement too much functionality that Mylyn
normally provides.

Let's just look at the attachment attributes first.  If I use the
TaskEditorAttachmentPart, it looks like I only get the few built-in
attributes in the attachment table.  I didn't see how to modify that
table, so I wrote my own part, table, content provider, and label
provider to show all of our attachments' attributes.  

Is that the right approach in this case?  If I write my own attachment
part, I run into a lot of other problems.  For example, I lose the
standard Mylyn attachment table context menu since
TasksUiMenus.fillTaskAttachmentMenu is internal.  I could build my own
menu, but then I can't use the Mylyn actions since those actions are in
TaskUiMenus, too.  Even DownloadAttachmentJob is internal.  So, I
started with, "I want to display these three important custom attachment
attribute in the attachment table," and I ended up with "reimplement all
attachment actions from scratch."  

A second example involves our scores of attributes.  It's unwieldy to
show them all in TaskEditorAttributePart.  We split them up into
multiple parts that group related attributes.  That works well, but then
we have other problems.  I think that my AbstractTaskEditorPage needs to
override createParts() so that I can lay out my new attribute group
parts correctly.  I don't just need to suppress the part that's at
PATH_ATTRIBUTES.  I need to replace it with multiple parts that are
displayed in a multi-column layout.  No problem.  createParts() is
simple, and it's easy to write my own version.  But
AbstractTaskEditorPage.createParts(String,Composite,Collection) is
private (which seems to imply that I wasn't supposed to override
createParts()).  So, I would need to reimplement that method, too.  But
then my ISafeRunnable.run() method won't be able to call part.setPartId
from my package.  I have no idea why the ID isn't just part of the
AbstractTaskEditorPart constructor in the first place.  Gosh, where was
I?  

I really like how much Mylyn 3.0 pulls up into the framework.  It gives
the connector author a lot of functionality for free.  But, at least in
the task editor, it seems like the moment I try to make any
customization, I have to abandon almost everything that Mylyn provides
to a simpler connector.  I'm hoping that wasn't the intent!  :)

--
Tom Bryan <tombry@xxxxxxxxx>
Cisco Systems


Back to the top