package ch.hsr.ifs.pasta;
import java.util.Dictionary;
import java.util.Hashtable;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventConstants;
import org.osgi.service.event.EventHandler;
import ch.hsr.ifs.pasta.events.PastaEventConstants;
public class NodeView extends ViewPart {
@Override
public void createPartControl(final Composite parent) {
final NodeWidget nodeWidget = new NodeWidget(parent);
registerEventHandler(PastaEventConstants.ASTNODE, new EventHandler() {
@Override
public void handleEvent(final Event event) {
final IASTNode astNode = (IASTNode) event.getProperty(PastaEventConstants.ASTNODE);
if (astNode != null) {
nodeWidget.displayNode(astNode);
}
}
});
}
@Override
public void setFocus() {
}
private void registerEventHandler(final String topic, final EventHandler handler) {
final BundleContext ctx = FrameworkUtil.getBundle(ASTView.class).getBundleContext();
final Dictionary<String, String> props = new Hashtable<>();
props.put(EventConstants.EVENT_TOPIC, topic);
ctx.registerService(EventHandler.class.getName(), handler, props);
}
}