package com.vci.client.framework.rightdistribution.roleRight; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.tree.TreePath; import com.vci.corba.common.VCIError; import com.vci.corba.omd.btm.BtmItem; import com.vci.corba.portal.data.PLPageDefination; import com.vci.corba.portal.data.PLUILayout; import com.vci.corba.portal.data.PLTabButton; import com.vci.corba.portal.data.PLTabPage; import com.vci.client.common.VCIBasePanel; import com.vci.client.common.objects.RoleObject; import com.vci.client.common.providers.ServiceProvider; import com.vci.client.framework.common.RightType; import com.vci.client.framework.delegate.RightManagementClientDelegate; import com.vci.client.framework.delegate.RoleRightClientDelegate; import com.vci.client.framework.rightConfig.modelConfig.ModuleTreeCellRenderer; import com.vci.client.framework.rightConfig.object.FunctionObject; import com.vci.client.framework.rightdistribution.object.RoleRightObject; import com.vci.client.framework.specialrole.ModuleInterface.IModuleShow; import com.vci.client.framework.systemConfig.stafforgmanage.ListLabelCellRender; import com.vci.client.portal.utility.UIDataFetcher; import com.vci.client.ui.exception.VCIException; import com.vci.client.ui.image.BundleImage; import com.vci.client.ui.locale.LocaleDisplay; import com.vci.client.ui.swing.KJButton; import com.vci.client.ui.swing.VCIOptionPane; import com.vci.client.ui.swing.VCISwingUtil; import com.vci.client.ui.swing.components.VCIJButton; import com.vci.client.ui.swing.components.VCIJLabel; import com.vci.client.ui.swing.components.VCIJList; import com.vci.client.ui.swing.components.VCIJOptionPane; import com.vci.client.ui.swing.components.VCIJPanel; import com.vci.client.ui.swing.components.VCIJScrollPane; import com.vci.client.ui.tree.CheckBoxTreeManager; import com.vci.client.ui.tree.VCIBaseTree; import com.vci.client.ui.tree.VCIBaseTreeModel; import com.vci.client.ui.tree.VCIBaseTreeNode; import com.vci.client.LogonApplication; import com.vci.client.common.ClientLog4j; /** * 在bs架构下,基于建模类型的UI模块授权 * @author VCI_STGK_Lincq * */ public class BSTypeRoleRightPanel extends VCIBasePanel implements IModuleShow{ private JLabel roleListLab = new JLabel(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.RoleList","RMIPFramework", getLocale()));// 角色列表Lab private JLabel titleLab = new JLabel(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.name","RMIPFramework", getLocale()));// title JList roleList = new JList(); // 角色列表 private String moduleName = "UI授权"; private JButton addButton = new JButton(); private JButton delButton = new JButton(); private VCIJButton btnSaveToTemp = VCISwingUtil.createVCIJButton( "saveToTemp", "保存权限模板", "保存权限模板", "wand.png", new ActionListener() { @Override public void actionPerformed(ActionEvent e) { saveToTemp(); } }); private VCIJButton btnApplyFromTemp = VCISwingUtil.createVCIJButton( "saveToTemp", "应用权限模板", "应用权限模板", "tick.png", new ActionListener() { @Override public void actionPerformed(ActionEvent e) { applyFromTemp(); } }); JScrollPane scrollTree = null; JSplitPane jspConfigPanel; // 把Panel分成左右两部分 private JScrollPane leftPanel = new JScrollPane(); VCIBaseTree tree; VCIBaseTreeModel treeModel; VCIBaseTreeNode rootNode; CheckBoxTreeManager treeManager; private RoleObject curRole = null; private JTextField top = new JTextField();// 上横线 private JTextField bottom = new JTextField();// 下横线 private static Map funMap = new LinkedHashMap(); private Map mapFuncRight = new HashMap(); /** * 刷新按钮 */ private JPopupMenu popupMenu; private JMenuItem refMenuItem = new JMenuItem("刷新", VCISwingUtil.createImageIcon("arrow_refresh.png"));//刷新 /**查询功能**/ private JLabel searchLbl = new JLabel("查询:"); private JTextField searchTxt = new JTextField(20); private KJButton searchBtn = new KJButton("", "search.gif"); private String currentUserName = LogonApplication.getUserEntityObject().getUserName(); public BSTypeRoleRightPanel(FunctionObject funcObj) { super(funcObj); // rightRoleMap(); init(); LogonApplication.getUserEntityObject().setModules(this.getModuleName()); } public void init() { JPanel palMain = new JPanel(); JPanel contentPanel = new JPanel(); JPanel buttonPanel = new JPanel(); JPanel midPanel = new JPanel(); palMain.setLayout(new BorderLayout()); roleList(""); contentItem(contentPanel); jButtonPanl(buttonPanel); initTreeNode(); refMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { refreshRole(); } }); searchBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { searchRoleList(); } }); midPanel.setLayout(new BorderLayout()); midPanel.add(top, BorderLayout.NORTH); midPanel.add(bottom, BorderLayout.SOUTH); midPanel.add(contentPanel, BorderLayout.CENTER); palMain.add(titleLab, BorderLayout.NORTH); palMain.add(midPanel, BorderLayout.CENTER); palMain.add(buttonPanel, BorderLayout.SOUTH); JPanel leftMainPanel = new JPanel(new BorderLayout()); leftMainPanel.add(leftPanel,BorderLayout.CENTER); leftMainPanel.add(getSearchPanel(),BorderLayout.NORTH); jspConfigPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftMainPanel, palMain); jspConfigPanel.setDividerSize(7); jspConfigPanel.setContinuousLayout(true); jspConfigPanel.setOneTouchExpandable(true); jspConfigPanel.setDividerLocation(220); this.setLayout(new BorderLayout()); this.add(jspConfigPanel, BorderLayout.CENTER); } public void roleList(String searchText) { setRoleList(searchText); roleList.setCellRenderer(new ListLabelCellRender()); roleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); roleList.getSelectedValue(); roleList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { RoleObject roleObj = (RoleObject)roleList.getSelectedValue(); curRole = roleObj; tree.clearSelection(); treeManager.getSelectionModel().clearSelection(); initRoleRight(roleObj.getId()); } }); leftPanel.getViewport().add(roleList); } Map allRightRoleMap = new HashMap(); public void initRoleRight(String roleId){ try { allRightRoleMap = new HashMap(); RoleRightObject[] roleRightObjs = new RoleRightClientDelegate().getRoleRightList(roleId, LogonApplication.getUserEntityObject().getUserName()); visitAllTreeNode(rootNode, roleRightObjs); } catch (VCIException e) { e.printStackTrace(); VCIOptionPane.showError(LogonApplication.frame, LocaleDisplay.getI18nString(e,"RMIPFramework", getLocale())); } } private void visitAllTreeNode(VCIBaseTreeNode node, RoleRightObject[] roleRightObjs){ Map rightMap = new HashMap(); for(RoleRightObject obj:roleRightObjs){ allRightRoleMap.put(obj.getFuncId(), obj); rightMap.put(obj.getFuncId(), obj.getRightValue()); } visitAllTreeNode(node,rightMap); } private void visitAllTreeNode(VCIBaseTreeNode node,Map rightMap){ for(int i = 0;i < node.getChildCount();i++){ VCIBaseTreeNode childNode = (VCIBaseTreeNode)node.getChildAt(i); Object obj = childNode.getObj(); //如果是模块,则先判断是否有此模块权限,如果有,则判断下级模块及操作 if(obj instanceof BtmItem){ String id = ((BtmItem) obj).name; if(rightMap.containsKey(id)){ visitAllTreeNode(childNode,rightMap); } } else if(obj instanceof PLUILayout){ visitAllTreeNode(childNode,rightMap); } else if (obj instanceof PLTabPage) { visitAllTreeNode(childNode,rightMap); } else if (obj instanceof PLPageDefination) { visitAllTreeNode(childNode,rightMap); } else if (obj instanceof PLTabButton) { String id = ((PLTabButton) obj).plTableOId; if(rightMap.containsKey(id)){ long rightValue = rightMap.get(id); //System.out.println("====TableOId Right:" + id + " = " + rightValue); int nodeValue = ((PLTabButton) obj).plSeq; if (nodeValue >= 0 && nodeValue <= 63) { //long preValue = (long)Math.pow(2, nodeValue); long temp = (rightValue >> nodeValue) & 1; //进行位与操作,如果相等则表示具有当前操作的权限 //if(preValue == (preValue & rightValue)){ if (temp == 1) { treeManager.getSelectionModel().addSelectionPath(new TreePath(childNode.getPath())); } } } } } } /** * 给角色列表赋值 */ private void setRoleList(String searchText) { try { RightManagementClientDelegate rightManagementClient = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()); RoleObject[] roleObjs = rightManagementClient.fetchRoleInfoByUserType(LogonApplication.getUserEntityObject().getUserName());// 取得角色信息 if(!"".equals(searchText)) { List list = new LinkedList(); for(RoleObject roleObj : roleObjs) { if(roleObj.getName().indexOf(searchText) != -1) { list.add(roleObj); } } roleList = new JList(list.toArray(new RoleObject[0])); return ; } roleList = new JList(roleObjs); } catch (VCIException e) { e.printStackTrace(); VCIOptionPane.showError(LogonApplication.frame, LocaleDisplay.getI18nString(e,"RMIPFramework", getLocale())); } } public void contentItem(JPanel contentPanel) { top.setPreferredSize(new Dimension(60,2)); scrollTree = new JScrollPane(); bottom.setPreferredSize(new Dimension(60,2)); contentPanel.setLayout(new BorderLayout()); contentPanel.add(roleListLab); contentPanel.add(scrollTree); } public void jButtonPanl(JPanel p) { addButton.setText(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.addButton.file","RMIPFramework", getLocale())); addButton.setIcon(new BundleImage().createImageIcon("create.gif")); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { add_actionPerform(); } }); delButton.setText(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.delButton.file","RMIPFramework", getLocale())); delButton.setIcon(new BundleImage().createImageIcon("delete.gif")); delButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mapFuncRight.clear(); treeManager.getSelectionModel().clearSelection(); } }); p.add(addButton); p.add(delButton); // p.add(btnSaveToTemp); // p.add(btnApplyFromTemp); } public void initTreeNode(){ rootNode = new VCIBaseTreeNode(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.moduleTree","RMIPFramework", getLocale()), "root"); treeModel = new VCIBaseTreeModel(rootNode); tree = new VCIBaseTree(treeModel, new ModuleTreeCellRenderer()); BtmItem[] btmItems = new BtmItem[0]; try { btmItems = ServiceProvider.getOMDService().getBTMService().getAllBtmItem(""); } catch (VCIError e) { // TODO Auto-generated catch block e.printStackTrace(); return; } funMap.clear(); for(int k = 0;k < btmItems.length;k++) { funMap.put(btmItems[k].name, btmItems[k].name); } UIDataFetcher uiDataFechter = new UIDataFetcher(); for (int i = 0; i < btmItems.length; i++) { VCIBaseTreeNode node = new VCIBaseTreeNode(btmItems[i].label+"("+ btmItems[i].name+")", btmItems[i]); treeModel.insertNodeInto(node, rootNode,rootNode.getChildCount()); long startTime = System.currentTimeMillis(); setChildNode(node, btmItems[i], uiDataFechter); long endTime = System.currentTimeMillis(); long d = endTime -startTime; ClientLog4j.logger.debug("加载时间:" + btmItems[i].name + " - " + d + " ms"); } treeManager = new CheckBoxTreeManager(tree); scrollTree.getViewport().removeAll(); scrollTree.getViewport().add(tree); scrollTree.repaint(); } private void refreshRole() { roleList(""); treeManager.getSelectionModel().clearSelection(); } /**查询满足条件的角色信息**/ private void searchRoleList() { String search = this.searchTxt.getText().trim(); roleList(search); treeManager.getSelectionModel().clearSelection(); } private JPanel getSearchPanel() { JPanel searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); searchPanel.add(searchLbl); searchPanel.add(searchTxt); searchPanel.add(searchBtn); return searchPanel; } private void add_actionPerform(){ if (!checkItem()) { return; } try { mapFuncRight.clear(); boolean refresh = true; TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); //当没有选中模块的时候 if (treePath == null) { refresh = false; } RoleRightObject[] roleRightObjs = getSelectedRoleRightObjs(treePath); boolean res = new RoleRightClientDelegate(LogonApplication.getUserEntityObject()).saveRoleRight(roleRightObjs,curRole.getId(),currentUserName); if(res){ VCIOptionPane.showMessage(LogonApplication.frame, "功能模块授权成功!"); } if(refresh){ treeManager.getSelectionModel().clearSelection(); initRoleRight(curRole.getId()); } }catch (VCIException e1) { e1.printStackTrace(); VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e1); } } private RoleRightObject[] getSelectedRoleRightObjs(TreePath[] treePath){ mapFuncRight.clear(); RoleRightObject[] roleRightObjs = new RoleRightObject[0]; if(treePath == null){ //1。先从所有权限对象中删除模块权限对象 Set> funSet = funMap.entrySet(); Iterator> funIt = funSet.iterator(); while(funIt.hasNext()){ Entry next = funIt.next(); String key = next.getKey(); //String value = next.getValue(); allRightRoleMap.remove(key); } //2。再保存选中的模块对象到所有权限中 Set> entrySet = mapFuncRight.entrySet(); Iterator> iterator = entrySet.iterator(); while(iterator.hasNext()){ Entry next = iterator.next(); //String key = next.getKey(); RoleRightObject rightObj = next.getValue(); allRightRoleMap.put(rightObj.getFuncId(), rightObj); } mapFuncRight = allRightRoleMap; /**上面处理完成后,循环遍历取出MAP里的对象进行保存**/ roleRightObjs = new RoleRightObject[mapFuncRight.size()]; Set objSet = mapFuncRight.keySet(); Iterator it = objSet.iterator(); int i = 0; while(it.hasNext()){ roleRightObjs[i++] = mapFuncRight.get(it.next()); } } else { for(int i = 0;i < treePath.length;i++){ VCIBaseTreeNode node = (VCIBaseTreeNode)treePath[i].getLastPathComponent(); Object obj = node.getObj(); if(obj instanceof String){//如果是root节点,则保存所有模块的权限 getRightValue(node,false);//向下获取所有模块的权限值 }else if(!(node.getObj() instanceof PLTabButton)){ getRightValue(node,true);//向上处理 getRightValue(node,false);//向下处理(包含当前节点) }else if(node.getObj() instanceof PLTabButton){ VCIBaseTreeNode parentNode = (VCIBaseTreeNode)node.getParent(); String funcId = ((PLPageDefination)parentNode.getObj()).plOId; getRightValue(parentNode,true);//向上处理该操作父级的上级模块权限(不包含父节点) if(!mapFuncRight.containsKey(funcId)){ RoleRightObject roleRightObj = new RoleRightObject(); roleRightObj.setFuncId(funcId); roleRightObj.setRightType(RightType.UI); roleRightObj.setRightValue(countRightValue(parentNode,false));//没有操作的模块权限值存储为0 roleRightObj.setRoleId(curRole.getId()); roleRightObj.setCreateUser(currentUserName); roleRightObj.setCreateTime(new Date()); roleRightObj.setModifyUser(currentUserName); roleRightObj.setModifyTime(new Date()); roleRightObj.setLicensor(""); mapFuncRight.put(funcId, roleRightObj); } } } //1。先从所有权限对象中删除模块权限对象 Set> funSet = funMap.entrySet(); Iterator> funIt = funSet.iterator(); while(funIt.hasNext()){ Entry next = funIt.next(); String key = next.getKey(); //String value = next.getValue(); allRightRoleMap.remove(key); } //2。再保存选中的模块对象到所有权限中 Set> entrySet = mapFuncRight.entrySet(); Iterator> iterator = entrySet.iterator(); while(iterator.hasNext()){ Entry next = iterator.next(); //String key = next.getKey(); RoleRightObject rightObj = next.getValue(); allRightRoleMap.put(rightObj.getFuncId(), rightObj); } mapFuncRight = allRightRoleMap; /**上面处理完成后,循环遍历取出MAP里的对象进行保存**/ roleRightObjs = new RoleRightObject[mapFuncRight.size()]; Set objSet = mapFuncRight.keySet(); Iterator it = objSet.iterator(); int i = 0; while(it.hasNext()){ roleRightObjs[i++] = mapFuncRight.get(it.next()); } } return roleRightObjs; } /** * 获取权限 * @param isUp 是否是向上获取,如果是向上获取,传进来的必然是模块节点,且上级模块必然是没有选中 */ private void getRightValue(VCIBaseTreeNode node,boolean isUp){ if(isUp){//向上获取,存储每个上级模块的权限值 VCIBaseTreeNode parentNode = (VCIBaseTreeNode)node.getParent(); while(!"root".equals(parentNode.getObj())){ String funcId = ""; if (parentNode.getObj() instanceof BtmItem) { BtmItem btmItem = (BtmItem) parentNode.getObj(); funcId = btmItem.name; } else if (parentNode.getObj() instanceof PLUILayout) { PLUILayout context = (PLUILayout) parentNode.getObj(); funcId = context.plOId; } else if (parentNode.getObj() instanceof PLTabPage) { PLTabPage tab = (PLTabPage) parentNode.getObj(); funcId = tab.plOId; } else if (parentNode.getObj() instanceof PLPageDefination){ PLPageDefination pageDef = (PLPageDefination) parentNode.getObj(); funcId = pageDef.plOId; } else if (parentNode.getObj() instanceof PLTabButton) { PLTabButton but = (PLTabButton)parentNode.getObj(); funcId = but.plOId; } RoleRightObject obj = new RoleRightObject(); obj.setFuncId(funcId); obj.setRightType(RightType.UI); obj.setRightValue(1);//没有操作的模块权限值存储为0 obj.setRoleId(curRole.getId()); obj.setCreateUser(currentUserName); obj.setCreateTime(new Date()); obj.setModifyUser(currentUserName); obj.setModifyTime(new Date()); obj.setLicensor(""); if(!mapFuncRight.containsKey(funcId)){ mapFuncRight.put(funcId, obj); } parentNode = (VCIBaseTreeNode)parentNode.getParent(); } }else{//向下获取,无需判断是否选中,但需要判断其子级是否是操作 //先存储当前节点 String funcId = ""; if(node.getObj() instanceof String){ funcId = (String)node.getObj(); } else if (node.getObj() instanceof BtmItem) { BtmItem btmItem = (BtmItem) node.getObj(); funcId = btmItem.name; } else if (node.getObj() instanceof PLUILayout) { PLUILayout context = (PLUILayout) node.getObj(); funcId = context.plOId; } else if (node.getObj() instanceof PLTabPage) { PLTabPage tab = (PLTabPage) node.getObj(); funcId = tab.plOId; } else if (node.getObj() instanceof PLPageDefination){ PLPageDefination pageDef = (PLPageDefination) node.getObj(); funcId = pageDef.plOId; } else if (node.getObj() instanceof PLTabButton) { PLTabButton but = (PLTabButton)node.getObj(); funcId = but.plOId; } if(!(node.getObj() instanceof PLPageDefination)){//子节点不是操作 if(!mapFuncRight.containsKey(funcId)&&!funcId.equals("root")){ RoleRightObject roleRightObj = new RoleRightObject(); roleRightObj.setFuncId(funcId); roleRightObj.setRightType(RightType.UI); roleRightObj.setRightValue(0);//没有操作的模块权限值存储为0 roleRightObj.setRoleId(curRole.getId()); roleRightObj.setCreateUser(currentUserName); roleRightObj.setCreateTime(new Date()); roleRightObj.setModifyUser(currentUserName); roleRightObj.setModifyTime(new Date()); roleRightObj.setLicensor(""); mapFuncRight.put(funcId, roleRightObj); } for(int i = 0;i < node.getChildCount();i++){ //对每个子向下递归遍历 getRightValue((VCIBaseTreeNode)node.getChildAt(i),false); } }else{//子节点是操作 if(!mapFuncRight.containsKey(funcId)){ RoleRightObject roleRightObj = new RoleRightObject(); roleRightObj.setFuncId(funcId); roleRightObj.setRightType(RightType.UI); roleRightObj.setRightValue(countRightValue(node,true));//没有操作的模块权限值存储为0 roleRightObj.setRoleId(curRole.getId()); roleRightObj.setCreateUser(currentUserName); roleRightObj.setCreateTime(new Date()); roleRightObj.setModifyUser(currentUserName); roleRightObj.setModifyTime(new Date()); roleRightObj.setLicensor(""); mapFuncRight.put(funcId, roleRightObj); } } } } /** * 传入直接挂接操作的模块的节点,计算该节点的权限值 * @param node 模块节点 * @param isAll 是否子级全部选中 * @return */ private long countRightValue(VCIBaseTreeNode node,boolean isAll){ long value = 0; for(int i = 0;i < node.getChildCount();i++){ VCIBaseTreeNode childNode = (VCIBaseTreeNode)node.getChildAt(i); if(isAll || treeManager.getSelectionModel().isPathSelected(new TreePath(childNode.getPath()))){ PLTabButton obj = (PLTabButton)childNode.getObj(); value += (long)Math.pow(2, obj.plSeq);//累计加上各个操作的权限值 } } return value; } private void setChildNode(VCIBaseTreeNode node ,Object funcObj, UIDataFetcher uiDataFechter) { if (funcObj instanceof BtmItem) { BtmItem btmItem = (BtmItem) funcObj; List contexts = uiDataFechter.getContext(btmItem.name); if (contexts == null) { return; } for(PLUILayout context : contexts){ VCIBaseTreeNode curNode = new VCIBaseTreeNode(context.plName+"("+context.plCode+")", context); treeModel.insertNodeInto(curNode, node,node.getChildCount()); funMap.put(context.plOId, context.plCode); setChildNode(curNode, context, uiDataFechter); } } else if (funcObj instanceof PLUILayout) { PLUILayout context = (PLUILayout) funcObj; List tabs = uiDataFechter.getTabs(context.plOId); if (tabs == null) { return; } for(PLTabPage tab : tabs){ VCIBaseTreeNode curNode = new VCIBaseTreeNode(tab.plName, tab); treeModel.insertNodeInto(curNode, node,node.getChildCount()); funMap.put(tab.plOId, tab.plName); setChildNode(curNode, tab, uiDataFechter); } } else if (funcObj instanceof PLTabPage) { PLTabPage tab = (PLTabPage) funcObj; List pageDefinations = uiDataFechter.getComopnent(tab.plOId); if (pageDefinations == null) { return; } for (PLPageDefination pageDefination : pageDefinations) { VCIBaseTreeNode curNode = new VCIBaseTreeNode(pageDefination.name, pageDefination); treeModel.insertNodeInto(curNode, node,node.getChildCount()); funMap.put(pageDefination.plOId, pageDefination.name); setChildNode(curNode, pageDefination, uiDataFechter); } } else if (funcObj instanceof PLPageDefination) { PLPageDefination pageDef = (PLPageDefination) funcObj; List buttons = uiDataFechter.getButtons(pageDef.plOId); if (buttons == null) { return; } for(PLTabButton button : buttons){ if(!button.show.equals("0")){ continue; } VCIBaseTreeNode curNode = new VCIBaseTreeNode(button.plLabel, button); treeModel.insertNodeInto(curNode, node,node.getChildCount()); funMap.put(button.plTableOId, button.plLabel); //setChildNode(curNode, button, uiDataFechter); curNode.setLeaf(true); } } else if (funcObj instanceof PLTabButton) { node.setLeaf(true); } } /** * 校验 * * @return */ public boolean checkItem() { if (roleList.getSelectedValue() == null|| "null".equals(roleList.getSelectedValue())) { message("rmip.framework.rightdistribution.moduleRight.roleListNotNull.message","RMIPFramework"); return false; } return true; } private void message(String proValue, String fileName) { VCIOptionPane.showMessage(LogonApplication.frame,LocaleDisplay.getI18nString(proValue, fileName, getLocale())); } /** * */ private static final long serialVersionUID = 120493240584388454L; @Override public String getUserID() { // TODO Auto-generated method stub return null; } @Override public String getRoleID() { // TODO Auto-generated method stub return null; } @Override public JPanel getModuleComponent() { // TODO Auto-generated method stub return null; } @Override public String getModuleName() { // TODO Auto-generated method stub if (this.getFuncObj() != null && this.getFuncObj().getName() != null) return this.getFuncObj().getName(); else if (moduleName != null && !moduleName.isEmpty()) return moduleName; else return this.getClass().getName(); } @Override public String getIconName() { // TODO Auto-generated method stub return null; } @Override public String getModuleShowInfo() { // TODO Auto-generated method stub return null; } private LinkedHashMap roleRightObjsMap = new LinkedHashMap(); private void saveToTemp(){ if(!isSelectedRole()) return; TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); RoleRightObject[] lastRoleRightObjs = getSelectedRoleRightObjs(treePath); if(roleRightObjsMap.containsKey(curRole)){ roleRightObjsMap.remove(curRole); } roleRightObjsMap.put(curRole, lastRoleRightObjs); VCIJOptionPane.showMessage(this, "存储成功!"); } private void applyFromTemp(){ if(!isSelectedRole()) return; if(roleRightObjsMap.size() == 0){ VCIJOptionPane.showMessage(this, "请先存储模板!"); return; } int index = 0; int size = roleRightObjsMap.size(); RoleObject[] roles = new RoleObject[size]; RoleRightObject[] lastRoleRightObjs = new RoleRightObject[0]; Iterator it = roleRightObjsMap.keySet().iterator(); while(it.hasNext()){ RoleObject roleObj = it.next(); roles[index] = roleObj; lastRoleRightObjs = roleRightObjsMap.get(roleObj); index += 1; } if(size == 1){ tree.clearSelection(); treeManager.getSelectionModel().clearSelection(); visitAllTreeNode(rootNode, lastRoleRightObjs); } else { Object[] messages = new Object[2]; messages[0] = new VCIJLabel("请选择:"); VCIJPanel pal = new VCIJPanel(new BorderLayout()); VCIJList list = new VCIJList(roles); list.setSelectedIndex(0); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); pal.add(new VCIJScrollPane(list), BorderLayout.CENTER); pal.setPreferredSize(new Dimension(200, 100)); messages[1] = pal; Object[] options = {"确定","取消"}; int res = VCIJOptionPane.showOptionDialog( LogonApplication.frame, messages, "选择模板", VCIJOptionPane.DEFAULT_OPTION, VCIJOptionPane.INFORMATION_MESSAGE, null, options, options[0]); if(res == 0){ RoleObject roleObj = (RoleObject)list.getSelectedValue(); lastRoleRightObjs = roleRightObjsMap.get(roleObj); tree.clearSelection(); treeManager.getSelectionModel().clearSelection(); visitAllTreeNode(rootNode, lastRoleRightObjs); VCIJOptionPane.showMessage(this, "应用成功!"); } } } private boolean isSelectedRole(){ if(curRole == null) { VCIJOptionPane.showMessage(this, "请先选择角色!"); return false; } return true; } }