package com.vci.client.auth2.view; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Locale; import java.util.Vector; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.ListModel; import javax.swing.border.TitledBorder; import javax.swing.table.DefaultTableModel; import com.vci.client.LogonApplication; import com.vci.client.common.objects.UserEntityObject; import com.vci.client.common.objects.UserObject; import com.vci.client.framework.delegate.RightManagementClientDelegate; import com.vci.client.framework.systemConfig.stafforgmanage.ListLabelCellRenderForRightRole; import com.vci.client.logon.base.BaseJDialog; 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; public class UserSelectView extends BaseJDialog { /** * */ private static final long serialVersionUID = 211987245249865484L; private static UserSelectView instance; 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 JTextField searceText = new JTextField(); private DefaultTableModel parentModel = new DefaultTableModel(); public static UserSelectView getInstance(){ if(instance==null){ instance =new UserSelectView(); } return instance; } private UserSelectView() { super(LogonApplication.frame); setModal(true); init(); } private void init() { JLabel titleLabel = new JLabel(); titleLabel.setText("主体添加用户"); titleLabel.setIcon(new BundleImage().createImageIcon("role.png")); JPanel bottomPanel = new JPanel(); bottomPanel.add(this.conformBut); bottomPanel.add(this.cancelBut); JPanel contentPanel = initCenterContentPanel(); initUser(); JPanel midPanel = new JPanel(); midPanel.setLayout(new BorderLayout()); JTextField jTextField1 = new JTextField(); JTextField jTextField2 = new JTextField(); jTextField1.setPreferredSize(new Dimension(63, 2)); jTextField2.setPreferredSize(new Dimension(63, 2)); midPanel.add(jTextField1, "North"); midPanel.add(jTextField2, "South"); midPanel.add(contentPanel, "Center"); setLayout(new BorderLayout()); add(titleLabel, "North"); add(midPanel, "Center"); add(bottomPanel, "South"); initDialogSize(600, 450); } @SuppressWarnings("unchecked") private JPanel initCenterContentPanel() { JPanel contentPanel = new JPanel(); contentPanel.setLayout(null); JScrollPane jspAllRole = new JScrollPane(); jspAllRole.getViewport().add(this.allUserList); JLabel searchName = new JLabel("用户"); JButton queryBtn = new JButton("查询"); searchName.setBounds(new Rectangle(100, 10, 90, 26)); this.searceText.setBounds(new Rectangle(160, 10, 180, 26)); queryBtn.setBounds(new Rectangle(370, 10, 60, 26)); queryBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { DefaultListModel allListModel = (DefaultListModel) UserSelectView.this.allUserList .getModel(); String queryStr = UserSelectView.this.searceText.getText() .trim(); allListModel.removeAllElements(); UserSelectView.this.initUser(); if (!("".equals(queryStr))) { int size = UserSelectView.this.allUserList.getModel() .getSize(); allListModel = new DefaultListModel(); for (int i = 0; i < size; ++i) { UserObject userObject = (UserObject) UserSelectView.this.allUserList .getModel().getElementAt(i); if ((userObject.getTrueName().contains(queryStr)) || (userObject.getUserName().contains(queryStr))) { allListModel.addElement(userObject); } } UserSelectView.this.allUserList.setModel(allListModel); } } }); contentPanel.add(searchName); contentPanel.add(this.searceText); contentPanel.add(queryBtn); jspAllRole.setPreferredSize(new Dimension(210, 300)); jspAllRole.setBounds(new Rectangle(30, 50, 210, 300)); jspAllRole.setBorder(new TitledBorder("未选择用户")); this.allUserList.setCellRenderer(new ListLabelCellRenderForRightRole()); JScrollPane jspChooseRole = new JScrollPane(); jspChooseRole.getViewport().add(this.choosedUserList); jspChooseRole.setPreferredSize(new Dimension(210, 300)); jspChooseRole.setBounds(new Rectangle(330, 50, 210, 300)); jspChooseRole.setBorder(new TitledBorder("已选择用户")); this.choosedUserList .setCellRenderer(new ListLabelCellRenderForRightRole()); DefaultListModel selectListModel = new DefaultListModel(); // old Vector> oldUsers = (Vector>) getParentModel() .getDataVector(); ListModel listModel = this.allUserList.getModel(); UserObject[] selectUserObjs = new UserObject[oldUsers.size()]; if (oldUsers != null && oldUsers.size() > 0) { for (int i = 0; i < oldUsers.size(); i++) { String id = oldUsers.get(i).get(0); for (int j = 0; j < listModel.getSize(); j++) { UserObject user = (UserObject) listModel.getElementAt(j); if (user.getId().equals(id)) { selectUserObjs[i] = user; } } } for (int i = 0; i < selectUserObjs.length; ++i) { selectListModel.addElement(selectUserObjs[i]); } } // String roleId = this.rightRoleObj.getId(); // int userType = this.logonUserInfo.getUserType(); // try { // UserObject[] selectUserObjs = new // RightManagementClientDelegate().fetchUserInfoByRoleId(roleId, // userType); // if (selectUserObjs.length != 0) // for (int i = 0; i < selectUserObjs.length; ++i) // selectListModel.addElement(selectUserObjs[i]); // } // catch (VCIException e1) // { // VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e1); // } this.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 ActionListener() { public void actionPerformed(ActionEvent e) { UserSelectView.this.addButton_actionPerformed(); } }); removeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UserSelectView.this.removeButton_actionPerformed(); } }); this.conformBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UserSelectView.this.conformCreate(); } }); this.cancelBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UserSelectView.this.cancelCreate(); } }); contentPanel.add(jspChooseRole); contentPanel.add(jspAllRole); contentPanel.add(addButton); contentPanel.add(removeButton); return contentPanel; } private void initUser() { try { UserObject[] userInfo = null; try { userInfo = new RightManagementClientDelegate( LogonApplication.getUserEntityObject()) .fetchUserInfoByType(this.logonUserInfo.getUserType()); } catch (Exception e) { throw new VCIError("UserSelect-00001",new String []{e.getMessage()}); } int length = userInfo.length; DefaultListModel alllistModel = new DefaultListModel(); DefaultListModel selectlistModel = (DefaultListModel) this.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; } } if (!(hasSelect)) { alllistModel.addElement(userInfo[i]); } } this.allUserList.setModel(alllistModel); } catch (VCIError e) { VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework"); return; } } private void addButton_actionPerformed() { Object[] objs = this.allUserList.getSelectedValues(); 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]); } DefaultListModel selectListModel = (DefaultListModel) this.choosedUserList .getModel(); DefaultListModel allListModel = (DefaultListModel) this.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]); } } private void removeButton_actionPerformed() { Object[] objs = this.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) this.choosedUserList .getModel(); DefaultListModel allListModel = (DefaultListModel) this.allUserList .getModel(); for (int i = 0; i < listModel.size(); ++i) { UserObject entity = (UserObject) listModel.getElementAt(i); for (int j = 0; j < len; ++j) if (entity.getId().equals(deleteUser[j].getId())) { listModel.removeElement(entity); allListModel.addElement(entity); --i; break; } } } public UserObject[] getSelectedUserObj() { DefaultListModel listModel = (DefaultListModel) this.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() { UserObject[] selectedUserObj = getSelectedUserObj(); getParentModel().setRowCount(selectedUserObj.length); for (int i = 0; i < selectedUserObj.length; i++) { getParentModel().setValueAt((Object) selectedUserObj[i].getUserName(), i, 0); getParentModel().setValueAt( (Object) selectedUserObj[i].getTrueName(), i, 1); } // if (null != oldUsers && oldUsers.size() > 0) { // getParentModel().setRowCount( // selectedUserObj.length + oldUsers.size()); // for (int j = 0; j < oldUsers.size(); j++) { // for(int n=0;n