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.ItemEvent; import java.awt.event.ItemListener; 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.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextField; import javax.swing.JComboBox; import javax.swing.ListSelectionModel; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; import javax.swing.tree.TreePath; import org.apache.commons.lang3.StringUtils; 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.LogonApplication; import com.vci.client.common.VCIBasePanel; import com.vci.client.common.objects.RoleObject; import com.vci.client.common.objects.UserEntityObject; import com.vci.client.framework.common.RightType; import com.vci.client.framework.rightdistribution.object.BizTypeEx; import com.vci.client.framework.rightdistribution.object.UILayoutEx; 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.omd.provider.BtmProvider; import com.vci.client.portal.utility.UIDataFetcher; import com.vci.client.portal.utility.UITools; 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.process.QANProcessBar; import com.vci.client.ui.process.QANProcessBarFrame; 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.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.corba.common.VCIError; /** * 在bs架构下,基于建模类型的UI模块授权 * @author VCI_STGK_Lincq * */ public class BSTypeRoleRightPanel2 extends VCIBasePanel implements IModuleShow{ private String moduleName = "UI授权"; 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 JButton addButton = new JButton(); private JButton reAddButton = new JButton(); private JButton delButton = new JButton(); // private JButton searchButton = new JButton(); private JButton clearButton = new JButton(); private JButton removeButton = new JButton(); 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 rightMap = new HashMap(); /** * 刷新按钮 */ 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(); /**权限树的查询 */ private JLabel typeLbl = new JLabel("业务类型:"); private JTextField typeText = new JTextField(20); private JComboBox comboType = new JComboBox(); private JLabel contextLbl = new JLabel("上下文:"); private JTextField contextText = new JTextField(20); private JComboBox comboUIContext = new JComboBox(); private KJButton sBtn = new KJButton("", "search.gif"); private UIDataFetcher uiDataFechter = new UIDataFetcher(); public BSTypeRoleRightPanel2(FunctionObject funcObj) { super(funcObj); 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()); initRoleList(""); 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(); } }); // searchButton.setText(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.lookButton.file","RMIPFramework", getLocale())); // searchButton.setIcon(new BundleImage().createImageIcon("search.gif")); // searchButton.addActionListener(new ActionListener() { // public void actionPerformed(ActionEvent e) { //// searchMyRigth(); // } // }); midPanel.setLayout(new BorderLayout()); midPanel.add(top, BorderLayout.NORTH); midPanel.add(bottom, BorderLayout.SOUTH); midPanel.add(contentPanel, BorderLayout.CENTER); JPanel panelTitle = new JPanel(); FlowLayout fl = new FlowLayout(); fl.setAlignment(FlowLayout.LEFT); panelTitle.setLayout(fl); panelTitle.add(titleLab); JLabel labelSpace = new JLabel(); labelSpace.setPreferredSize(new Dimension(50, 20)); panelTitle.add(labelSpace); panelTitle.add(typeLbl); //panelTitle.add(typeText); comboType.setPreferredSize(new Dimension(250, 25)); comboType.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if(e.getStateChange() == ItemEvent.SELECTED){ BizTypeItemSelectChanged(e); } } }); panelTitle.add(comboType); panelTitle.add(contextLbl); //panelTitle.add(contextText); comboUIContext.setPreferredSize(new Dimension(250, 25)); comboUIContext.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if(e.getStateChange() == ItemEvent.SELECTED){ UIContextSelectChanged(e); } } }); panelTitle.add(comboUIContext); panelTitle.add(sBtn); palMain.add(panelTitle, 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); } private void BizTypeItemSelectChanged(ItemEvent e) { comboUIContext.removeAllItems(); BizTypeEx btEx = (BizTypeEx)comboType.getSelectedItem(); if (btEx == null || btEx.getBizType() == null) { initUIContextTree(null, null); return; } BtmItem bt = btEx.getBizType(); PLUILayout[] contexts; try { contexts = UITools.getService().getPLUILayoutsByRelatedType(bt.name); comboUIContext.addItem(new UILayoutEx(null)); for (PLUILayout ui : contexts) { comboUIContext.addItem(new UILayoutEx(ui)); } } catch (VCIError e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } private void UIContextSelectChanged(ItemEvent e) { BtmItem bt = null; PLUILayout uiContext = null; BizTypeEx btEx = (BizTypeEx)comboType.getSelectedItem(); if (btEx != null) bt = btEx.getBizType(); UILayoutEx uiEx = (UILayoutEx)comboUIContext.getSelectedItem(); if (uiEx != null) uiContext = uiEx.getUIContext(); initUIContextTree(bt, uiContext); } private String getNodeText(Object obj) { String text = ""; if (obj == null) return null; if (obj instanceof BtmItem) { BtmItem bt = (BtmItem)obj; return bt.name+" ["+ bt.label+"]"; } else if (obj instanceof PLUILayout) { PLUILayout ui = (PLUILayout)obj; return ui.plCode+" ["+ui.plName+"]"; } else if (obj instanceof PLTabPage) { PLTabPage tab = (PLTabPage)obj; return tab.plName; } else if (obj instanceof PLPageDefination) { PLPageDefination page = (PLPageDefination)obj; return page.name; } else if (obj instanceof PLTabButton) { PLTabButton btn = (PLTabButton)obj; return btn.plLabel; } return text; } private void initUIContextTree(BtmItem bt, PLUILayout uiContext) { treeManager.getSelectionModel().removeSelectionPath(new TreePath(rootNode.getPath())); //先清除所有展开的节点 rootNode.removeAllChildren(); treeModel.reload(); // for(int i=rootNode.getChildCount(); i>0; i--){ // VCIBaseTreeNode childNode = (VCIBaseTreeNode)rootNode.getChildAt(i-1); // treeModel.removeNodeFromParent(childNode); // } funMap.clear(); //rootNode.setExpand(true); if(bt != null) { if (uiContext != null) { Map showNodes = new HashMap(); VCIBaseTreeNode typeNode = showNodes.get(bt.name); if(typeNode == null){ //添加类型节点 typeNode = new VCIBaseTreeNode(getNodeText(bt), bt);//bt.name+" ["+ bt.label+"]", bt); treeModel.insertNodeInto(typeNode, rootNode,rootNode.getChildCount()); //typeNode.setExpand(true); funMap.put(bt.name, bt.name); showNodes.put(bt.name, typeNode); } //添加上下文节点及子节点 VCIBaseTreeNode curNode = new VCIBaseTreeNode(getNodeText(uiContext), uiContext);//uiContext.plName+" ["+uiContext.plCode+"]", uiContext); //curNode.setExpand(true); treeModel.insertNodeInto(curNode, typeNode,typeNode.getChildCount()); funMap.put(uiContext.plOId, uiContext.plCode); setChildNode(curNode, uiContext); } else { VCIBaseTreeNode typeNode = new VCIBaseTreeNode(getNodeText(bt), bt);//bt.label+" ["+ bt.name+"]", bt); treeModel.insertNodeInto(typeNode, rootNode,rootNode.getChildCount()); //typeNode.setExpand(true); funMap.put(bt.name, bt.name); setChildNode(typeNode, bt, uiDataFechter); } }else{ BtmItem[] btmItems = BtmProvider.getInstance().getAllBtmItems(); for (int i = 0; i < btmItems.length; i++) { VCIBaseTreeNode typeNode = new VCIBaseTreeNode(getNodeText(btmItems[i]), btmItems[i]);//btmItems[i].label+"("+ btmItems[i].name+")", btmItems[i]); treeModel.insertNodeInto(typeNode, rootNode,rootNode.getChildCount()); //typeNode.setExpand(true); funMap.put(btmItems[i].name, btmItems[i].name); setChildNode(typeNode, bt, uiDataFechter); } } tree.scrollPathToVisible(new TreePath(rootNode.getPath())); //tree.expandAllTreeNode(new TreePath(rootNode.getPath()), true); if (curRole != null) initRoleRight(curRole.getId()); } public void initRoleList(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 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(getNodeText(context), context);// 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(getNodeText(tab), tab);//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(getNodeText(pageDefination), pageDefination);//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(getNodeText(button), button);//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); } } private void setChildNode(VCIBaseTreeNode node ,Object funcObj, Map rightMap) { if (funcObj instanceof BtmItem) { BtmItem btmItem = (BtmItem) funcObj; List contexts = uiDataFechter.getContext(btmItem.name); if (contexts == null) { return; } for(PLUILayout context : contexts){ if(rightMap.containsKey(context.plOId)){ VCIBaseTreeNode curNode = new VCIBaseTreeNode(context.plName+"("+context.plCode+")", context); curNode.setExpand(true); treeModel.insertNodeInto(curNode, node,node.getChildCount()); funMap.put(context.plOId, context.plCode); setChildNode(curNode, context, rightMap); } } } else if (funcObj instanceof PLUILayout) { PLUILayout context = (PLUILayout) funcObj; List tabs = uiDataFechter.getTabs(context.plOId); if (tabs == null) { return; } for(PLTabPage tab : tabs){ if(rightMap.containsKey(tab.plOId)){ VCIBaseTreeNode curNode = new VCIBaseTreeNode(tab.plName, tab); curNode.setExpand(true); treeModel.insertNodeInto(curNode, node,node.getChildCount()); funMap.put(tab.plOId, tab.plName); setChildNode(curNode, tab, rightMap); } } } else if (funcObj instanceof PLTabPage) { PLTabPage tab = (PLTabPage) funcObj; List pageDefinations = uiDataFechter.getComopnent(tab.plOId); if (pageDefinations == null) { return; } for (PLPageDefination pageDefination : pageDefinations) { if(rightMap.containsKey(pageDefination.plOId)){ VCIBaseTreeNode curNode = new VCIBaseTreeNode(pageDefination.name, pageDefination); curNode.setExpand(true); treeModel.insertNodeInto(curNode, node,node.getChildCount()); funMap.put(pageDefination.plOId, pageDefination.name); setChildNode(curNode, pageDefination, rightMap); } } } else if (funcObj instanceof PLPageDefination) { PLPageDefination pageDef = (PLPageDefination) funcObj; List buttons = uiDataFechter.getButtons(pageDef.plOId); if (buttons == null) { return; } for(PLTabButton button : buttons){ if(rightMap.containsKey(button.plTableOId)){ Long rightValue = rightMap.get(button.plTableOId); int nodeValue = button.plSeq; if (nodeValue >= 0 && nodeValue <= 63) { //long preValue = (long)Math.pow(2, nodeValue); //进行位与操作,如果相等则表示具有当前操作的权限 //if(preValue == (preValue & rightValue)){ long preValue = (rightValue >> nodeValue) & 1; if (preValue == 1) { VCIBaseTreeNode curNode = new VCIBaseTreeNode(button.plLabel, button); curNode.setExpand(true); treeModel.insertNodeInto(curNode, node,node.getChildCount()); funMap.put(button.plTableOId, button.plLabel); setChildNode(curNode, button, rightMap); curNode.setLeaf(true); } } } } } else if (funcObj instanceof PLTabButton) { node.setLeaf(true); } } 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); int nodeValue = ((PLTabButton) obj).plSeq; if (nodeValue >= 0 && nodeValue <= 63) { //long preValue = (long)Math.pow(2, nodeValue); //进行位与操作,如果相等则表示具有当前操作的权限 //if(preValue == (preValue & rightValue)){ long preValue = (rightValue >> nodeValue) & 1; if (preValue == 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(); } }); // reAddButton.setText(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.reAddButton.file","RMIPFramework", getLocale())); // reAddButton.setIcon(new BundleImage().createImageIcon("create.gif")); // reAddButton.addActionListener(new ActionListener() { // public void actionPerformed(ActionEvent e) { // reAdd_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) { rightMap.clear(); treeManager.getSelectionModel().clearSelection(); } }); // removeButton.setText(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.removeButton.file","RMIPFramework", getLocale())); // removeButton.setIcon(new BundleImage().createImageIcon("remove.gif")); // removeButton.addActionListener(new ActionListener() { // public void actionPerformed(ActionEvent e) { // remove_actionPerform(); // } // }); // clearButton.setText(LocaleDisplay.getI18nString("rmip.framework.rightdistribution.moduleRight.clearButton.file","RMIPFramework", getLocale())); // clearButton.setIcon(new BundleImage().createImageIcon("clear.gif")); // clearButton.addActionListener(new ActionListener() { // public void actionPerformed(ActionEvent e) { // clear_actionPerform(); // } // }); sBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String typeStr = typeText.getText(); String contextStr = contextText.getText(); //先清除所有展开的节点 for(int i=rootNode.getChildCount(); i>0; i--){ VCIBaseTreeNode childNode = (VCIBaseTreeNode)rootNode.getChildAt(i-1); treeModel.removeNodeFromParent(childNode); } funMap.clear(); //为保证每次的查询还原到初始所有一级节点执行以下操作 /*BtmItem[] btmItems = BtmProvider.getInstance().getAllBtmItems(); 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()); }*/ /*for(int i=0; i< rootNode.getChildCount(); i++){ VCIBaseTreeNode childNode = (VCIBaseTreeNode)rootNode.getChildAt(i); for(int j=childNode.getChildCount(); j>0; j--){ VCIBaseTreeNode node = (VCIBaseTreeNode) childNode.getChildAt(j-1); treeModel.removeNodeFromParent(node); } }*/ BtmItem[] btmItems = BtmProvider.getInstance().getAllBtmItems(); if(contextStr.trim().length() > 0){ try { //获取所有匹配的上下文对象???sss PLUILayout[] contexts = UITools.getService().getPLUILayoutEntity(contextStr); Map showNodes = new HashMap(); for(PLUILayout context: contexts){ for (int i = 0; i < btmItems.length; i++) { if((context.plRelatedType).equals(btmItems[i].name)){ if(btmItems[i].label.contains(typeStr) || btmItems[i].name.contains(typeStr)){ VCIBaseTreeNode typeNode = showNodes.get(btmItems[i].name); if(typeNode == null){ //添加类型节点 typeNode = new VCIBaseTreeNode(btmItems[i].label+"("+ btmItems[i].name+")", btmItems[i]); funMap.put(btmItems[i].name, btmItems[i].name); showNodes.put(btmItems[i].name, typeNode); treeModel.insertNodeInto(typeNode, rootNode,rootNode.getChildCount()); } //添加上下文节点及子节点 VCIBaseTreeNode curNode = new VCIBaseTreeNode(context.plName+"("+context.plCode+")", context); treeModel.insertNodeInto(curNode, typeNode,typeNode.getChildCount()); funMap.put(context.plOId, context.plCode); setChildNode(curNode, context); } } } } } catch (VCIError e1) { e1.printStackTrace(); } }else if(typeStr.trim().length() > 0 ){ for (int i = 0; i < btmItems.length; i++) { if(btmItems[i].label.contains(typeStr) || btmItems[i].name.contains(typeStr)){ VCIBaseTreeNode typeNode = new VCIBaseTreeNode(btmItems[i].label+"("+ btmItems[i].name+")", btmItems[i]); funMap.put(btmItems[i].name, btmItems[i].name); treeModel.insertNodeInto(typeNode, rootNode,rootNode.getChildCount()); } } }else{ for (int i = 0; i < btmItems.length; i++) { VCIBaseTreeNode typeNode = new VCIBaseTreeNode(btmItems[i].label+"("+ btmItems[i].name+")", btmItems[i]); funMap.put(btmItems[i].name, btmItems[i].name); treeModel.insertNodeInto(typeNode, rootNode,rootNode.getChildCount()); } } treeManager.getSelectionModel().removeSelectionPath(new TreePath(rootNode.getPath())); } }); // p.add(typeLbl); // p.add(typeText); // p.add(contextLbl); // p.add(contextText); // p.add(sBtn); p.add(addButton); // p.add(reAddButton); p.add(delButton); // p.add(removeButton); // p.add(clearButton); } // private void remove_actionPerform(){ // if (!checkItem()) { // return; // } // final QANProcessBarFrame frame = new QANProcessBarFrame(); // TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); // if (treePath == null || treePath.length == 0) { // VCIOptionPane.showMessage(LogonApplication.frame, "请选择要删除的权限"); // return ; // } // QANProcessBar bar = null; // Thread t = new Thread(){ // public void run() { // frame.setContent("正在授权,请稍等......"); // try { // rightMap.clear(); // boolean refresh = true; // TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); // //当没有选中模块的时候 // if (treePath == null && treePath.length == 0){ // refresh = false; // }else{ // RoleRightObject[] roleRightObjs = getRemoveedSelectedRoleRightObjs(treePath); // boolean res = new RoleRightClientDelegate(LogonApplication.getUserEntityObject()).removeRoleRight(roleRightObjs,curRole.getId(),currentUserName); // frame.setProcessBarCancel(true); // if(res){ // VCIOptionPane.showMessage(LogonApplication.frame, "移除UI操作权限成功!"); // } // } // if(refresh){ // treeManager.getSelectionModel().clearSelection(); // initRoleRight(curRole.getId()); // } // } catch (VCIException e1) { // e1.printStackTrace(); // VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e1); // } finally { // frame.setProcessBarCancel(true); // } // } // }; // bar = new QANProcessBar(t, frame, frame,"UI操作授权",false); // bar.setVisible(true); // } // // private void clear_actionPerform(){ // if (!checkItem()) { // return; // } // final QANProcessBarFrame frame = new QANProcessBarFrame(); // TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); // if (treePath == null || treePath.length == 0) { // int result = VCIOptionPane.showConfirmDialog(LogonApplication.frame, this, "您确定要清除所有的UI操作权限吗?", "注意,您确定要清除所有的UI权限吗?", VCIOptionPane.YES_NO_OPTION, VCIOptionPane.WARNING_MESSAGE); // if(result != VCIOptionPane.YES_OPTION){ // return; // } // } // QANProcessBar bar = null; // Thread t = new Thread(){ // public void run() { // frame.setContent("正在清除授权,请稍等......"); // try { // rightMap.clear(); // boolean refresh = true; // TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); // //当没有选中模块的时候 // RoleRightObject[] roleRightObjs = new RoleRightObject[0]; // boolean res = new RoleRightClientDelegate(LogonApplication.getUserEntityObject()).clearRight(curRole.getId(),currentUserName, RightType.UI); // frame.setProcessBarCancel(true); // if(res){ // VCIOptionPane.showMessage(LogonApplication.frame, "UI操作权限清空成功!"); // } // // if(refresh){ // treeManager.getSelectionModel().clearSelection(); // initRoleRight(curRole.getId()); // } // } catch (VCIException e1) { // e1.printStackTrace(); // VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e1); // } finally { // frame.setProcessBarCancel(true); // } // } // }; // bar = new QANProcessBar(t, frame, frame,"UI操作授权",false); // bar.setVisible(true); // } 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 = BtmProvider.getInstance().getAllBtmItems(); funMap.clear(); comboType.addItem(new BizTypeEx(null)); for(int k = 0;k < btmItems.length;k++) { comboType.addItem(new BizTypeEx(btmItems[k])); } 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()); funMap.put(btmItems[i].name, btmItems[i].name); setChildNode(node, btmItems[i]); } treeManager = new CheckBoxTreeManager(tree); scrollTree.getViewport().removeAll(); scrollTree.getViewport().add(tree); scrollTree.repaint(); // tree.addTreeExpansionListener(new TreeExpansionListener() { // // @Override // public void treeExpanded(TreeExpansionEvent event) { // TreePath path = event.getPath(); // VCIBaseTreeNode selNode = (VCIBaseTreeNode)path.getLastPathComponent(); // if(!selNode.isLeaf() && selNode.getChildCount() == 0 && !selNode.isExpand()){ // setChildNode(selNode, selNode.getObj()); // } // } // // @Override // public void treeCollapsed(TreeExpansionEvent event) { // // } // }); } private void refreshRole() { initRoleList(""); treeManager.getSelectionModel().clearSelection(); } /**查询满足条件的角色信息**/ private void searchRoleList() { String search = this.searchTxt.getText().trim(); initRoleList(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; } final QANProcessBarFrame frame = new QANProcessBarFrame(); TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); if (treePath == null || treePath.length == 0) { VCIOptionPane.showMessage(LogonApplication.frame, "您没有选择当前页面上的任何权限,如果需要去除当前页面下的所有权限请选择权限后点击【清除本界面中权限】"); return ; } QANProcessBar bar = null; Thread t = new Thread(){ public void run() { frame.setContent("正在授权,请稍等......"); try { rightMap.clear(); boolean refresh = true; TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); //当没有选中模块的时候 if (treePath == null && treePath.length == 0){ refresh = false; }else{ RoleRightObject[] roleRightObjs = getSelectedRoleRightObjs(treePath); boolean res = new RoleRightClientDelegate(LogonApplication.getUserEntityObject()).saveRoleRight(roleRightObjs,curRole.getId(),currentUserName); frame.setProcessBarCancel(true); if(res){ VCIOptionPane.showMessage(LogonApplication.frame, "UI授权成功!"); } } if(refresh){ treeManager.getSelectionModel().clearSelection(); initRoleRight(curRole.getId()); } } catch (VCIException e1) { e1.printStackTrace(); VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e1); } finally { frame.setProcessBarCancel(true); } } }; bar = new QANProcessBar(t, frame, frame,"功能模块授权",false); bar.setVisible(true); } /* * 该方法作为补充添加授权功能应用 */ // private void reAdd_actionPerform(){ // if (!checkItem()) { // return; // } // TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); // if (treePath == null || treePath.length == 0) { // VCIOptionPane.showMessage(LogonApplication.frame, "您没有在当前页面选择任何的权限,所以将不执行追加权限"); // return ; // } // final QANProcessBarFrame frame = new QANProcessBarFrame(); // Thread t = new Thread(){ // public void run() { // frame.setContent("正在授权,请稍等......"); // try { // rightMap.clear(); // boolean refresh = true; // TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths(); // //当没有选中模块的时候 // if (treePath == null) { // refresh = false; // } // RoleRightObject[] roleRightObjs = getSelectedRoleRightObjs(treePath); // boolean res = new RoleRightClientDelegate(LogonApplication.getUserEntityObject()).addRoleRight(roleRightObjs,curRole.getId(),currentUserName); // frame.setProcessBarCancel(true); // 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); // } finally { // if (frame.isActive()) { // frame.setProcessBarCancel(true); // } // } // } // }; // QANProcessBar bar = new QANProcessBar(t, frame, frame,"功能模块授权",false); // bar.setVisible(true); // } private RoleRightObject[] getSelectedRoleRightObjs(TreePath[] treePath){ rightMap.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 = rightMap.entrySet(); Iterator> iterator = entrySet.iterator(); while(iterator.hasNext()){ Entry next = iterator.next(); String key = next.getKey(); RoleRightObject value = next.getValue(); allRightRoleMap.put(value.getFuncId(), value); } cloneMap(allRightRoleMap, rightMap); //rightMap = allRightRoleMap; /**上面处理完成后,循环遍历取出MAP里的对象进行保存**/ roleRightObjs = new RoleRightObject[rightMap.size()]; Set objSet = rightMap.keySet(); Iterator it = objSet.iterator(); int i = 0; while(it.hasNext()){ roleRightObjs[i++] = rightMap.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(!rightMap.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(""); rightMap.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 = rightMap.entrySet(); Iterator> iterator = entrySet.iterator(); while(iterator.hasNext()){ Entry next = iterator.next(); String key = next.getKey(); RoleRightObject value = next.getValue(); if(!allRightRoleMap.containsKey(value.getFuncId().trim())){ allRightRoleMap.put(value.getFuncId(), value); } } cloneMap(allRightRoleMap, rightMap); //rightMap = allRightRoleMap; /**上面处理完成后,循环遍历取出MAP里的对象进行保存**/ roleRightObjs = new RoleRightObject[rightMap.size()]; Set objSet = rightMap.keySet(); Iterator it = objSet.iterator(); int i = 0; while(it.hasNext()){ roleRightObjs[i++] = rightMap.get(it.next()); } } return roleRightObjs; } private RoleRightObject[] getRemoveedSelectedRoleRightObjs(TreePath[] treePath){ rightMap.clear(); RoleRightObject[] roleRightObjs = new RoleRightObject[0]; if(treePath != null){ 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(!rightMap.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(""); rightMap.put(funcId, roleRightObj); } } } //cloneMap(allRightRoleMap, rightMap); //rightMap = allRightRoleMap; /**上面处理完成后,循环遍历取出MAP里的对象进行保存**/ roleRightObjs = new RoleRightObject[rightMap.size()]; Set objSet = rightMap.keySet(); Iterator it = objSet.iterator(); int i = 0; while(it.hasNext()){ roleRightObjs[i++] = rightMap.get(it.next()); } } return roleRightObjs; } private void cloneMap(Map source, Map target){ target.clear(); for( Object key: source.keySet()){ target.put(key, source.get(key)); } } /** * 获取权限 * @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(!rightMap.containsKey(funcId)){ rightMap.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.isLeaf() && node.getChildCount() == 0){ setChildNode(node, node.getObj()); } if(!(node.getObj() instanceof PLPageDefination)){//子节点不是操作 if(!rightMap.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(""); rightMap.put(funcId, roleRightObj); } for(int i = 0;i < node.getChildCount();i++){ //对每个子向下递归遍历 getRightValue((VCIBaseTreeNode)node.getChildAt(i),false); } }else{//子节点是操作 if(!rightMap.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(""); rightMap.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) { 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); } } 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); } } 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); } } 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); curNode.setLeaf(true); } } else if (funcObj instanceof PLTabButton) { node.setLeaf(true); } } /** * 校验 * * @return */ public boolean checkItem() { //modify by weidy@2019-02-17 //修改模块的名称 UserEntityObject ueo = LogonApplication.getUserEntityObject(); if(getFuncObj() != null && StringUtils.isNotBlank(getFuncObj().getName())) { ueo.setModules(getFuncObj().getName()); }else { ueo.setModules("授权"); } LogonApplication.userEntityObject = ueo; //end weidy 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; } }