Community
Participate
Working Groups
There have been several requests for reuse of Mylyn UI components such as notification popups. Currently this requires adding a dependency on the org.eclipse.mylyn_feature which pulls in additional dependencies and adds UI contributions or adding a plug-in dependency which can cause provisioning problems. Also with several new sub-projects being added additional feature will need to be created. This provides a good opportunity to review the current decomposition and to consider splitting features into more fine grained components that can be consumed by integrators.
Proposal for commons plug-ins to support better reuse: bc. org.eclipse.mylyn.commons.core org.eclipse.mylyn.commons.editor (ui components, org.eclipse.ui.editor dependency) org.eclipse.mylyn.commons.forms (ui components, org.eclipse.ui.forms dependency) org.eclipse.mylyn.commons.http (replaces org.eclipse.mylyn.commons.net) org.eclipse.mylyn.commons.net (deprecated to re-export of required httpclient bundles) org.eclipse.mylyn.commons.notifications (notifications framework) org.eclipse.mylyn.commons.repositories (repositories core) org.eclipse.mylyn.commons.screencapture (screen capture wizard) org.eclipse.mylyn.commons.soap org.eclipse.mylyn.commons.team (team repositories view, repository ui) org.eclipse.mylyn.commons.ui (ui components, minimal dependencies) org.eclipse.mylyn.commons.workbench (ui components, org.eclipse.ui.workbench dependency) org.eclipse.mylyn.commons.xmlrpc
Looks good. Suggested changes: * Make ..commons.forms a part of ..commons.edtior until we have a concerete use case to separate the dependencies * Make ..commons.workbench part of ..commons.ui if there isn't a compelling enough case yet
Also consider merging ..commons.repositories with ..commons.core
Thanks for the input. Here is another pass at this: *Core* bc. org.eclipse.mylyn.commons.core error reporting, utility classes org.eclipse.mylyn.commons.http HTTP support, replaces org.eclipse.mylyn.commons.net org.eclipse.mylyn.commons.net deprecated due to re-export of httpclient org.eclipse.mylyn.commons.repositories repositories core, proxy service, authentication service org.eclipse.mylyn.commons.soap SOAP support org.eclipse.mylyn.commons.xmlrpc XML-RPC support *UI* bc. org.eclipse.mylyn.commons.notifications notifications framework: preference page, extension point org.eclipse.mylyn.commons.ui UI components, dependency on org.eclipse.ui org.eclipse.mylyn.commons.team Team Repositories view, dependency on org.eclipse.ui.navigator For the future we could consider splitting out some of the UI components to improve reuse in RCP scenarios: bc. org.eclipse.mylyn.commons.capture screen capture component org.eclipse.mylyn.commons.editor UI components that depend on org.eclipse.ui.editor org.eclipse.mylyn.commons.jface UI components that depend on SWT/JFace only
The reason why I would like to keep the repositories plug-in separate from core is due to the dependencies on network and authentication related services such as the proxy service and secure storage which would impact reuse other plug-ins that depend on core. To encourage reuse of o.e.m.common.ui I would like to establish the constraint that it does not contribute anything to the UI but only provides reusable UI components. Therefore the notifications and team support is in separate plug-ins that contribute views and preference pages.
For future I'd rename "..mylyn.commons.capture" to "..mylyn.commons.screenshots" or something like that.
Created attachment 177670 [details] org.eclipse.mylyn.commons.screenshots plug-in
Created attachment 177671 [details] extension that embeds screenshot viewer in view
The attachment contains a plug-in that provides a ScreenshotViewer class. It basically wraps a ViewForm that provides the capture and editing capabilities. If anyone cares I'd be happy to commit this to make the screen capturing component easier to reuse.
To ensure that dependencies on Mylyn Commons are properly updated and are easily consumable we should create features for each component in commons: *org.eclipse.mylyn.commons* pre. org.eclipse.mylyn.commons-feature org.eclipse.mylyn org.eclipse.mylyn.commons.core org.eclipse.mylyn.commons.screenshots org.eclipse.mylyn.commons.tests org.eclipse.mylyn.commons.ui *org.eclipse.mylyn.commons.activity* pre. org.eclipse.mylyn.commons.activity-feature org.eclipse.mylyn.commons.activity.tests org.eclipse.mylyn.commons.activity.ui *org.eclipse.mylyn.commons.http* pre. org.eclipse.mylyn.commons.http-feature org.eclipse.mylyn.commons.http.core *org.eclipse.mylyn.commons.identity* pre. org.eclipse.mylyn.commons.identity-feature org.eclipse.mylyn.commons.identity.core org.eclipse.mylyn.commons.identity.ui *org.eclipse.mylyn.commons.net* (deprecated) pre. org.eclipse.mylyn.commons.net-feature org.eclipse.mylyn.commons.net org.eclipse.mylyn.commons.xmlrpc org.eclipse.mylyn.commons.soap *org.eclipse.mylyn.commons.notifications* pre. org.eclipse.mylyn.commons.notifications-feature org.eclipse.mylyn.commons.notifications.ui *org.eclipse.mylyn.commons.repository* pre. org.eclipse.mylyn.commons.repository-feature org.eclipse.mylyn.commons.repository.core org.eclipse.mylyn.commons.repository.ui *org.eclipse.mylyn.commons.sdk* pre. org.eclipse.mylyn.commons.sdk-feature org.eclipse.mylyn.commons.sdk.util *org.eclipse.mylyn.commons.soap* pre. org.eclipse.mylyn.commons.soap-feature org.eclipse.mylyn.commons.soap.core *org.eclipse.mylyn.commons.xmlrpc* pre. org.eclipse.mylyn.commons.xmlrpc-feature org.eclipse.mylyn.commons.xmlrpc.core *org.eclipse.mylyn.discovery* pre. org.eclipse.mylyn.discovery-feature org.eclipse.mylyn.discovery.core org.eclipse.mylyn.discovery.tests org.eclipse.mylyn.discovery.ui *org.eclipse.mylyn.monitor* pre. org.eclipse.mylyn.monitor-feature org.eclipse.mylyn.monitor.core org.eclipse.mylyn.monitor.tests org.eclipse.mylyn.monitor.ui
After looking at this final list, this seems like the most sensible way to go.
*org.eclipse.mylyn.commons* pre. org.eclipse.mylyn org.eclipse.mylyn.commons-feature org.eclipse.mylyn.commons.core org.eclipse.mylyn.commons.screenshots org.eclipse.mylyn.commons.tests org.eclipse.mylyn.commons.ui org.eclipse.mylyn.commons.workbench *org.eclipse.mylyn.commons.activity* pre. org.eclipse.mylyn.commons.activity-feature org.eclipse.mylyn.commons.activity.tests org.eclipse.mylyn.commons.activity.ui *org.eclipse.mylyn.commons.identity* pre. org.eclipse.mylyn.commons.identity-feature org.eclipse.mylyn.commons.identity.core org.eclipse.mylyn.commons.identity.ui *org.eclipse.mylyn.commons.net* (deprecated) pre. org.eclipse.mylyn.commons.net org.eclipse.mylyn.commons.xmlrpc org.eclipse.mylyn.commons.soap *org.eclipse.mylyn.commons.notifications* pre. org.eclipse.mylyn.commons.notifications-feature org.eclipse.mylyn.commons.notifications.core org.eclipse.mylyn.commons.notifications.rss org.eclipse.mylyn.commons.notifications.ui *org.eclipse.mylyn.commons.repository* pre. org.eclipse.mylyn.commons.repository-feature org.eclipse.mylyn.commons.repository.core org.eclipse.mylyn.commons.repository.ui *org.eclipse.mylyn.commons.sdk* pre. org.eclipse.mylyn.commons.sdk-feature org.eclipse.mylyn.commons.sdk.util *org.eclipse.mylyn.discovery* pre. org.eclipse.mylyn.discovery-feature org.eclipse.mylyn.discovery.core org.eclipse.mylyn.discovery.tests org.eclipse.mylyn.discovery.ui *org.eclipse.mylyn.monitor* pre. org.eclipse.mylyn.monitor-feature org.eclipse.mylyn.monitor.core org.eclipse.mylyn.monitor.tests org.eclipse.mylyn.monitor.ui *org.eclipse.mylyn.transport.http* pre. org.eclipse.mylyn.transport.http-feature org.eclipse.mylyn.transport.http.core org.eclipse.mylyn.transport.http.tests *org.eclipse.mylyn.transport.soap* (future) pre. org.eclipse.mylyn.transport.soap-feature org.eclipse.mylyn.transport.soap.core org.eclipse.mylyn.transport.soap.tests *org.eclipse.mylyn.transport.xmlrpc* (future) pre. org.eclipse.mylyn.transport.xmlrpc-feature org.eclipse.mylyn.transport.xmlrpc.core org.eclipse.mylyn.transport.xmlrpc.tests
This is the final list of components that was committed. See bug 350385 and bug 367002 for renamed packages and ids. *org.eclipse.mylyn.commons* pre. org.eclipse.mylyn org.eclipse.mylyn.commons-feature org.eclipse.mylyn.commons.core org.eclipse.mylyn.commons.screenshots org.eclipse.mylyn.commons.tests org.eclipse.mylyn.commons.ui org.eclipse.mylyn.commons.workbench *org.eclipse.mylyn.commons.activity* pre. org.eclipse.mylyn.commons.activity-feature org.eclipse.mylyn.commons.activity.tests org.eclipse.mylyn.commons.activity.ui *org.eclipse.mylyn.commons.identity* pre. org.eclipse.mylyn.commons.identity-feature org.eclipse.mylyn.commons.identity.core org.eclipse.mylyn.commons.identity.ui *org.eclipse.mylyn.commons.net* (deprecated) pre. org.eclipse.mylyn.commons.net org.eclipse.mylyn.commons.xmlrpc org.eclipse.mylyn.commons.soap *org.eclipse.mylyn.commons.notifications* pre. org.eclipse.mylyn.commons.notifications-feature org.eclipse.mylyn.commons.notifications.core org.eclipse.mylyn.commons.notifications.rss org.eclipse.mylyn.commons.notifications.ui *org.eclipse.mylyn.commons.repositories* pre. org.eclipse.mylyn.commons.repositories-feature org.eclipse.mylyn.commons.repositories.core org.eclipse.mylyn.commons.repositories.ui *org.eclipse.mylyn.commons.repositories.http* pre. org.eclipse.mylyn.commons.repositories.http-feature org.eclipse.mylyn.commons.repositories.http.core org.eclipse.mylyn.commons.repositories.http.tests *org.eclipse.mylyn.commons.repositories.soap* (future) pre. org.eclipse.mylyn.commons.repositories.soap-feature org.eclipse.mylyn.commons.repositories.soap.core org.eclipse.mylyn.commons.repositories.soap.tests *org.eclipse.mylyn.commons.repositories.xmlrpc* (future) pre. org.eclipse.mylyn.commons.repositories.xmlrpc-feature org.eclipse.mylyn.commons.repositories.xmlrpc.core org.eclipse.mylyn.commons.repositories.xmlrpc.tests *org.eclipse.mylyn.commons.sdk* pre. org.eclipse.mylyn.commons.sdk-feature org.eclipse.mylyn.commons.sdk.util *org.eclipse.mylyn.discovery* pre. org.eclipse.mylyn.discovery-feature org.eclipse.mylyn.discovery.core org.eclipse.mylyn.discovery.tests org.eclipse.mylyn.discovery.ui *org.eclipse.mylyn.monitor* pre. org.eclipse.mylyn.monitor-feature org.eclipse.mylyn.monitor.core org.eclipse.mylyn.monitor.tests org.eclipse.mylyn.monitor.ui
Reusing only the AbstractNotificationPopup in an RCP app is still not ideal because of unnecessary required dependencies of the org.eclipse.mylyn.commons.ui plugin, see also bug 229823