package fr.opensagres.mongodb.ide.core.extensions;
import org.eclipse.core.runtime.IExtensionDelta;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.IRegistryChangeEvent;
import org.eclipse.core.runtime.IRegistryChangeListener;
import org.eclipse.core.runtime.Platform;
public abstract class AbstractRegistry implements IRegistryChangeListener {
public static final String ICON_ATTR = "icon";
public static final String ID_ATTR = "id";
public static final String NAME_ATTR = "name";
public static final String DESCRIPTION_ATTR = "description";
public static final String CLASS_ATTR = "class";
private boolean registryListenerIntialized = false;
public void initialize() {
}
public void destroy() {
Platform.getExtensionRegistry().removeRegistryChangeListener(this);
}
private void addRegistryListenerIfNeeded() {
if (registryListenerIntialized)
return;
IExtensionRegistry registry = Platform.getExtensionRegistry();
if (registry != null) {
registry.addRegistryChangeListener(this, getPluginId());
}
registryListenerIntialized = true;
}
public void registryChanged(IRegistryChangeEvent event) {
IExtensionDelta[] deltas = event.getExtensionDeltas(getPluginId(),
getExtensionPoint());
if (deltas != null) {
for (IExtensionDelta delta : deltas)
handleExtensionDelta(delta);
}
}
protected void loadRegistryIfNedded() {
if (!isRegistryIntialized()) {
loadRegistry();
addRegistryListenerIfNeeded();
}
}
protected boolean isRegistryIntialized() {
return registryListenerIntialized;
}
// protected Image getIconImage(IConfigurationElement cfig) {
// ImageDescriptor imageDescriptor = getIconImageDescriptor(cfig);
// if (imageDescriptor != null) {
// return JFaceResources.getResources().createImageWithDefault(
// imageDescriptor);
//
// }
// return null;
// }
//
// protected ImageDescriptor getIconImageDescriptor(IConfigurationElement cfig) {
// String strIcon = cfig.getAttribute(ICON_ATTR);//$NON-NLS-1$
// if (strIcon != null) {
// return AbstractUIPlugin.imageDescriptorFromPlugin(
// cfig.getNamespaceIdentifier(), strIcon);
// }
// return null;
// }
protected abstract void loadRegistry();
protected abstract void handleExtensionDelta(IExtensionDelta delta);
protected abstract String getPluginId();
protected abstract String getExtensionPoint();
}