Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Eclipse4/RCP/Modeled UI/Listening to Model Changes"
< Eclipse4 | RCP | Modeled UI
(→Retrieving information from the events) |
(→Retrieving information from the events) |
||
Line 16: | Line 16: | ||
// subscribe to all events generated from MUILabels | // subscribe to all events generated from MUILabels | ||
eventBroker.subscribe(UIEvents.buildTopic(UIEvents.UILabel.TOPIC, UIEvents.UILabel.LABEL), | eventBroker.subscribe(UIEvents.buildTopic(UIEvents.UILabel.TOPIC, UIEvents.UILabel.LABEL), | ||
− | + | new EventHandler() { | |
− | + | public void handleEvent(Event event) { | |
− | + | Object element = event.getProperty(UIEvents.EventTags.ELEMENT); | |
− | + | if (element instanceof MToolItem) { | |
− | + | ToolItem item = (ToolItem) ((MToolItem) element).getWidget(); | |
− | + | String value = (String) event.getProperty(UIEvents.EventTags.NEW_VALUE); | |
− | + | if (value == null) { | |
− | + | item.setText(""); //$NON-NLS-1$ | |
− | + | } else { | |
− | + | item.setText(value); | |
+ | } | ||
} | } | ||
} | } |
Revision as of 14:26, 11 April 2011
When the model changes and it is not a no-op (for example, setting its label to its current label), an event will be dispatched to all interested event handlers. Eclipse 4 uses a global listener pattern so all handler subscriptions are done through the event broker.
Subscribing to model changes
Topics for event subscriptions can be generated from the UIEvents class.
// subscribe to all events generated from MUILabels eventBroker.subscribe(UIEvents.buildTopic(UIEvents.UILabel.TOPIC), eventHandler); // subscribe only to events generated from MItems's selected attribute being switched eventBroker.subscribe(UIEvents.buildTopic(UIEvents.Item.TOPIC, UIEvents,Item.SELECTED), eventHandler);
Retrieving information from the events
// subscribe to all events generated from MUILabels eventBroker.subscribe(UIEvents.buildTopic(UIEvents.UILabel.TOPIC, UIEvents.UILabel.LABEL), new EventHandler() { public void handleEvent(Event event) { Object element = event.getProperty(UIEvents.EventTags.ELEMENT); if (element instanceof MToolItem) { ToolItem item = (ToolItem) ((MToolItem) element).getWidget(); String value = (String) event.getProperty(UIEvents.EventTags.NEW_VALUE); if (value == null) { item.setText(""); //$NON-NLS-1$ } else { item.setText(value); } } } } );