package com.vci.client.framework.specialrole;
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 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.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;
/**
*
Title: RolingDialog
* Description: 分配角色界面
* Copyright: Copyright (c) 2012
* Company: VCI
* @author wangxl
* @time 2012-5-11
* @version 1.0
*/
public class RolingDialog extends BaseJDialog{
private static final long serialVersionUID = 1L;
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();
public RolingDialog(UserTablePanel userPanel ,List userList){
super(LogonApplication.frame);
this.userList = userList;
this.userPanel = userPanel;
this.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(conformBut);
bottomPanel.add(cancelBut);
JPanel contentPanel = initCenterContentPanel();
initRole(); //初始化角色信息
JPanel midPanel = new JPanel();
midPanel.setLayout(new BorderLayout());
JTextField jTextField1 = new JTextField();//instead of up line
JTextField jTextField2 = new JTextField();//instead of down line
jTextField1.setPreferredSize(new Dimension(63,2));
jTextField2.setPreferredSize(new Dimension(63,2));
midPanel.add(jTextField1, BorderLayout.NORTH);
midPanel.add(jTextField2, BorderLayout.SOUTH);
midPanel.add(contentPanel, BorderLayout.CENTER);
this.setLayout(new BorderLayout());
this.add(titleLabel, BorderLayout.NORTH);
this.add(midPanel, BorderLayout.CENTER);
this.add(bottomPanel, BorderLayout.SOUTH);
// int x = (int)(this.getParent().getLocationOnScreen().getX()) + 200;
// int y = (int)(this.getParent().getLocationOnScreen().getY()) + 80;
// this.setLocation(x , y);
// this.setSize(600, 450);
initDialogSize(600, 450);
this.setVisible(true);
}
private JPanel initCenterContentPanel() {
JPanel contentPanel = new JPanel();
contentPanel.setLayout(null);
// JLabel roleLabel = new JLabel(LocaleDisplay.getI18nString("rmip.stafforg.menu.role", "RMIPFramework", getLocale()));
// roleLabel.setBounds(50, 30, 80, 25);
JScrollPane jspAllRole = new JScrollPane();
jspAllRole.getViewport().add(allRoleList);
JLabel searchName = new JLabel("角色名称");
JButton queryBtn = new JButton("查询");
searchName.setBounds(new Rectangle(100,10,90,26));
searceText.setBounds(new Rectangle(160,10,180,26));
queryBtn.setBounds(new Rectangle(370,10,60,26));
queryBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
DefaultListModel allListModel = (DefaultListModel) allRoleList.getModel();
String queryStr = searceText.getText().trim();
allListModel.removeAllElements();
initRole();
if(!"".equals(queryStr)){
int size = allRoleList.getModel().getSize();
allListModel = new DefaultListModel();
for(int i=0;i>");
addButton.setBounds(260, 100, 50, 25);
JButton removeButton = new JButton("<<");
removeButton.setBounds(260, 250, 50, 25);
addButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
addButton_actionPerformed();
}
});
removeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
removeButton_actionPerformed();
}
});
conformBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
conformCreate();
}
});
cancelBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
cancelCreate();
}
});
/**added by ligang 部门鼠标双击事件的添加**/
allRoleList.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent mouseevent) {
if(mouseevent.getClickCount()==2){//鼠标双击
addButton_actionPerformed();
}
}
});
choosedRoleList.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent mouseevent) {
if(mouseevent.getClickCount()==2){//鼠标双击
removeButton_actionPerformed();
}
}
});
contentPanel.add(jspChooseRole);
contentPanel.add(jspAllRole);
// contentPanel.add(roleLabel);
contentPanel.add(addButton);
contentPanel.add(removeButton);
return contentPanel;
}
/**
* 初始化角色信息
*/
private void initRole(){
try{
logonUserInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject())
.fetchUserInfoByName(userName);
RoleObject[] roleInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject())
.fetchRoleInfoByType(logonUserInfo.getUserType());
int length = roleInfo.length;
DefaultListModel alllistModel = new DefaultListModel();
DefaultListModel selectlistModel = (DefaultListModel) 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]);
}
}
allRoleList.setModel(alllistModel);
} catch (VCIException e) {
VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e);
return ;
}
}
private void addButton_actionPerformed() {
Object[] objs = 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) choosedRoleList.getModel();
DefaultListModel allListModel = (DefaultListModel) 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 = 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) choosedRoleList.getModel();
DefaultListModel allListModel = (DefaultListModel) 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 = this.getSelectRoleObject();
String[] roleIds = new String[selectedRole.length];
for (int i = 0 ; i < selectedRole.length ; i ++){
roleIds[i] = selectedRole[i].getId();
}
String[] userIds = new String[userList.size()];
for (int i = 0 ; i < userList.size() ; i ++){
userIds[i] = userList.get(i).getId();
}
try {
new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).saveRights(roleIds, userIds);
}catch (VCIException e) {
VCIOptionPane.showError(LogonApplication.frame,"RMIPFramework",e);
return ;
}
userPanel.tablePanel.refreshTableData();
this.dispose();
}
public void cancelCreate(){
this.dispose();
}
/**
* Description:得到分配的角色
*
* @author wangxl
* @time 2012-5-11
* @return
*/
private RoleObject[] getSelectRoleObject() {
DefaultListModel listModel = (DefaultListModel) 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;
}
}