Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [e4-dev] DirectMenuItem and HandledMenuItem with style CHECK or RADIO

Hello Paul, thanks for your answer!

No, the problem is not, that the model item is not in sync with the GUI. 

Let me explain it with an example

Assume  I have a filter for a viewer with a DirectMenuItem "Filter Male" of type CHECK.
Now during startup I need to synchronize the state of my filter class with the state of the DirectMenuItem (isSelected). 

If I do not do that, the DirectMenuItem may show isSelected: true while FilterMale is set to false. So I have to set the DirectMenuItem state
according to the initial setting of the filter or vice versa.
The sychronization I hence talk about is between the application model and my code! 

So, what and where is the correct e4 style way to do this initial synchronization? 
In the handler? In a processor? In the part with the viewer?

Suppose a the handler (i.e. classURI for DirectMenuItem):
At @Execute it is to late, as the item is already presented. It could be handled by 
@CanExecute, this, however, is called everytime the MenuItem is shown (it however solves the problem).
So I thought about @PostConstruct as i is called only once on instantiation and would be a perfect fit to execute the synchronization.

This is for DirectMenuItem, for HandledMenuItems I see that in Eclipse 3.x there was a state available to a command which conveyed this
information (see http://blog.eclipse-tips.com/2009/03/commands-part-6-toggle-radio-menu.html). But generally the same question arises.

Thanks, marco

Am 29.12.2012 um 00:57 schrieb Paul Webster <pwebster@xxxxxxxxxxxxxxxxxxx>:

On Fri, Dec 28, 2012 at 4:49 PM, Marco Descher <marco@xxxxxxxxxx> wrote:
I have problems understanding the concept of state synchronization of the application model with my code for DirectMenuItems and HandledMenuItems of type CHECK or RADIO.

The problem is as follows:

I populate a Menu with either Direct or HandledMenuItems and except their selection states (in CHECK or RADIO) style to be according to my code. The problem is that I can't figure
out how to realize this.

I'm not sure I follow you.  Are you saying that if you modify the checked model item, it's not reflected in the GUI?

You can't depend on anything in a  @PostConstruct with handler contributions (handlers for commands or direct contributions) that isn't available in the global application context.  And we recommend not to use @Inject with handlers in general.

Instead, you should be able to ask for an MMenuItem in your execute(*) method.  See org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.getStaticContext(Event) and org.eclipse.e4.ui.workbench.renderers.swt.DirectContributionItem.getStaticContext(Event) for how the model element is supposed to be made available to the @Execute or @CanExecute.


PW


--
Paul Webster
Hi floor.  Make me a sammich! - GIR _______________________________________________
e4-dev mailing list
e4-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/e4-dev


Back to the top