Common Navigator Framework Use Cases
The Common Navigator Framework (CNF) can be used both within the IDE (it's the Package Explorer) and in RCP applications.
In order to provide the best support for the 3.5 release, we would like to understand the current and desired uses of the CNF, so please update this page and include them here.
Data Mapper Plugin - (as described in the RCP section)
Project Explorer - The Project Explorer is the default project view in the Resource perspective replacing the Navigator view. Project Explorer is also reused by CDT as default project view with custom content extensions. There are still some deficiencies compared to Navigator and Package Explorer view which hinders acceptance as a shared project view, e.g.
- [CommonNavigator] Use of window working set inconsistant with the rest of the workbench - 157877
- [WorkingSets] [CommonNavigator] Project Explorer is empty when there is no window working set - 190819
- [CommonNavigator] Project Explorer shows working set content flattened - 212389
- There is no "Other Projects" working set on Project Explorer - 196595, 229537
- [CommonNavigator] add "Sort by" view menu - 208801
- [CommonNavigator] ProblemsLabelDecorator does not scale well with Project Explorer - 194209
There are also quite a few bugs with attached patches, e.g.
- [CommonNavigator] Drag and Drop of non IResource items causes FileTransfer to be created with null data - 161095
- [CommonNavigator] Project Explorer does not support Navigate > Show In... - 220599
- [CommonNavigator] Capability filtering of commonWizard extensions uses wrong identifier - 217801
- [CommonNavigator] CommonNavigator.selectReveal() should not expand selected elements - 228359
Additional Bugzilla entries:
- [CommonNavigator] Expose the ability for CommonDropAdapterAssistants to select feedback - 150688
- [CommonNavigator] actionProvider extension does not support dependsOn and overrides simulaneous - 182285
Data Source Explorer - The Data Source Explorer (DSE) is a part of the Data Tools Platform (DTP) Project's Data Development perspective. It extends the CommonNavigator to display custom content equating to categories, connection profiles, and then once a profile is connected, it displays the content of the connection profile. Content is typically database-related (database/catalog, schema, table, stored procedure, columns, etc...), but can be resource-based as well (like the sample File connection profile). -- Brian Fitzpatrick, DTP PMC Lead/Committer
RCP - With Resources
Data Mapper - This RCP application uses the CNF with resources to manage data structure definitions, map definitions and other objects. The resources can exist in the local file system, or using EFS in a zip file or plugin. There is a set of model objects representing the structures, maps, etc and these are managed by an internal dependency manager so that changes in the resources (through the CNF) cause the model objects to be updated. Contact: Francis Upton (email@example.com).
RCP - Objects Other than Resources
Please tell us about the objects you would use the CNF with, and also indicate why you did not choose to use resources. The CNF in conjunction with resources provides considerable benefit; we would like to hear about cases where this combination will not work for whatever reason.
Hibernate Data model browser - We wanted to use CNF for Hibernate tools to show the static data model and for browsing the object graph/query result. Neither of these are in any way mappable to resources. The problem we got into was that we could not find a way to lazily load children with visual feedback in the tree. Contact: Max Rydahl Andersen (firstname.lastname@example.org).
Business Object Navigation - I've worked on several projects which used the CNF to navigate business objects not accessible via resources. One example was a logistics application which managed supervisors, trucks, routes, and shipping destinations. The data was retrieved using web services, but in other cases the data has been loaded by Hibernate or whatever. The important thing is that the CNF should be easy to use in situations where business objects are being retrieved in some way.
It's actually not so bad right now, but it could be easier. Currently you must subclass the CommonNavigator class and override the getInitialInput method to supply some root object that the business objects can attach to. The idea of using the page input as the root of the navigator doesn't work in this scenario and is confusing to new developers. It would be nice if you could just create a navigator extension and then just start adding any type of content provider to it. Perhaps there could be an attribute on the navigator extension point indicating whether the page input should be used as the root. If it should not, then some type of generic root node would need to be created for content providers to attach to.