eas bos创建树形结构

 这个整个树形结构的类,仅供参考

package com.kingdee.eas.fdc.basedata.client;

import com.kingdee.bos.BOSException;
import com.kingdee.bos.ctrl.swing.KDTree;
import com.kingdee.bos.ctrl.swing.tree.DefaultKingdeeTreeNode;
import com.kingdee.bos.ctrl.swing.tree.KingdeeTreeModel;
import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
import com.kingdee.bos.framework.cache.ActionCache;
import com.kingdee.bos.metadata.IMetaDataPK;
import com.kingdee.bos.metadata.MetaDataPK;
import com.kingdee.bos.metadata.entity.EntityViewInfo;
import com.kingdee.bos.metadata.entity.FilterInfo;
import com.kingdee.bos.metadata.entity.FilterItemCollection;
import com.kingdee.bos.metadata.entity.FilterItemInfo;
import com.kingdee.bos.metadata.entity.SelectorItemCollection;
import com.kingdee.bos.metadata.query.util.CompareType;
import com.kingdee.bos.ui.face.CoreUIObject;
import com.kingdee.bos.ui.face.ItemAction;
import com.kingdee.bos.util.BOSUuid;
import com.kingdee.eas.ady.actlzemgn.ProjectCollection;
import com.kingdee.eas.ady.actlzemgn.ProjectFactory;
import com.kingdee.eas.ady.actlzemgn.ProjectInfo;
import com.kingdee.eas.base.param.IParamControl;
import com.kingdee.eas.base.param.ParamControlFactory;
import com.kingdee.eas.base.permission.IPermission;
import com.kingdee.eas.base.permission.PermissionFactory;
import com.kingdee.eas.base.permission.UserInfo;
import com.kingdee.eas.basedata.org.AdminOrgUnitCollection;
import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
import com.kingdee.eas.basedata.org.CompanyOrgUnitCollection;
import com.kingdee.eas.basedata.org.CompanyOrgUnitFactory;
import com.kingdee.eas.basedata.org.CompanyOrgUnitInfo;
import com.kingdee.eas.basedata.org.FullOrgUnitInfo;
import com.kingdee.eas.basedata.org.ICompanyOrgUnit;
import com.kingdee.eas.basedata.org.NewOrgUtils;
import com.kingdee.eas.basedata.org.OrgStructureInfo;
import com.kingdee.eas.basedata.org.OrgType;
import com.kingdee.eas.basedata.org.OrgUnitInfo;
import com.kingdee.eas.basedata.org.OrgViewType;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.common.client.SysContext;
//import com.kingdee.eas.fdc.basedata.CurProjProductEntriesCollection;
//import com.kingdee.eas.fdc.basedata.CurProjProductEntriesFactory;
//import com.kingdee.eas.fdc.basedata.CurProjProductEntriesInfo;
//import com.kingdee.eas.fdc.basedata.CurProjectFactory;
//import com.kingdee.eas.fdc.basedata.ICurProjProductEntries;
//import com.kingdee.eas.fdc.basedata.ICurProject;
//import com.kingdee.eas.fdc.basedata.IProjectWithCostCenterOU;
//import com.kingdee.eas.fdc.basedata.ProjectWithCostCenterOUCollection;
//import com.kingdee.eas.fdc.basedata.ProjectWithCostCenterOUFactory;
//import com.kingdee.eas.fdc.basedata.ProjectWithCostCenterOUInfo;
import com.kingdee.eas.framework.AbstractCoreBaseInfo;
import com.kingdee.eas.framework.ITreeBase;
import com.kingdee.eas.framework.client.CoreUI;
import com.kingdee.eas.framework.client.tree.DefaultLNTreeNodeCtrl;
import com.kingdee.eas.framework.client.tree.ILNTreeNodeCtrl;
import com.kingdee.eas.framework.client.tree.ITreeBuilder;
import com.kingdee.eas.framework.client.tree.KDTreeNode;
import com.kingdee.eas.framework.client.tree.TreeBuilderFactory;
import com.kingdee.eas.util.SysUtil;
import com.kingdee.eas.util.client.MsgBox;
import java.awt.Color;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeWillExpandListener;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;

public class ProjectTreeBuilder
{
	  private TreeSelectionListener treeSelectionListener;
	  private ITreeBuilder treeBuilder;
	  
	public Object getRootName() {
		return null;
	}

	public Object getRootObject() {
		return getRootName();
	}

