⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 componentdefloader.java

📁 基于eclipse的工具开发代码
💻 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 + -