<extension
point="org.eclipse.ui.handlers">
<handler
class="com.example.ExampleHandler"
commandId="com.example.exampleCommand">
<enabledWhen>
<with
variable="com.example.roleLoggedInUser">
<test
property="com.example.RoleRequired"
args="com.example.ExampleHandler" />
</with>
</enabledWhen>
</handler>
</extension>
<extension
point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
class="com.example.RolePropertyTester"
id="com.example.rolepropertytester"
namespace="com.example"
properties="RoleRequired"
type="java.lang.String">
</propertyTester>
</extension>
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
if ("RoleRequired".equals(property) && receiver instanceof String) {
String roleLoggedInUser = (String)receiver;
String enclosingHandlerName = (String) args[0];
// Do something to obtain the handler for which this property tester was called.
IHandler enclosingHandler = ...
String roleRequiredForServiceMethod = ((IRoleProvider)enclosingHandler).getRoles();
return roleLoggedInUser.equals(roleRequiredForServiceMethod);
}
return false;
}