Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Eclipse4/RCP/Modeled UI/Listening to Model Changes

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);
        }
      }
    }
);

Copyright © Eclipse Foundation, Inc. All Rights Reserved.