package com.vci.client.framework.systemConfig.volumn; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import com.vci.client.ClientSession; import com.vci.client.LogonApplication; import com.vci.client.common.objects.UserObject; import com.vci.client.common.providers.ServiceProvider; import com.vci.client.framework.delegate.RightManagementClientDelegate; import com.vci.client.framework.systemConfig.stafforgmanage.ListLabelCellRenderForRightRole; import com.vci.client.framework.systemConfig.volumn.object.PvolumeObject; import com.vci.client.logon.base.BaseJDialog; 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.VCIOptionPane; import com.vci.corba.common.VCIError; import com.vci.corba.framework.data.UserInfo; import com.vci.corba.framework.data.PvolumeInfo; /** * 文件柜增加成员界面管理 * * @author lw * */ public class PvolumeUserDialog extends BaseJDialog { private static final long serialVersionUID = 1L; private JButton conformBut = new JButton( LocaleDisplay.getI18nString("rmip.stafforg.operate.conform", "RMIPFramework", getLocale())); private JButton cancelBut = new JButton( LocaleDisplay.getI18nString("rmip.stafforg.operate.cancel", "RMIPFramework", getLocale())); private JList allUserList = new JList(); // 所有成员 private JList choosedUserList = new JList(); // 拥有成员 private UserObject logonUserInfo = LogonApplication.getUserObject(); private PvolumeObject pvolumeObj; private JTextField searceText = new JTextField(); public PvolumeUserDialog(PvolumeObject pvolumeObject) { super(LogonApplication.frame); this.pvolumeObj = pvolumeObject; this.setModal(true); init(); } /** * 初始化界面 */ private void init() { JLabel titleLabel = new JLabel(); titleLabel.setText("文件柜添加成员"); titleLabel.setIcon(new BundleImage().createImageIcon("pvolume.gif")); JPanel bottomPanel = new JPanel(); bottomPanel.add(conformBut); bottomPanel.add(cancelBut); JPanel contentPanel = initCenterContentPanel(); initUser(); // 初始化成员信息 JPanel midPanel = new JPanel(); midPanel.setLayout(new BorderLayout()); JTextField jTextField1 = new JTextField();// instead of up line JTextField jTextField2 = new JTextField();// instead of down line jTextField1.setPreferredSize(new Dimension(63, 2)); jTextField2.setPreferredSize(new Dimension(63, 2)); midPanel.add(jTextField1, BorderLayout.NORTH); midPanel.add(jTextField2, BorderLayout.SOUTH); midPanel.add(contentPanel, BorderLayout.CENTER); this.setLayout(new BorderLayout()); this.add(titleLabel, BorderLayout.NORTH); this.add(midPanel, BorderLayout.CENTER); this.add(bottomPanel, BorderLayout.SOUTH); // int x = (int)(this.getParent().getLocationOnScreen().getX()) + 200; // int y = (int)(this.getParent().getLocationOnScreen().getY()) + 80; // this.setLocation(x , y); // this.setSize(600, 450); initDialogSize(600, 450); } private UserObject[] selectUserObjs = null; private UserObject[] selectUserObj2 = null; private JPanel initCenterContentPanel() { JPanel contentPanel = new JPanel(); contentPanel.setLayout(null); JScrollPane jspAllRole = new JScrollPane(); jspAllRole.getViewport().add(allUserList); JLabel searchName = new JLabel("文件柜人员"); JButton queryBtn = new JButton("查询"); searchName.setBounds(new Rectangle(100, 10, 90, 26)); searceText.setBounds(new Rectangle(160, 10, 180, 26)); queryBtn.setBounds(new Rectangle(370, 10, 60, 26)); queryBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { DefaultListModel allListModel = (DefaultListModel) allUserList.getModel(); String queryStr = searceText.getText().trim(); allListModel.removeAllElements(); initUser(); if (!"".equals(queryStr)) { int size = allUserList.getModel().getSize(); allListModel = new DefaultListModel(); for (int i = 0; i < size; i++) { UserObject userObject = (UserObject) allUserList.getModel().getElementAt(i); if (userObject.getTrueName().contains(queryStr) || userObject.getUserName().contains(queryStr)) { allListModel.addElement(userObject); } } allUserList.setModel(allListModel); } } }); contentPanel.add(searchName); contentPanel.add(searceText); contentPanel.add(queryBtn); jspAllRole.setPreferredSize(new Dimension(210, 300)); jspAllRole.setBounds(new Rectangle(30, 50, 210, 300)); jspAllRole.setBorder(new TitledBorder("文件柜外成员")); allUserList.setCellRenderer(new ListLabelCellRenderForRightRole()); JScrollPane jspChooseRole = new JScrollPane(); jspChooseRole.getViewport().add(choosedUserList); jspChooseRole.setPreferredSize(new Dimension(210, 300)); jspChooseRole.setBounds(new Rectangle(330, 50, 210, 300)); jspChooseRole.setBorder(new TitledBorder("文件柜内成员")); choosedUserList.setCellRenderer(new ListLabelCellRenderForRightRole()); DefaultListModel selectListModel = new DefaultListModel(); String pvolumeId = pvolumeObj.getId(); short userType = logonUserInfo.getUserType(); try { selectUserObjs = new RightManagementClientDelegate().fetchUserInfoByPvolumeId(pvolumeId, userType); for (int i = 0; i < 3; i++) {// 特殊处理,查询出不再当前角色中的选中人员 if (userType == 0) { selectUserObj2 = new RightManagementClientDelegate().fetchUserInfoByPvolumeId(pvolumeId, (short)1); } else if (userType == 1) { selectUserObj2 = new RightManagementClientDelegate().fetchUserInfoByPvolumeId(pvolumeId, (short)0); } else { selectUserObj2 = new RightManagementClientDelegate().fetchUserInfoByPvolumeId(pvolumeId, (short)3); } } int selectUserlength = 0; if (selectUserObjs.length == 0) { selectUserlength = selectUserObj2.length; } else if (selectUserObj2.length == 0) { selectUserlength = selectUserObjs.length; } else { selectUserlength = selectUserObjs.length + selectUserObj2.length; } if (selectUserlength != 0) { for (int i = 0; i < selectUserlength; i++) { if (i < selectUserObjs.length) { selectListModel.addElement(selectUserObjs[i]); } else { selectListModel.addElement(selectUserObj2[i - selectUserObjs.length]); } } } } catch (VCIException e1) { VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e1); } choosedUserList.setModel(selectListModel); JButton addButton = new JButton(">>"); addButton.setBounds(260, 100, 50, 25); JButton removeButton = new JButton("<<"); removeButton.setBounds(260, 250, 50, 25); addButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { addButton_actionPerformed(); } }); removeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { removeButton_actionPerformed(); } }); conformBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { conformCreate(); } }); cancelBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cancelCreate(); } }); contentPanel.add(jspChooseRole); contentPanel.add(jspAllRole); contentPanel.add(addButton); contentPanel.add(removeButton); if (LogonApplication.getUserObject().getUserType() == 2) { addButton.setEnabled(false); removeButton.setEnabled(false); } return contentPanel; } /** * 初始化成员信息 */ private void initUser() { try { UserObject[] userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) .fetchUserInfoByType(logonUserInfo.getUserType()); int length = userInfo.length; DefaultListModel alllistModel = new DefaultListModel(); DefaultListModel selectlistModel = (DefaultListModel) choosedUserList.getModel(); int selectLenth = selectlistModel.getSize(); for (int i = 0; i < length; i++) { if (userInfo[i].getStatus() == 1) { continue; } boolean hasSelect = false; for (int j = 0; j < selectLenth; j++) { UserObject selectUserInfo = (UserObject) selectlistModel.get(j); if (selectUserInfo.getId().equals(userInfo[i].getId())) { hasSelect = true; break; } } int userType = logonUserInfo.getUserType();// 登录用户类型 addBy:thq if (!hasSelect) { // 只添加当前用户的下级人员 if (userInfo[i].getUserType() == (userType + 1)) { alllistModel.addElement(userInfo[i]); } } } allUserList.setModel(alllistModel); } catch (VCIException e) { VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e); return; } } /** * 左移 */ private void addButton_actionPerformed() { Object[] objs = allUserList.getSelectedValues(); try { if ((objs == null) || (objs.length == 0)) { VCIOptionPane.showMessageDialog(this, "请选择要增加的成员!"); return; } int len = objs.length; UserObject[] addUserInfo = new UserObject[len]; for (int i = 0; i < len; i++) { addUserInfo[i] = (UserObject) objs[i]; } PvolumeInfo[] pvolumeInfos = ServiceProvider.getFrameService().getAllPvolumes(); for (PvolumeInfo pvolumeInfo : pvolumeInfos) { UserInfo[] userInfos = ServiceProvider.getFrameService().fetchUserInfoByPvolumeId(pvolumeInfo.id, logonUserInfo.getUserType()); for (UserInfo userInfo : userInfos) { if (addUserInfo[0].getId().equals(userInfo.id)) { VCIOptionPane.showMessageDialog(this, "该用户已被分配文件柜,请重新选择分配用户!"); return; } } } DefaultListModel selectListModel = (DefaultListModel) choosedUserList.getModel(); DefaultListModel allListModel = (DefaultListModel) allUserList.getModel(); int size = selectListModel.getSize(); for (int i = 0; i < size; i++) { UserObject entity = (UserObject) selectListModel.getElementAt(i); for (int j = 0; j < len; j++) { if (entity.getId().equals(addUserInfo[j].getId())) { VCIOptionPane.showMessageDialog(this, "要增加的成员已经存在,请重新选择!"); return; } } } for (int i = 0; i < len; i++) { selectListModel.addElement(addUserInfo[i]); allListModel.removeElement(addUserInfo[i]); } } catch (VCIError e) { e.printStackTrace(); } } /** * 右移 */ private void removeButton_actionPerformed() { Object[] objs = choosedUserList.getSelectedValues(); if ((objs == null) || (objs.length == 0)) { VCIOptionPane.showMessageDialog(this, "请选择要移除的成员!"); return; } int len = objs.length; UserObject[] deleteUser = new UserObject[len]; for (int i = 0; i < len; i++) { deleteUser[i] = (UserObject) objs[i]; } DefaultListModel listModel = (DefaultListModel) choosedUserList.getModel(); DefaultListModel allListModel = (DefaultListModel) allUserList.getModel(); for (int i = 0; i < listModel.size(); i++) { UserObject entity = (UserObject) listModel.getElementAt(i); for (int j = 0; j < len; j++) { int a = deleteUser[j].getUserType() - logonUserInfo.getUserType();// 只有当前用户的下级人员才能被有移 if (a != 1) { VCIOptionPane.showMessageDialog(this, "该用户没有权限移除,请选择其它用户!"); return; } else { if (entity.getId().equals(deleteUser[j].getId())) { listModel.removeElement(entity); allListModel.addElement(entity); i--; break; } } } } } /** * 得到选中的文件柜 * * @return */ public UserObject[] getSelectedUserObj() { DefaultListModel listModel = (DefaultListModel) choosedUserList.getModel(); int size = listModel.size(); UserObject[] userInfo = new UserObject[size]; for (int i = 0; i < size; i++) { userInfo[i] = (UserObject) listModel.get(i); } return userInfo; } /** * 确定事件 */ public void conformCreate() { String pvolumId = this.pvolumeObj.getId(); String[] userIds; UserObject[] selectedUserObj = this.getSelectedUserObj(); int arrayLength = selectedUserObj.length + selectUserObj2.length; userIds = new String[arrayLength]; for (int i = 0; i < arrayLength; i++) { if (i < selectedUserObj.length) { userIds[i] = selectedUserObj[i].getId(); } else { userIds[i] = selectUserObj2[i - selectedUserObj.length].getId(); } } try { new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).savePvolume(pvolumId, userIds); } catch (VCIException e) { VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e); return; } this.dispose(); } public void cancelCreate() { dispose(); } }