Home » Eclipse Projects » Rich Client Platform (RCP) » enable/disable commands handler(enable/disable commands handler)
|
Re: enable/disable commands handler [message #674306 is a reply to message #674293] |
Thu, 26 May 2011 13:18 |
|
What are you trying to do? What behaviour do you want? i.e. The command is enabled when a database connection is open? The command is enabled when the user selects a file? an object?
What contributes your handler? plugin.xml? A view that uses IHandlerService?
PW
|
|
| |
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
|
|
| | |
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
|
|
| | |
Goto Forum:
Current Time: Thu Jan 09 17:46:30 GMT 2025
Powered by FUDForum. Page generated in 0.04113 seconds
|