Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 305782

Summary: restructure Mylyn Commons features
Product: z_Archived Reporter: Steffen Pingel <steffen.pingel>
Component: MylynAssignee: Steffen Pingel <steffen.pingel>
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: P1 CC: mik.kersten, pascal, strider80, wseliga
Version: unspecifiedKeywords: plan
Target Milestone: 3.7   
Hardware: PC   
OS: Linux   
Whiteboard:
Bug Depends on: 296436, 304755, 313977, 350385, 361048, 366862, 367002, 367003    
Bug Blocks: 355941    
Attachments:
Description Flags
org.eclipse.mylyn.commons.screenshots plug-in
none
extension that embeds screenshot viewer in view none

Description Steffen Pingel CLA 2010-03-13 17:28:02 EST
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.
Comment 1 Steffen Pingel CLA 2010-07-07 01:50:29 EDT
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
Comment 2 Mik Kersten CLA 2010-07-15 13:34:30 EDT
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
Comment 3 Mik Kersten CLA 2010-07-15 13:35:50 EDT
Also consider merging ..commons.repositories with ..commons.core
Comment 4 Steffen Pingel CLA 2010-07-28 15:46:48 EDT
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
Comment 5 Steffen Pingel CLA 2010-07-28 16:01:27 EDT
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.
Comment 6 Mik Kersten CLA 2010-07-29 13:33:03 EDT
For future I'd rename "..mylyn.commons.capture" to "..mylyn.commons.screenshots" or something like that.
Comment 7 Steffen Pingel CLA 2010-08-28 23:23:28 EDT
Created attachment 177670 [details]
org.eclipse.mylyn.commons.screenshots plug-in
Comment 8 Steffen Pingel CLA 2010-08-28 23:30:25 EDT
Created attachment 177671 [details]
extension that embeds screenshot viewer in view
Comment 9 Steffen Pingel CLA 2010-08-28 23:31:58 EDT
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.
Comment 10 Steffen Pingel CLA 2011-10-14 11:03:03 EDT
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
Comment 11 Shawn Minto CLA 2011-10-20 13:31:26 EDT
After looking at this final list, this seems like the most sensible way to go.
Comment 12 Steffen Pingel CLA 2011-12-03 18:59:00 EST
*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
Comment 13 Steffen Pingel CLA 2011-12-17 10:55:40 EST
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
Comment 14 Henno Vermeulen CLA 2014-02-25 08:28:59 EST
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