Community
Participate
Working Groups
Currently, we allow only a single association between a model provider and content extension. It would be good to also support the contribution of actions from third parties. Use of object contributions is dangerous as existing contributions may assume that the target elements (IResource or otherwise) exist and this is not the case in a model sync. The best approach appears to support the declaration of an actionProvider that is team aware (without an association to a modelProvider). We would need to work out the interation between these independant acitons and the active buffer.
Not for 3.2
*** Bug 142275 has been marked as a duplicate of this bug. ***
Great to see this on for 3.3 M1. I think that this is important item for 3.3 because it is bad for the Platform to be removing extensibility (e.g. Mylar bug 138303). A custom actionProvider seems fine, and I assume that we will be able to add contributions per object type via specifying an enablement?
The way I see it working is that you would define a Common Navigator action provider and use another exension point to associate it with Team synchronizations. The CN action provider extension point supports the use of enablement rules so you could specify which objct types your actions apply to.
Sounds very good to me (I've been using the CN actionProvider extension point for custom navigatorContent).
Actually, I have determined that you can add third party actions without any modifications to the 3.2 code base. First you need to define an action provider. <extension point="org.eclipse.ui.navigator.navigatorContent"> <actionProvider class="org.eclipse.team.examples.model.ui.mapping.ThirdPartyActionProvider" id="org.eclipse.team.examples.model.ThirdPartyActionProvider"> <enablement> <adapt type="org.eclipse.core.resources.mapping.ResourceMapping"/> </enablement> </actionProvider> </extension> Then you ned to bind it to a particular synchronization type. Here's how to bind it to the CVS workspace synchronization. <extension point="org.eclipse.ui.navigator.viewer"> <viewerActionBinding viewerId="org.eclipse.team.cvs.ui.workspaceSynchronization"> <includes> <actionExtension pattern="org.eclipse.team.examples.model.ThirdPartyActionProvider"/> </includes> </viewerActionBinding> </extension> I have released to HEAD an example action provider in the org.eclipse.team.examples.filesystem plugin.
Beautiful. Thanks for the clear pointers Michael, I added the actionProvider as above and Mylar bug 124882 is now resolved. This has turned from a concern about Platform foregoing extensibility into a very nice story about how the consistency of Team using the Common Navigator framework means that third parties can make use of the extensibility of that framework. So I'm tagging it as greatbug (wouldn't it be nice if more greatbugs resolved themselves...). Feel free to remove the tag if you disagree, but thanks to the pains I have gone through extending the 'extensible' NetBeans, JBuilder, and VS, I have come to put great value on Eclipse's *ease* of extensibility and see it as key to a platform that drives innovation.