package com.frameworkset.common.tag.contextmenu; import java.util.Collections; import java.util.Observable; import java.util.Set; import java.util.TreeSet; /** * * <p>Title: ContextMenuImpl</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company: 长沙科创计算机系统集成有限公司</p> * @Date 2006-9-15 * @author biaoping.yin * @version 1.0 */ public class ContextMenuImpl extends Observable implements ContextMenu { /** * */ private static final long serialVersionUID = 1L; private boolean enablecontextmenu = false; protected Set node_contextmenus = Collections.synchronizedSet(new TreeSet()); protected Set type_contextmenus = Collections.synchronizedSet(new TreeSet()); protected Set contextmenus = Collections.synchronizedSet(new TreeSet()); public Set getContextmenus() { return contextmenus; } /** * 为树节点添加类型右键菜单功能 * * @param ITreeNode */ public void addContextMenuOfType(Menu menu) { menu.setIdentity("_type_" + menu.getIdentity()); this.type_contextmenus.add(menu); } /** * 添加一般元素的右键菜单功能 * * @param ITreeNode */ public void addContextMenu(Menu menu) { menu.setIdentity(menu.getIdentity()); this.type_contextmenus.add(menu); } /** * 为树节点添加节点类型右键菜单功能 * * @param ITreeNode */ public void addContextMenuOfNode(AttachElement node, Menu menu) { if (this.enablecontextmenu) { menu.setIdentity("_node_" + node.getId()); node.setEnablecontextmenu(true); menu.setGenerateByNode(true); this.node_contextmenus.add(menu); } } /** * 构建类型菜单 * */ public void buildContextMenusWraper() { if (this.enablecontextmenu && this.type_contextmenus.size() == 0) { //this.type_contextmenus.clear(); buildContextMenus(); } } /** * 合并类型右键菜单和节点右键菜单 * */ public void mergeContextMenus() { this.clearContextmenus(); this.contextmenus.addAll(type_contextmenus); this.contextmenus.addAll(node_contextmenus); } /** * 构建树的右键菜单,不同类型的节点可设置不同的右键菜单项 该类由可以被子类重载 */ protected void buildContextMenus() { } public void setEnablecontextmenu(boolean enablecontextmenu) { this.enablecontextmenu = enablecontextmenu; } public Set getNodeContextmenus() { return this.node_contextmenus; } public Set getTypeContextmenus() { return this.type_contextmenus; } public void clearNodeContextmenus() { this.node_contextmenus.clear(); } public void clearTypeContextmenus() { this.type_contextmenus.clear(); } public void clearContextmenus() { this.contextmenus.clear(); } }