Eclipse Community Forums - RDF feed
https://www.eclipse.org/forums/
Eclipse Community Forumsenable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/674293/#msg_674293
I am a beginner in eclipse RCP.
I am trying to use AbstractHandler.setBaseEnabled() for control of the handler state. But it is not enough clear how to call this method externally because it is private.
May be there is another way to control of enable state of handler programmically at runtime?]]>Gennady Gromov2011-05-26T12:47:38-00:00Re: enable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/674306/#msg_674306
What contributes your handler? plugin.xml? A view that uses IHandlerService?
PW
]]>Paul Webster2011-05-26T13:18:08-00:00Re: enable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/674469/#msg_674469
I know about the "enableWhen" and "activeWhen" conditions for the commands in plugin.xml but it supports only the workbench status.
This easiest question becomes to very big problem ]]>Gennady Gromov2011-05-27T04:25:09-00:00Re: enable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/674562/#msg_674562
ALGROM wrote on Fri, 27 May 2011 00:25
At 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).
[2] http://wiki.eclipse.org/Platform_Expression_Framework
]]>Paul Webster2011-05-27T11:19:20-00:00Re: enable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/675097/#msg_675097
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?]]>Gennady Gromov2011-05-30T09:55:02-00:00Re: enable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/675107/#msg_675107
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?]]>Gennady Gromov2011-05-30T10:31:54-00:00Re: enable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/675155/#msg_675155
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 Webster2011-05-30T12:55:06-00:00Re: enable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/675300/#msg_675300
Gennady Gromov2011-05-31T05:43:53-00:00Re: enable/disable commands handler
https://www.eclipse.org/forums/index.php/mv/msg/210218/1861009/#msg_1861009
Have you wrote property tester and then you have used enabledWhen tag in plugin.xml to change the state of the command. How did you implement this one. Could you please share the details about this org.eclipse.ui.AbstractSourceProvider.