blob: 46fdb0ac311a372729d6c9dc923e6194c697b9c2 [file] [log] [blame]
package org.eclipse.tea.samples.events;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.ui.internal.workbench.E4Workbench;
import org.eclipse.tea.core.services.TaskingLog;
import org.eclipse.tea.core.ui.internal.listeners.EventBrokerBridge;
import org.osgi.service.component.annotations.Activate;
//import org.osgi.service.component.annotations.Component;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
@SuppressWarnings("restriction")
// uncomment this and the import to enable the listener.
// @Component(immediate = true)
public class SampleE4EventListener implements EventHandler {
@Activate
public void activate() {
IEventBroker broker = E4Workbench.getServiceContext().get(IEventBroker.class);
broker.subscribe(EventBrokerBridge.EVENT_TOPIC_BASE + "*", null, SampleE4EventListener.this, true);
}
@Override
public void handleEvent(Event event) {
Object data = event.getProperty(IEventBroker.DATA);
if (!(data instanceof IEclipseContext)) {
return;
}
IEclipseContext eventContext = (IEclipseContext) data;
IEclipseContext child = eventContext.createChild("My Processing Context");
child.set(Event.class, event);
ContextInjectionFactory.invoke(this, Execute.class, child);
}
@Execute
public void process(TaskingLog log, Event event) {
log.info("received " + event.getTopic());
}
}