extcache.java

来自「eclipse开发笔记」· Java 代码 · 共 48 行

JAVA
48
字号
package com.plugindev.addressbook.cache;

import java.util.HashSet;

import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionDelta;
import org.eclipse.core.runtime.IExtensionPoint;
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 class ExtCache implements IRegistryChangeListener {

	private static final String PID = "com.plugindev.addressbook";

	private static final String PT_ID = PID + "." + "messages";

	private final HashSet extensions = new HashSet();

	public void startup() {
		IExtensionRegistry reg = Platform.getExtensionRegistry();
		IExtensionPoint pt = reg.getExtensionPoint(PT_ID);
		IExtension[] ext = pt.getExtensions();
		for (int i = 0; i < ext.length; i++)
			extensions.add(ext[i]);

		reg.addRegistryChangeListener(this);
	}

	public void registryChanged(IRegistryChangeEvent event) {
		IExtensionDelta[] deltas = event.getExtensionDeltas(PID, PT_ID);
		for (int i = 0; i < deltas.length; i++) {
			if (deltas[i].getKind() == IExtensionDelta.ADDED)
				extensions.add(deltas[i].getExtension());
			else
				extensions.remove(deltas[i].getExtension());
		}
	}

	public void shutdown() {
		extensions.clear();
		IExtensionRegistry reg = Platform.getExtensionRegistry();
		reg.removeRegistryChangeListener(this);
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?