package com.vci.client.auth2.action; import java.util.Vector; import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.ListModel; import javax.swing.ListSelectionModel; import javax.swing.table.TableModel; import org.jdesktop.swingx.JXTable; import com.vci.client.auth2.utils.IRightConstant; import com.vci.client.auth2.view.RightMainPanel; import com.vci.client.auth2.vo.SelectedSubjectItem; public class ToRightSubjectAction extends Action { /** * */ private static final long serialVersionUID = -5469627110527278843L; private RightMainPanel mainUI; public ToRightSubjectAction(String name) { super(name); } @SuppressWarnings("rawtypes") @Override public void execute() { JXTable usersTable = mainUI.getUserTable(); JXTable roleTable = mainUI.getRoleTable(); JXTable userGTable = mainUI.getUserGroupTable(); JList selectedSubjects = mainUI.getSelectedSubjectComponent(); Object[] users = getSelectedValues(usersTable, IRightConstant.User); Object[] roles = getSelectedValues(roleTable, IRightConstant.Role); Object[] userGroups = getSelectedValues(userGTable, IRightConstant.UserGroup); if ((null == users && roles == null && userGroups == null) || (users.length == 0 && roles.length == 0 && userGroups.length == 0)) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请选择用户、用户组、角色信息", "提示", JOptionPane.INFORMATION_MESSAGE); return; } ListModel selectListModel = (ListModel) selectedSubjects.getModel(); if (selectListModel != null && !(selectListModel instanceof DefaultListModel)) { selectListModel = new DefaultListModel(); } int originalSize = selectListModel.getSize(); ((DefaultListModel) selectListModel).setSize(users.length + roles.length + userGroups.length + originalSize); for (int i = originalSize; i < originalSize+users.length; i++) { SelectedSubjectItem item = new SelectedSubjectItem(); item.setCode((String) ((Vector) users[i -originalSize]).get(0)); item.setName((String) ((Vector) users[i -originalSize]).get(1)); item.setType((String) ((Vector) users[i -originalSize]).get(2)); boolean flag = judgeExistSelectedItem(item, selectListModel, originalSize); if(flag){ JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "授权主体信息选择重复", "提示", JOptionPane.INFORMATION_MESSAGE); ((DefaultListModel) selectListModel).setSize(originalSize); return; } ((DefaultListModel) selectListModel).setElementAt(item, i); } for (int i = originalSize+users.length; i < originalSize+users.length + roles.length; i++) { SelectedSubjectItem item = new SelectedSubjectItem(); item.setCode((String) ((Vector) roles[i -originalSize - users.length]).get(0)); item.setName((String) ((Vector) roles[i -originalSize - users.length]).get(1)); item.setType((String) ((Vector) roles[i -originalSize - users.length]).get(2)); boolean flag = judgeExistSelectedItem(item, selectListModel, originalSize); if(flag){ JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "授权主体信息选择重复", "提示", JOptionPane.INFORMATION_MESSAGE); ((DefaultListModel) selectListModel).setSize(originalSize); return; } ((DefaultListModel) selectListModel).setElementAt(item, i); } for (int i = originalSize+users.length + roles.length; i < originalSize+users.length+ roles.length + userGroups.length; i++) { SelectedSubjectItem item = new SelectedSubjectItem(); item.setCode((String) ((Vector) userGroups[i -originalSize - users.length-roles.length]) .get(0)); item.setName((String) ((Vector) userGroups[i -originalSize - users.length-roles.length]) .get(1)); item.setType((String) ((Vector) userGroups[i -originalSize - users.length-roles.length]) .get(2)); boolean flag = judgeExistSelectedItem(item, selectListModel, originalSize); if(flag){ JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "授权主体信息选择重复", "提示", JOptionPane.INFORMATION_MESSAGE); ((DefaultListModel) selectListModel).setSize(originalSize); return; } ((DefaultListModel) selectListModel).setElementAt(item, i); } selectedSubjects.setModel(selectListModel); int selected[] = new int[originalSize + users.length + roles.length+ userGroups.length]; for (int i = 0; i < originalSize; i++) { selected[i] = i; } for (int i = originalSize; i < originalSize+users.length; i++) { selected[i] = i; } for (int i = originalSize+users.length; i < originalSize+ users.length + roles.length; i++) { selected[i] = i; } for (int i = originalSize+users.length + roles.length; i < originalSize + users.length+ roles.length + userGroups.length; i++) { selected[i] = i; } selectedSubjects.setSelectedIndices(selected); selectedSubjects.updateUI(); usersTable.getSelectionModel().clearSelection(); roleTable.getSelectionModel().clearSelection(); userGTable.getSelectionModel().clearSelection(); } private boolean judgeExistSelectedItem(SelectedSubjectItem item, ListModel selectListModel, int orLength){ boolean flag = false; for(int i =0;i value = new Vector(); value.add(dm.getValueAt(i, 0)); value.add(dm.getValueAt(i, 1)); value.add(type); rvTmp[n++] = value; } } Object[] rv = new Object[n]; System.arraycopy(rvTmp, 0, rv, 0, n); return rv; } public RightMainPanel getMainUI() { return mainUI; } public void setMainUI(RightMainPanel mainUI) { this.mainUI = mainUI; } }