/**
*
*/
package com.hundsun.ares.studio.ui.editor;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
/**
* @author gongyf
*
*/
public class ActionBarContributorDecoratorManager {
private final static String EP_NAME = "ContributorDecorator";
private final static String EP_ATTRIBUTE_ID = "id";
private final static String EP_ATTRIBUTE_EditorId = "editorId";
private final static String EP_ATTRIBUTE_Class = "class";
private Logger logger = Logger.getLogger(getClass());
private ActionBarContributorDecoratorManager() {
loadDecorators();
}
private static ActionBarContributorDecoratorManager instance;
public static ActionBarContributorDecoratorManager getInstance() {
if (instance == null) {
instance = new ActionBarContributorDecoratorManager();
}
return instance;
}
/**
* �Ա༭��idΪkey
*/
private Multimap<String, IActionBarContributorDecorator> decoratorMap = HashMultimap.create();
private void loadDecorators() {
logger.info("��ʼ���ر༭��װ����չ��");
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] elements = reg.getConfigurationElementsFor(ARESEditorPlugin.PLUGIN_ID , EP_NAME);
for (IConfigurationElement element : elements) {
try {
// String id = element.getAttribute(EP_ATTRIBUTE_ID);
String editorId = element.getAttribute(EP_ATTRIBUTE_EditorId);
IActionBarContributorDecorator decorator = (IActionBarContributorDecorator) element.createExecutableExtension(EP_ATTRIBUTE_Class);
decoratorMap.put(editorId, decorator);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
logger.info("�������ر༭��װ����չ��");
}
public IActionBarContributorDecorator[] getDecorators(String editorId) {
return decoratorMap.get(editorId).toArray(new IActionBarContributorDecorator[0]);
}
}