|
|
|
Re: enable/disable commands handler [message #674562 is a reply to message #674469] |
Fri, 27 May 2011 11:19 |
|
ALGROM wrote on Fri, 27 May 2011 00:25At runtime in my application there are different situations which are not relating to workbench. According with these states I should change the status of menu/toolbar commands (items): visible, enabled, text and icon.
I know about the "enableWhen" and "activeWhen" conditions for the commands in plugin.xml but it supports only the workbench status.
You didn't really answer my questions, and that makes it difficult to actually help you. But I'll make 4 assumptions and provide an answer anyway
visibleWhen, enabledWhen and activeWhen are core expressions, which support property testers [1] [2]. You can write a property tester that examines your "situations" and returns the correct enabled state. When your "situation" changes, you use org.eclipse.ui.services.IEvaluationService.requestEvaluation(String) to have the framework re-evaluate those expressions (updating the commands).
To update text and icons, your handler needs to implement org.eclipse.ui.commands.IElementUpdater. When you "situation" needs to update text, you use org.eclipse.ui.commands.ICommandService.refreshElements(String, Map).
Later,
PW
[1] http://wiki.eclipse.org/Command_Core_Expressions
[2] http://wiki.eclipse.org/Platform_Expression_Framework
Paul Webster
http://wiki.eclipse.org/Platform_Command_Framework
http://wiki.eclipse.org/Command_Core_Expressions
http://wiki.eclipse.org/Menu_Contributions
|
|
|
|
|
Re: enable/disable commands handler [message #675155 is a reply to message #675097] |
Mon, 30 May 2011 12:55 |
|
ALGROM wrote on Mon, 30 May 2011 05:55 Thank you for answer, sorry for delay? I will try...
I just want to set the enabled state of menu/toolbar in dependence of my application state such as the project (specific, not java) is compiled or not compiled, the USB adapter is connected or not connected etc. I am searching for a simplest way to do it.
In AbstractHandler there is the method isEnabled(). I can put the need logic into this method but it is called by framework only once at the start of application.
Is it possible to force the framework to call this method in all handlers when it is necessary?
If you extend AbstractHandler you can extend setEnabled(Object evaluationContext). That will be called before your command is executed, but it is not sufficient to keep tool item state up to date.
The only part of the framework that allows requests for re-evaluation that would do what you want is if you use enabledWhen, property testers, and org.eclipse.ui.services.IEvaluationService.requestEvaluation(String).
See my post for URLs with examples.
PW
Paul Webster
http://wiki.eclipse.org/Platform_Command_Framework
http://wiki.eclipse.org/Command_Core_Expressions
http://wiki.eclipse.org/Menu_Contributions
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04090 seconds