	//创建根目录的树,添加监听事件
    public void buildTypeTree(KDTree projectTree) throws Exception{
        KDTree treeMain = projectTree;
        TreeSelectionListener[] listeners = treeMain.getTreeSelectionListeners();
        if (listeners.length > 0) {
          this.treeSelectionListener = listeners[0];
          treeMain.removeTreeSelectionListener(this.treeSelectionListener);
        }
        this.treeBuilder = TreeBuilderFactory.createTreeBuilder(
            getLNTreeNodeCtrl(), TreeBuilderFactory.DEFAULT_INITIAL_LEVEL,
            TreeBuilderFactory.DEFAULT_EXPAND_LEVEL,
            getDefaultFilterForTree());
        if (getRootName() != null) {
                //注意这里的属性类,如果此类不合适你的环境需求,可以根据自己需要的属性定义别的类
        	KDTreeNode rootNode = new KDTreeNode(getRootObject());
          ((DefaultTreeModel) treeMain.getModel()).setRoot(rootNode);
        } else {
          ((DefaultTreeModel) treeMain.getModel()).setRoot(null);
        }
        this.treeBuilder.buildTree(treeMain);
        treeMain.addTreeSelectionListener(this.treeSelectionListener);
        treeMain.setShowPopMenuDefaultItem(false);
      }
    
    //创建根节点的项目类型,把根节点查询出来的项目树直接添加到根目录下面
    public void buildProjectTree(KDTree projectTree, TreeModel newTreeModel)
				throws Exception {
		projectTree.setModel(newTreeModel);
		buildProjTree(projectTree);
		Map idNode = (Map)projectTree.getUserObject();
		Map orgMap = new HashMap();
		genNodeMap((KDTreeNode) newTreeModel.getRoot(), orgMap);
		
		for (Iterator it = idNode.keySet().iterator(); it.hasNext();) {
			String id = (String) it.next();
			KDTreeNode proNode = (KDTreeNode) idNode.get(id);
			ProjectInfo info = (ProjectInfo) proNode.getUserObject();
			String orgId = info.getAdminOrgUnit().getId().toString();
			KDTreeNode orgNode = (KDTreeNode) orgMap.get(orgId);
			proNode.setText(info.getName());
			if (orgNode != null)
				orgNode.add(proNode);
		}
	}
	
    //获取根节点,查询出部门信息
    public void genNodeMap(TreeNode root, Map map)
	  {
	    int count = root.getChildCount();
	    KDTreeNode treeNode = null;
	    for (int i = 0; i < count; ++i) {
	   if(root.getChildAt(i)==null || !(root.getChildAt(i) instanceof KDTreeNode))continue;
	      treeNode = (KDTreeNode)root.getChildAt(i);
	      Object userObj = treeNode.getUserObject();

	      String id = null;
	      if (userObj instanceof AdminOrgUnitInfo)
	      {
	        id = ((AbstractCoreBaseInfo) userObj).getId().toString();
	      }
	      if (id != null) {
	        map.put(id, treeNode);
	      }

	      genNodeMap(treeNode, map);
	    }
	  }
    //获取根节点,项目树的集合,添加到根目录下
    public void buildProjTree(KDTree projectTree) throws Exception {
    	KDTree ProjecTree = projectTree;
		Map idProjectNodes = new HashMap();
//		EntityViewInfo view = new EntityViewInfo();
//		FilterInfo filter = new FilterInfo();
//		filter.getFilterItems().add(new FilterItemInfo("isNewProject", "1"));
//		view.setFilter(filter);
		ProjectCollection  projectColl = ProjectFactory.getRemoteInstance().getProjectCollection();
		for (int i = 0; i < projectColl.size(); ++i) {
			ProjectInfo info = projectColl.get(i);
			KDTreeNode node = new KDTreeNode(ProjecTree);
			node.setUserObject(info);
			idProjectNodes.put(info.getId().toString(), node);
		}
		ProjecTree.setUserObject(idProjectNodes);
	}
    //这里是过根目录的信息(ID),如果想展示出所以的部门,就把第二行注释掉
    public FilterInfo getDefaultFilterForTree() {
  		FilterInfo filter = new FilterInfo();
  		filter.getFilterItems().add(new FilterItemInfo("id", "xX4AAAAAAA3M567U"));
		return filter;
	}

    public ILNTreeNodeCtrl getLNTreeNodeCtrl() throws Exception {
        return new DefaultLNTreeNodeCtrl(getTreeInterface());
      }
      
        //定义部门持久化接口
	public ITreeBase getTreeInterface() throws Exception {
		return AdminOrgUnitFactory.getRemoteInstance();
	}

}
发布了78 篇原创文章 · 获赞 32 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/a754315344/article/details/101271892
EAS