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<orLength;i++){
|
SelectedSubjectItem checkedItem = (SelectedSubjectItem) selectListModel.getElementAt(i);
|
String addCode = item.getCode();
|
if(checkedItem!=null&&addCode.equals(checkedItem.getCode())){
|
flag = true;
|
break;
|
}
|
}
|
return flag;
|
}
|
|
private Object[] getSelectedValues(JXTable usersTable, String type) {
|
|
ListSelectionModel sm = usersTable.getSelectionModel();
|
TableModel dm = usersTable.getModel();
|
|
int iMin = sm.getMinSelectionIndex();
|
int iMax = sm.getMaxSelectionIndex();
|
|
if ((iMin < 0) || (iMax < 0)) {
|
return new Object[0];
|
}
|
|
Object[] rvTmp = new Object[1 + (iMax - iMin)];
|
int n = 0;
|
for (int i = iMin; i <= iMax; i++) {
|
if (sm.isSelectedIndex(i)) {
|
Vector<Object> value = new Vector<Object>();
|
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;
|
}
|
}
|