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.MouseAdapter; import java.awt.event.MouseEvent; import java.util.List; 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 javax.swing.table.DefaultTableModel; import com.vci.client.LogonApplication; import com.vci.client.common.objects.RoleObject; import com.vci.client.common.objects.UserObject; import com.vci.client.framework.delegate.RightManagementClientDelegate; import com.vci.client.framework.systemConfig.stafforgmanage.ListLabelCellRender; import com.vci.client.framework.systemConfig.stafforgmanage.UserTablePanel; 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; public class RoleSelectView extends BaseJDialog { private static final long serialVersionUID = 1L; private static RoleSelectView 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 allRoleList = new JList(); private JList choosedRoleList = new JList(); // private UserTablePanel userPanel; private String userName = LogonApplication.getUserEntityObject() .getUserName(); private UserObject logonUserInfo; // private List userList; private JTextField searceText = new JTextField(); private DefaultTableModel parentModel = new DefaultTableModel(); public static RoleSelectView getInstance() { if (instance == null) { instance = new RoleSelectView(); } return instance; } public RoleSelectView() { super(LogonApplication.frame); setModal(true); init(); } public RoleSelectView(UserTablePanel userPanel, List userList) { super(LogonApplication.frame); // this.userList = userList; // this.userPanel = userPanel; setModal(true); init(); } private void init() { JLabel titleLabel = new JLabel(); titleLabel.setText(LocaleDisplay.getI18nString( "rmip.stafforg.logal.roling", "RMIPFramework", getLocale())); titleLabel.setIcon(new BundleImage().createImageIcon("role.png")); JPanel bottomPanel = new JPanel(); bottomPanel.add(this.conformBut); bottomPanel.add(this.cancelBut); JPanel contentPanel = initCenterContentPanel(); initRole(); 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); } private JPanel initCenterContentPanel() { JPanel contentPanel = new JPanel(); contentPanel.setLayout(null); JScrollPane jspAllRole = new JScrollPane(); jspAllRole.getViewport().add(this.allRoleList); 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) RoleSelectView.this.allRoleList .getModel(); String queryStr = RoleSelectView.this.searceText.getText() .trim(); allListModel.removeAllElements(); RoleSelectView.this.initRole(); if (!("".equals(queryStr))) { int size = RoleSelectView.this.allRoleList.getModel() .getSize(); allListModel = new DefaultListModel(); for (int i = 0; i < size; ++i) { RoleObject roleObject = (RoleObject) RoleSelectView.this.allRoleList .getModel().getElementAt(i); if (roleObject.getName().contains(queryStr)) { allListModel.addElement(roleObject); } } RoleSelectView.this.allRoleList.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(LocaleDisplay.getI18nString( "rmip.stafforg.logal.rolelist", "RMIPFramework", getLocale()))); this.allRoleList.setCellRenderer(new ListLabelCellRender()); JScrollPane jspChooseRole = new JScrollPane(); jspChooseRole.getViewport().add(this.choosedRoleList); jspChooseRole.setPreferredSize(new Dimension(210, 300)); jspChooseRole.setBounds(new Rectangle(330, 50, 210, 300)); jspChooseRole.setBorder(new TitledBorder(LocaleDisplay.getI18nString( "rmip.stafforg.logal.choosedrolelist", "RMIPFramework", getLocale()))); this.choosedRoleList.setCellRenderer(new ListLabelCellRender()); DefaultListModel selectListModel = new DefaultListModel(); try { RoleObject[] selectRoles = new RightManagementClientDelegate( LogonApplication.getUserEntityObject()).fetchNormalRoles(); int length = selectRoles.length; for (int i = 0; i < length; ++i) selectListModel.addElement(selectRoles[i]); } catch (VCIException e1) { VCIOptionPane .showError(LogonApplication.frame, e1.getMessage()); } // } this.choosedRoleList.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) { RoleSelectView.this.addButton_actionPerformed(); } }); removeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RoleSelectView.this.removeButton_actionPerformed(); } }); this.conformBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RoleSelectView.this.conformCreate(); } }); this.cancelBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RoleSelectView.this.cancelCreate(); } }); this.allRoleList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent mouseevent) { if (mouseevent.getClickCount() == 2) RoleSelectView.this.addButton_actionPerformed(); } }); this.choosedRoleList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent mouseevent) { if (mouseevent.getClickCount() == 2) RoleSelectView.this.removeButton_actionPerformed(); } }); contentPanel.add(jspChooseRole); contentPanel.add(jspAllRole); contentPanel.add(addButton); contentPanel.add(removeButton); return contentPanel; } private void initRole() { try { this.logonUserInfo = new RightManagementClientDelegate( LogonApplication.getUserEntityObject()) .fetchUserInfoByName(this.userName); RoleObject[] roleInfo = new RightManagementClientDelegate( LogonApplication.getUserEntityObject()) .fetchRoleInfoByType(this.logonUserInfo.getUserType()); int length = roleInfo.length; DefaultListModel alllistModel = new DefaultListModel(); DefaultListModel selectlistModel = (DefaultListModel) this.choosedRoleList .getModel(); int selectLenth = selectlistModel.getSize(); for (int i = 0; i < length; ++i) { boolean hasSelect = false; for (int j = 0; j < selectLenth; ++j) { RoleObject selectRoleInfo = (RoleObject) selectlistModel .get(j); if (selectRoleInfo.getId().equals(roleInfo[i].getId())) { hasSelect = true; break; } } if (!(hasSelect)) { alllistModel.addElement(roleInfo[i]); } } this.allRoleList.setModel(alllistModel); } catch (VCIException e) { VCIOptionPane.showError(LogonApplication.frame, e.getMessage()); return; } } private void addButton_actionPerformed() { Object[] objs = this.allRoleList.getSelectedValues(); if ((objs == null) || (objs.length == 0)) { VCIOptionPane.showMessageDialog(this, LocaleDisplay.getI18nString( "rmip.stafforg.operate.toselectrole", "RMIPFramework", getLocale())); return; } int len = objs.length; RoleObject[] addRoleInfo = new RoleObject[len]; for (int i = 0; i < len; ++i) { addRoleInfo[i] = ((RoleObject) objs[i]); } DefaultListModel selectListModel = (DefaultListModel) this.choosedRoleList .getModel(); DefaultListModel allListModel = (DefaultListModel) this.allRoleList .getModel(); int size = selectListModel.getSize(); for (int i = 0; i < size; ++i) { RoleObject entity = (RoleObject) selectListModel.getElementAt(i); for (int j = 0; j < len; ++j) { if (entity.getId().equals(addRoleInfo[j].getId())) { VCIOptionPane.showMessageDialog(this, LocaleDisplay .getI18nString( "rmip.stafforg.operate.toreselectrole", "RMIPFramework", getLocale())); return; } } } for (int i = 0; i < len; ++i) { selectListModel.addElement(addRoleInfo[i]); allListModel.removeElement(addRoleInfo[i]); } } private void removeButton_actionPerformed() { Object[] objs = this.choosedRoleList.getSelectedValues(); if ((objs == null) || (objs.length == 0)) { VCIOptionPane.showMessageDialog(this, LocaleDisplay.getI18nString( "rmip.stafforg.operate.toremoverole", "RMIPFramework", getLocale())); return; } int len = objs.length; RoleObject[] deleteRole = new RoleObject[len]; for (int i = 0; i < len; ++i) { deleteRole[i] = ((RoleObject) objs[i]); } DefaultListModel listModel = (DefaultListModel) this.choosedRoleList .getModel(); DefaultListModel allListModel = (DefaultListModel) this.allRoleList .getModel(); for (int i = 0; i < listModel.size(); ++i) { RoleObject entity = (RoleObject) listModel.getElementAt(i); for (int j = 0; j < len; ++j) if (entity.getId().equals(deleteRole[j].getId())) { listModel.removeElement(entity); allListModel.addElement(entity); --i; break; } } } public void conformCreate() { RoleObject[] selectedRole = getSelectRoleObject(); getParentModel().setRowCount(selectedRole.length); for (int i = 0; i < selectedRole.length; i++) { getParentModel().setValueAt((Object) selectedRole[i].getName(), i, 0); getParentModel().setValueAt((Object) selectedRole[i].getName(), i, 1); } // String[] roleIds = new String[selectedRole.length]; // for (int i = 0; i < selectedRole.length; ++i) { // roleIds[i] = selectedRole[i].getId(); // } // String[] userIds = new String[this.userList.size()]; // for (int i = 0; i < this.userList.size(); ++i) // userIds[i] = ((UserObject) this.userList.get(i)).getId(); // try { // new RightManagementClientDelegate( // LogonApplication.getUserEntityObject()).saveRights(roleIds, // userIds); // } catch (VCIException e) { // VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e); // return; // } // this.userPanel.tablePanel.refreshTableData(); dispose(); } public void cancelCreate() { dispose(); } private RoleObject[] getSelectRoleObject() { DefaultListModel listModel = (DefaultListModel) this.choosedRoleList .getModel(); int size = listModel.size(); RoleObject[] roleInfo = new RoleObject[size]; for (int i = 0; i < size; ++i) { roleInfo[i] = ((RoleObject) listModel.get(i)); } return roleInfo; } public DefaultTableModel getParentModel() { return parentModel; } public void setParentModel(DefaultTableModel parentModel) { this.parentModel = parentModel; } }