package com.netsdk.demo.frame.Attendance;
|
|
import java.awt.BorderLayout;
|
import java.awt.Dimension;
|
import java.awt.FlowLayout;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
|
import javax.swing.JButton;
|
import javax.swing.JLabel;
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JSplitPane;
|
import javax.swing.JTextField;
|
import javax.swing.SwingUtilities;
|
import javax.swing.SwingWorker;
|
|
import com.netsdk.common.BorderEx;
|
import com.netsdk.common.Res;
|
import com.netsdk.demo.frame.Attendance.AttendanceShowPanel.UserInfoShowPanel;
|
import com.netsdk.demo.module.AttendanceModule;
|
import com.netsdk.demo.module.AttendanceModule.OPERATE_TYPE;
|
import com.netsdk.demo.module.AttendanceModule.UserData;
|
|
/**
|
* 考勤机操作面板
|
*/
|
public class AttendanceFunctionOperatePanel extends JPanel{
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 1L;
|
public static boolean bLogout = false;
|
public AttendanceShowPanel showPanel; // 显示面板
|
private AttendanceFunctionOperatePanel target = this; // 为了传值
|
|
public AttendanceFunctionOperatePanel(AttendanceShowPanel showPanel) {
|
|
setLayout(new BorderLayout());
|
setPreferredSize(new Dimension(800, 120));
|
|
listener = new UserOperateActionListener();
|
|
userPanel = new FunctionOperatePanel();
|
subscribePanel = new SubscribePanel(showPanel.eventShowPanel);
|
|
JSplitPane splitPane = new JSplitPane();
|
splitPane.setDividerSize(0);
|
splitPane.setBorder(null);
|
splitPane.add(userPanel, JSplitPane.LEFT);
|
splitPane.add(subscribePanel, JSplitPane.RIGHT);
|
|
add(splitPane, BorderLayout.CENTER);
|
|
this.showPanel = showPanel;
|
this.showPanel.userShowPanel.prePageBtn.addActionListener(listener);
|
this.showPanel.userShowPanel.nextPageBtn.addActionListener(listener);
|
}
|
|
public void setButtonEnable(boolean b) {
|
bLogout=!b;
|
userPanel.setButtonEnable(b);
|
subscribePanel.setButtonEnable(b);
|
}
|
|
public void setSearchEnable(boolean b) {
|
showPanel.userShowPanel.setButtonEnable(b);
|
userPanel.searchPersonBtn.setEnabled(b);
|
}
|
|
public void insertData(UserData[] arrUserData) {
|
showPanel.userShowPanel.insertData(arrUserData);
|
}
|
|
public void insertData(UserData userData) {
|
showPanel.userShowPanel.insertData(userData);
|
}
|
|
/**
|
* 总的功能操作面板
|
*/
|
public class FunctionOperatePanel extends JPanel{
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 1L;
|
public FunctionOperatePanel() {
|
// BorderEx.set(this, Res.string().getOperateByUser(), 1);
|
setLayout(new BorderLayout());
|
setPreferredSize(new Dimension(600, 60));
|
|
////////// 查询条件 /////////////////
|
JLabel userIdLabel = new JLabel(Res.string().getUserId(), JLabel.CENTER);
|
userIdTextField = new JTextField();
|
userIdLabel.setPreferredSize(new Dimension(80, 20));
|
userIdTextField.setPreferredSize(new Dimension(110, 20));
|
|
////////// 功能面板 /////////////////
|
// 用户功能面板
|
JPanel userFunctionPanel = new JPanel();
|
userFunctionPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
|
BorderEx.set(userFunctionPanel, Res.string().getUserOperate(), 1);
|
searchPersonBtn = new JButton(Res.string().getSearch());
|
addPersonBtn = new JButton(Res.string().getAdd());
|
modifyPersonBtn = new JButton(Res.string().getModify());
|
deletePersonBtn = new JButton(Res.string().getDelete());
|
|
searchPersonBtn.setPreferredSize(new Dimension(90, 20));
|
addPersonBtn.setPreferredSize(new Dimension(90, 20));
|
modifyPersonBtn.setPreferredSize(new Dimension(90, 20));
|
deletePersonBtn.setPreferredSize(new Dimension(90, 20));
|
|
userFunctionPanel.add(userIdLabel);
|
userFunctionPanel.add(userIdTextField);
|
userFunctionPanel.add(searchPersonBtn);
|
userFunctionPanel.add(addPersonBtn);
|
userFunctionPanel.add(modifyPersonBtn);
|
userFunctionPanel.add(deletePersonBtn);
|
|
// 信息功能面板
|
JPanel fingerPrintFunctionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
|
BorderEx.set(fingerPrintFunctionPanel, Res.string().getFingerPrintOperate(), 1);
|
operateByUserIdBtn = new JButton(Res.string().getOperateByUserId());
|
operateByFingerPrintIdBtn = new JButton(Res.string().getOperateByFingerPrintId());
|
|
operateByUserIdBtn.setPreferredSize(new Dimension(260, 20));
|
operateByFingerPrintIdBtn.setPreferredSize(new Dimension(260, 20));
|
fingerPrintFunctionPanel.add(operateByUserIdBtn);
|
fingerPrintFunctionPanel.add(operateByFingerPrintIdBtn);
|
|
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
splitPane.setDividerSize(0);
|
splitPane.setBorder(null);
|
splitPane.add(userFunctionPanel, JSplitPane.TOP);
|
splitPane.add(fingerPrintFunctionPanel, JSplitPane.BOTTOM);
|
add(splitPane, BorderLayout.CENTER);
|
|
searchPersonBtn.addActionListener(listener);
|
addPersonBtn.addActionListener(listener);
|
modifyPersonBtn.addActionListener(listener);
|
deletePersonBtn.addActionListener(listener);
|
operateByUserIdBtn.addActionListener(listener);
|
operateByFingerPrintIdBtn.addActionListener(listener);
|
|
setButtonEnable(false);
|
}
|
|
public void setButtonEnable(boolean b) {
|
searchPersonBtn.setEnabled(b);
|
addPersonBtn.setEnabled(b);
|
modifyPersonBtn.setEnabled(b);
|
deletePersonBtn.setEnabled(b);
|
operateByUserIdBtn.setEnabled(b);
|
operateByFingerPrintIdBtn.setEnabled(b);
|
}
|
|
public void searchPerson(OPERATE_TYPE type) { // flush 为 true 时 强制刷新
|
if (type == OPERATE_TYPE.SEARCH_USER && !userIdTextField.getText().isEmpty()) {
|
UserData userData = AttendanceModule.getUser(userIdTextField.getText());
|
if (userData == null) {
|
JOptionPane.showMessageDialog(null, Res.string().getFailed(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
|
return;
|
}
|
showPanel.userShowPanel.insertData(userData);
|
}else {
|
setSearchEnable(false);
|
new SearchPersonSwingWorker(type, target).execute();
|
}
|
}
|
|
private JTextField userIdTextField;
|
public JButton searchPersonBtn;
|
private JButton addPersonBtn;
|
private JButton modifyPersonBtn;
|
private JButton deletePersonBtn;
|
private JButton operateByUserIdBtn;
|
private JButton operateByFingerPrintIdBtn;
|
}
|
|
/**
|
* 按键监听实现类
|
*/
|
private class UserOperateActionListener implements ActionListener {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
|
OPERATE_TYPE emType = getOperateType(arg0.getSource());
|
switch(emType) {
|
case SEARCH_USER:
|
case PRE_SEARCH_USER:
|
case NEXT_SEARCH_USER:
|
SwingUtilities.invokeLater(new SearchRunnable(emType));
|
break;
|
case ADD_USER:
|
new AttendanceOperateShareDialog(emType, null, "").setVisible(true);
|
break;
|
case MODIFIY_USER:
|
case DELETE_USER:
|
case FINGERPRINT_OPEARTE_BY_USERID:
|
UserData userData = showPanel.userShowPanel.GetSelectedItem();
|
if(userData == null) {
|
JOptionPane.showMessageDialog(null, Res.string().getSelectPerson(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
|
return;
|
}
|
if (emType == OPERATE_TYPE.FINGERPRINT_OPEARTE_BY_USERID) {
|
new OperateByUserIdDialog(userData).setVisible(true);
|
}else {
|
new AttendanceOperateShareDialog(emType, userData).setVisible(true);
|
}
|
|
break;
|
case FINGERPRINT_OPEARTE_BY_ID:
|
new OperateByFingerPrintIdDialog().setVisible(true);
|
default:
|
break;
|
}
|
}
|
|
private OPERATE_TYPE getOperateType(Object btn) {
|
OPERATE_TYPE type = OPERATE_TYPE.UNKNOWN;
|
|
if (btn == userPanel.searchPersonBtn) { // 查找人员
|
type = OPERATE_TYPE.SEARCH_USER;
|
}else if (btn == showPanel.userShowPanel.prePageBtn) { // 上一页查找人员
|
type = OPERATE_TYPE.PRE_SEARCH_USER;
|
}else if (btn == showPanel.userShowPanel.nextPageBtn) { // 下一页查找人员
|
type = OPERATE_TYPE.NEXT_SEARCH_USER;
|
}else if (btn == userPanel.addPersonBtn) { // 添加人员
|
type = OPERATE_TYPE.ADD_USER;
|
}else if (btn == userPanel.modifyPersonBtn) { // 修改人员
|
type = OPERATE_TYPE.MODIFIY_USER;
|
}else if (btn == userPanel.deletePersonBtn) { // 删除人员
|
type = OPERATE_TYPE.DELETE_USER;
|
}else if (btn == userPanel.operateByUserIdBtn) { // 通过用户ID操作信息
|
type = OPERATE_TYPE.FINGERPRINT_OPEARTE_BY_USERID;
|
}else if (btn == userPanel.operateByFingerPrintIdBtn) { // 通过信息ID操作信息
|
type = OPERATE_TYPE.FINGERPRINT_OPEARTE_BY_ID;
|
}else {
|
System.err.println("Unknown Event: " + btn);
|
}
|
|
return type;
|
|
}
|
}
|
|
public class SearchRunnable implements Runnable {
|
private OPERATE_TYPE searchType;
|
public SearchRunnable(OPERATE_TYPE searchType) {
|
this.searchType = searchType;
|
}
|
|
@Override
|
public void run() {
|
userPanel.searchPerson(searchType);
|
}
|
}
|
|
/**
|
* 人员搜索工作线程(完成异步搜索)
|
*/
|
public class SearchPersonSwingWorker extends SwingWorker<UserData[], Object> {
|
private AttendanceFunctionOperatePanel operatePanel;
|
private int offset = 0;
|
private OPERATE_TYPE type;
|
public SearchPersonSwingWorker(OPERATE_TYPE type, AttendanceFunctionOperatePanel operatePanel) {
|
this.operatePanel = operatePanel;
|
this.type = type;
|
}
|
|
protected UserData[] doInBackground() throws Exception {
|
|
switch(type) {
|
case SEARCH_USER:
|
offset = 0;
|
break;
|
case PRE_SEARCH_USER:
|
offset = UserInfoShowPanel.QUERY_SHOW_COUNT * ((AttendanceShowPanel.userIndex-1)/UserInfoShowPanel.QUERY_SHOW_COUNT - 1);
|
break;
|
case NEXT_SEARCH_USER:
|
offset = AttendanceShowPanel.userIndex;
|
break;
|
default:
|
break;
|
}
|
|
UserData[] arrUserData = AttendanceModule.findUser(offset, UserInfoShowPanel.QUERY_SHOW_COUNT);
|
|
return arrUserData;
|
}
|
|
@Override
|
protected void done() {
|
if (bLogout) {
|
return;
|
}
|
|
try {
|
|
UserData[] arrUserData = get();
|
if (arrUserData == null) {
|
JOptionPane.showMessageDialog(null, Res.string().getFailed(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
|
return;
|
}
|
|
if (type == OPERATE_TYPE.SEARCH_USER ||
|
type == OPERATE_TYPE.PRE_SEARCH_USER) { // 更新userIndex
|
AttendanceShowPanel.userIndex = offset;
|
}
|
operatePanel.insertData(arrUserData);
|
} catch (Exception e) {
|
// e.printStackTrace();
|
}finally {
|
operatePanel.setSearchEnable(true);
|
}
|
|
}
|
}
|
|
private UserOperateActionListener listener;
|
public FunctionOperatePanel userPanel;
|
public SubscribePanel subscribePanel;
|
}
|