I'm working on an E4 RCP application, and have a context menu which has menu items visible or not depending on the selection. The way I've found to do this is with core expressions defined in the plugin.xml like so:
<extension
point="org.eclipse.core.expressions.definitions">
<definition
id="com.foo.bar.test.core.expression">
<with variable="org.eclipse.ui.selection">
<iterate ifEmpty="false">
<or>
<instanceof value="com.foo.bar.Class1">
</instanceof>
<instanceof value="com.foo.bar.Class2">
</instanceof>
</or>
</iterate>
</with>
</definition>
This works, and the menu item is displayed if the selected item is an instance of Class1 or Class2.
This all seems like an extremely nasty way to do things! When many of these are added, its going to be a maintenance and debugging nightmare.
Can anyone demonstrate a less XML-ish way of doing this? Pure programmatic methods in Java would be great!