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.bundle.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<UserObject> 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<UserObject> 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;
|
}
|
}
|