blob: b3af7ff6771fe5c800ff32fab8312633ab8ac40c [file] [log] [blame]
package org.eclipse.e4.examples.di.product.parts;
import java.util.Set;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.IRegistryEventListener;
import org.eclipse.jface.viewers.TableViewer;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
import org.osgi.util.tracker.ServiceTracker;
public class OldExtensionReader implements IRegistryEventListener {
private Set<AuthorCompany> authors;
private TableViewer viewer;
private ServiceTracker<IExtensionRegistry, IExtensionRegistry> tracker;
private IExtensionRegistry extensionRegistry;
public OldExtensionReader(Set<AuthorCompany> authors, TableViewer viewer) {
this.authors = authors;
this.viewer = viewer;
Bundle bundle = FrameworkUtil.getBundle(OldExtensionReader.class);
tracker = new ServiceTracker<IExtensionRegistry, IExtensionRegistry>(
bundle.getBundleContext(), IExtensionRegistry.class, null);
tracker.open();
extensionRegistry = tracker.getService();
}
public void process() {
IExtensionPoint ep = extensionRegistry
.getExtensionPoint(SamplePart.EXTENSION_POINT);
IExtension[] extensions = ep.getExtensions();
for (IExtension extension : extensions) {
addAuthors(extension);
}
viewer.refresh();
extensionRegistry.addListener(this, SamplePart.EXTENSION_POINT);
}
public void dispose() {
extensionRegistry.removeListener(this);
authors.clear();
}
private void addAuthors(IExtension extension) {
for (IConfigurationElement element : extension
.getConfigurationElements()) {
if (SamplePart.ELEMENT_AUTHOR.equals(element.getName())) {
authors.add(new AuthorCompany(element
.getAttribute(SamplePart.ATTR_NAME), element
.getAttribute(SamplePart.ATTR_COMPANY)));
}
}
}
@Override
public void added(final IExtension[] extensions) {
viewer.getControl().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
for (IExtension extension : extensions) {
addAuthors(extension);
}
viewer.refresh();
}
});
}
@Override
public void removed(IExtension[] extensions) {
// TODO Auto-generated method stub
}
@Override
public void added(IExtensionPoint[] extensionPoints) {
// this is a no-op
}
@Override
public void removed(IExtensionPoint[] extensionPoints) {
// this is a no-op
}
}