📄 componentdefloader.java
字号:
package com.cownew.uidesigner.components;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultElement;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.osgi.framework.Bundle;
import com.cownew.ctk.constant.StringConst;
import com.cownew.ctk.io.ResourceUtils;
import com.cownew.uidesigner.Activator;
public class ComponentDefLoader
{
private static ComponentDefLoader instance = new ComponentDefLoader();
public static ComponentDefLoader getLoader()
{
return instance;
}
// 以model的类名为key,以ComponentInfo为value的map
private Map<String, ComponentInfo> modelInfoMap;
private ComponentDefLoader()
{
// 为了保证面板中的控件顺序按着xml中的顺序,所以用LinkedHashMap保存顺序
modelInfoMap = new LinkedHashMap<String, ComponentInfo>(20);
InputStream stream = null;
try
{
Bundle bundle = Activator.getDefault().getBundle();
Path path = new Path("ComponentsDef.xml");
stream = FileLocator.openStream(bundle, path, false);
Document doc = new SAXReader().read(new InputStreamReader(stream,
StringConst.UTF8));
List itemList = doc.selectNodes("//Config/Item");
for (int i = 0, n = itemList.size(); i < n; i++)
{
DefaultElement beanElement = (DefaultElement) itemList.get(i);
String name = beanElement.attributeValue("name");
String tips = beanElement.attributeValue("tips");
String modelClass = beanElement.attributeValue("modelClass");
String figureClass = beanElement.attributeValue("figureClass");
String partClass = beanElement.attributeValue("partClass");
String icon = beanElement.attributeValue("icon");
ComponentInfo info = new ComponentInfo();
info.setName(name);
info.setTips(tips);
info.setFigureClass(figureClass);
info.setModelClass(modelClass);
info.setPartClass(partClass);
info.setIcon(icon);
modelInfoMap.put(modelClass, info);
}
} catch (UnsupportedEncodingException e)
{
Activator.logException(e);
} catch (DocumentException e)
{
Activator.logException(e);
} catch (IOException e)
{
Activator.logException(e);
} finally
{
ResourceUtils.close(stream);
}
}
public ComponentInfo[] loadAll()
{
return modelInfoMap.values().toArray(
new ComponentInfo[modelInfoMap.size()]);
}
public ComponentInfo load(String modelClass)
{
return modelInfoMap.get(modelClass);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -