I have two (or more) Eclipse views defined. Each of these views has its own selection provider, e.g. a JFace table viewer:
getSite().setSelectionProvider(tableViewer);
In plugin.xml contribution items are placed at the toolbar of each view, e.g.:
<menuContribution
allPopups="false"
locationURI="toolbar:my.package.views.ViewA">
<command
commandId="my.package.views.commandA"
label="Finish"
style="push">
</command>
</menuContribution>
The handler of the contribution items are enabled with respect to the current selection, e.g.:
<handler
class="my.package.views.HandlerCommandA"
commandId="my.package.views.commandA">
<enabledWhen>
<and>
<with
variable="selection">
<iterate
ifEmpty="false"
operator="and">
<and>
<instanceof
value="my.package.SomeType">
</instanceof>
</and>
</iterate>
</with>
</and>
</enabledWhen>
</handler>
Because the variable "selection" is a global workspace variable I have the following situation at the moment: If view A has a selected entry but is not active and if view B is active but has no selected entry both contribution items (in A as well as in B) are disabled. To enable the contribution item in A the user has to activate the view A (setting the workspace variable "selection" to the actual selection of A). This is confusing for inexperienced users.
How is it possible to control enabling of a contribution item which belongs to a certain view only by the selection in this view?
I would like to use declarative contribution items and not actions defined programmatically in the view itself.
Moreover, I want to avoid the extra burden of defining special workspace variables for each view (org.eclipse.ui.ISourceProvider). These workspace variables would be a solution if for the view class there were only one instance. If multiple instances of a view class are allowed we have the same problem.
I know that the required behaviour is possible with the extension point org.eclipse.ui.viewActions. However this extension point is deprecated as of Kepler.
Is there a solution using declarative contribution items?
Thank you - Michael
PS: I have posted a similar question on SO but have received no answer until now.
[Updated on: Thu, 10 October 2013 03:02] by Moderator