package gui;
import java.awt.Checkbox;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import dao.ModifyPwd;
import dao.StaffMes;
import entity.Emp;
import service.ExamService;
import util.OperateXml;
import util.RwExcel;
public class MineContent {
private ExamService service;
private LoginFrame loginFrame;
private OperateFrame operateFrame;
private ChangeFrame changeFrame;
private AddFrame addFrame;
//多选框是否选择
boolean[] b;
//
String deptAttriValue;
//登录用户
private Emp loginEmp;
//导入时候的数据
String[][] date;
//读取数据库部门的字符串数组
String[] date2;
String bumenjiedian;
String xiaozujiedian;
/*
* 构造器注入登录业务逻辑
* 参数:ExamService实例
* */
public MineContent(ExamService service){
this.service=service;
}
/*
* 注入登录界面
* 参数:LoginFrame实例
* */
public void setLoginFrame(LoginFrame loginFrame){
this.loginFrame=loginFrame;
}
/*
* 注入操作界面
* 参数:OperateFrame实例
* */
public void setOperateFrame(OperateFrame operateFrame){
this.operateFrame=operateFrame;
}
/*
* 注入修改密码界面
* 参数:ChangeFrame实例
* */
public void setChangeFrame(ChangeFrame changeFrame){
this.changeFrame=changeFrame;
}
/*
* 注入增加员工界面
* 参数:AddFrame实例
* */
public void setAddFrame(AddFrame addFrame){
this.addFrame=addFrame;
}
/*
* 得到登录时输入信息
*
* */
public Emp getLoginEmp(){
return loginEmp;
}
/*
* 得到跟新数据
*
*/
public String[][] getRushdate(){
return date;
}
/*
* 关闭方法
* 参数:JFrame
*
* */
public void exit(JFrame source){
int val=JOptionPane.showConfirmDialog(
source,"确定?","离开",JOptionPane.YES_NO_OPTION);
if(val==JOptionPane.YES_OPTION){
source.setVisible(false);
System.exit(0);
}
}
/*
*登录方法
*参数:JFrame
* */
public void login(JFrame source){
String s = service.login(loginFrame.getName(),
loginFrame.getPassword());
if(loginFrame.getPassword().equals(s)){
loginEmp=new Emp(loginFrame.getName(),loginFrame.getPassword());
operateFrame.updateView();
operateFrame.setVisible(true);
loginFrame.setVisible(false);
}else{
JOptionPane.showMessageDialog(source,s);
}
}
/*
* 程序开始显示登录界面方法
* */
public void show() {
loginFrame.setVisible(true);
}
/*
* 中英文转换方法
* */
public void changeLanguage(JFrame source) {
}
/*
* 导航栏
**/
public void jmi(ActionEvent ae,OperateFrame source) {
String comman = ae.getActionCommand();
if("退出".equals(comman)){
System.out.println("退出");
exit(source);
}else if("导出全部员工".equals(comman)){
RwExcel re = new RwExcel();
JFileChooser jf = new JFileChooser();
jf.showOpenDialog(jf);
File f1 = jf.getSelectedFile();
if(f1!=null){
String fstr=f1.getPath().substring(f1.getPath().lastIndexOf("."));
if(fstr.equals("xls")){
re.writeExcle(SingleString.getInstance().getStr(),f1);
JOptionPane.showMessageDialog(source,"恭喜您,上传成功!");
}else{
JOptionPane.showMessageDialog(source,"必须为'.xls'的文件");
}
}
}else if("导入".equals(comman)){
//删除已有的当前页
operateFrame.deleteDangqian();
JFileChooser jf1 = new JFileChooser();
jf1.showOpenDialog(jf1);
File f2 = jf1.getSelectedFile();
if(f2!=null){
String fstr2=f2.getPath().substring(f2.getPath().lastIndexOf(".")+1);
System.out.println(fstr2);
if(fstr2.equals("xls")){
date = operateFrame.setDate(new RwExcel().
readExcle(f2));
SingleString.getInstance().setStr(date);
operateFrame.updateLView();
}else{
JOptionPane.showMessageDialog(source,"必须导入'.xls'的文件");
}
}
}else if("修改".equals(comman)){
changeFrame.updateView();
}else if("帮助".equals(comman)){
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream("src//help.txt")));
String s = "";
while(true){
String str =br.readLine();
if(str==null) break;
s=s+str+"\n";
}
JOptionPane.showMessageDialog(source,s);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if("添加".equals(comman)){
addFrame.showView();
}
}
/*
* 修改密码方法
* */
public void changeM(ChangeFrame source) {
if("".equals(changeFrame.getPwdfield2())||"".equals(changeFrame.getPwdfield3())){
JOptionPane.showMessageDialog(source,"不能为空!");
}else{
if(!(changeFrame.getPwdfield1()).equals(loginEmp.getPassword())){
JOptionPane.showMessageDialog(source,"密码输入错误");
}else{
if(changeFrame.getPwdfield2().length()<6 || changeFrame.getPwdfield2().length()>15){
JOptionPane.showMessageDialog(source,"密码长度为6-15");
}else{
if(changeFrame.getPwdfield2().equals(changeFrame.getPwdfield1())){
JOptionPane.showMessageDialog(source,"不能与原密码一样");
}
if(!changeFrame.getPwdfield2().equals(changeFrame.getPwdfield1())&&
changeFrame.getPwdfield2().equals(
changeFrame.getPwdfield3())){
ModifyPwd mfp = new ModifyPwd();
mfp.modifyPwd(changeFrame.getPwdfield2(),loginFrame.getName());
JOptionPane.showMessageDialog(source,"修改成功");
loginEmp = new Emp(loginFrame.getName(),changeFrame.getPwdfield2());
//修改成功后关闭窗口
changeFrame.rushView();
changeFrame.setVisible(false);
}else if(!changeFrame.getPwdfield2().equals(changeFrame.getPwdfield1())&&
!changeFrame.getPwdfield2().equals(
changeFrame.getPwdfield3())){
JOptionPane.showMessageDialog(source,"两次输入不一致!");
}
}
}
}
}
/*
* 修改密码取消按钮
* */
public void exitExit(ChangeFrame source) {
changeFrame.rushView();
}
/*
* 添加员工方法
* */
public void changeNews(AddFrame source)
{
String s1 = addFrame.getZhanghaofield();
String s2 =addFrame.getName_field();
String s3 =addFrame.getSex_field();
String s4 =addFrame.getDebt_field();
String s5 =addFrame.getIDcard_field();
String s6 =addFrame.getDesc_field();
String s7 =addFrame.getYes_no_field();
String sss[] = {s1,s2,s3,s4,s5,s6,s7};
StaffMes sf = new StaffMes();
System.out.println(sf.find(s1));
if("".equals(s1)||"".equals(s2)||"".equals(s3)||"".
equals(s4)||"".equals(s5)||"".equals(s6)||"".
equals(s7))
{
JOptionPane.showMessageDialog(source,"信息不完全!");
}
else
{
if(sf.find(s1)!=null)
{
JOptionPane.showMessageDialog(source,"用户名已存在!");
return ;
}else
{
if(!s3.equals("男") && !s3.equals("女"))
{
JOptionPane.showMessageDialog(source,"性别格式不对!");
}
else
{
sf.addStaff(sss);
JOptionPane.showMessageDialog(source,"添加成功!");
}
}
}
}
/*
* JTable提交按钮
* */
public void jb3(OperateFrame source)
{
String str = JOptionPane.showInputDialog(new JPanel(), "请输入小组部门id(如:11)");
String[][] ss = SingleString.getInstance().getStr();
StaffMes sff = new StaffMes();
if(str!=null){
if(!"11".equals(str)&&!"12".equals(str)&&!"13".equals(str)&&
!"14".equals(str)&&!"21".equals(str)&&!"22".equals(str)&&
!"23".equals(str)&&!"24".equals(str)&&
!"31".equals(str)&&!"32".equals(str)&&!"33".equals(str)&&
!"34".equals(str)&&!"41".equals(str)&&
!"42".equals(str)&&!"43".equals(str)&&
!"44".equals(str)&&!"51".equals(str)&&!"52".equals(str)&&
!"53".equals(str)&&!"54".equals(str))
{
JOptionPane.showMessageDialog(source,"没有这个部门!");
}else
{
sff.addExcleStaff(ss,str);
JOptionPane.showMessageDialog(source,"添加成功!");
}
}
}
/*
*
*
*
*结点操作
* */
/*
* 结点增加
* 参数:
* 1.OperateFrame 操作界面
* 2.OperateXml 读取xml类
* 3.Pathname 路径
* */
public void insert(OperateFrame source,OperateXml operateXml,String pathName){
//str 增加的节点的名称
String str = JOptionPane.showInputDialog(new JPanel(), "增加名称为?");
//str 不能为空值
if("".equals(str) || (str==null))
{
return ;
}
//新的子节点
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(str);
//得到现在高亮的节点
DefaultMutableTreeNode selectnode = (DefaultMutableTreeNode) operateFrame.getJtree().getLastSelectedPathComponent();
//为小组节点就不能添加 新的子节点了
if(selectnode.getLevel()==2)
{
return ;
}
//在高亮的节点下面添加一个子节点
selectnode.add(newNode);
//刷新
operateFrame.getJtree().updateUI();
//TODO 数据库方法 参数格式为 str+部门/小组标志
if(selectnode.isRoot())
{
//TODO 在公司下添加部门节点
operateXml.addNode(str, "","",pathName);
}
if(selectnode.getLevel() == 1)
{
//TODO 在部门下面添加小组节点
operateXml.addNode("", (String)selectnode.getUserObject().toString(),str,pathName);
}
}
//结点修改
public void update(OperateFrame operateFrame2,OperateXml operateXml,String pathName) {
String str = JOptionPane.showInputDialog(new JPanel(), "修改为?");
//str 不能为空值
if("".equals(str) || (str==null))
{
return ;
}
//得到高亮节点
DefaultMutableTreeNode selectnode = (DefaultMutableTreeNode) operateFrame.getJtree().getLastSelectedPathComponent();
deptAttriValue= (String) ((DefaultMutableTreeNode)selectnode.getParent()).getUserObject();
String oldAttriValue = (String)selectnode.getUserObject();
//公司名称不能修改
if(selectnode.isRoot())
{
return ;
}
//TODO 数据库方法 参数格式为 str+部门/小组标志
if(selectnode.getLevel() == 1)
{
//TODO 修改部门名称
operateXml.updateDept(oldAttriValue, str, pathName);
}
if(selectnode.getLevel()==2)
{
//TODO 修改小组名称
operateXml.updateGroup(deptAttriValue, oldAttriValue, str, pathName);
}
//更新数据为str值
selectnode.setUserObject(str);
}
//结点删除
public void delete(OperateFrame operateFrame2,OperateXml operateXml,String pathName) {
System.out.println("删除");
DefaultMutableTreeNode node =
(DefaultMutableTreeNode)operateFrame.getJtree().getLastSelectedPathComponent();
//不能删除公司节点
if(node.isRoot())
{
return ;
}
//如果要删除部门节点那么必须提示
if(node.getLevel()==1)
{
//YESORNO 确认对话框点击的是确认还是取消
int YES_OR_NO = JOptionPane.showConfirmDialog(null,
"你确定要删除本部门以及它下面的小组吗?","谨慎!",
JOptionPane.YES_NO_OPTION);
//没有点击确定则不做任何操作
if(YES_OR_NO != JOptionPane.YES_OPTION)
{
return ;
}
//点击了确定删除
else
{
//TODO 得到部门和它下面的小组名称 传入数据库方法
operateXml.deleteDept((String)node.getUserObject(), pathName);
}
}
//删除的是小组
else
{
//TODO 调用数据库方法对小组删除
String deptAttriValue = (String) ((DefaultMutableTreeNode)node.getParent()).getUserObject();
operateXml.deleteGroup(deptAttriValue, (String)node.getUserObject(), pathName);
}
node.removeFromParent();
node.removeFromParent();
operateFrame.getJtree().updateUI();
}
//鼠标的设置右键功能 得到部门结点 小组结点
public void mouse(OperateFrame source,MouseEvent e) {
TreePath treePath = operateFrame.getJtree().getPathForLocation(e.getX(), e.getY());
if(treePath != null)
{
operateFrame.getJtree().setSelectionPath(treePath);
DefaultMutableTreeNode node =
(DefaultMutableTreeNode)operateFrame.getJtree().getLastSelectedPathComponent();
Component insert = operateFrame.getJpopupMenu().getComponent(0);
Component udpate = operateFrame.getJpopupMenu().getComponent(2);
Component delete = operateFrame.getJpopupMenu().getComponent(4);
Component find = operateFrame.getJpopupMenu().getComponent(6);
//根节点的更新和删除不能用
if(node.isRoot())
{
insert.setEnabled(true);
udpate.setEnabled(false);
delete.setEnabled(false);
find.setEnabled(false);
operateFrame.getJpopupMenu().updateUI();
}
//部门节点三个功能都可以用
//得到部门结点
if(node.getLevel()==1)
{
insert.setEnabled(true);
udpate.setEnabled(true);
delete.setEnabled(true);
find.setEnabled(true);
operateFrame.getJpopupMenu().updateUI();
//TODO delete
bumenjiedian=(String)node.getUserObject();
}
//小组节点
//得到小组结点
if(node.getLevel()==2)
{
insert.setEnabled(false);
udpate.setEnabled(true);
delete.setEnabled(true);
find.setEnabled(true);
operateFrame.getJpopupMenu().updateUI();
xiaozujiedian=(String) node.getUserObject();
}
operateFrame.getJpopupMenu().show(operateFrame.getJtree(),e.getX(), e.getY());
}
}
// find 查看部门结点并显示到JTable
public void find(OperateFrame source) {
//删除储存的当前页
operateFrame.deleteDangqian();
// System.out.println(bumenjiedian);
StaffMes sff = new StaffMes();
//部门字符串数组
date2 = sff.getDate();
pagination p = new pagination();
//该循环找出每个部门下数据
if(date2!=null){
for(int i = 0;i < date2.length ; i++){
String[][] str = sff.getDepartResult(i+1);
if(str.length!=0 && date2[i].equals(bumenjiedian)){
SingleString.getInstance().setStr(str);
int a = 1;
p.fenYe(str, a,operateFrame.getJtabel(),operateFrame.getjJlabel());
}
else if(str.length==0 && date2[i].equals(bumenjiedian)){
JOptionPane.showMessageDialog(source,"这个部门没有员工!");
}
}
}else{
JOptionPane.showMessageDialog(source,"没有这个部门!");
}
//按小组查找 员工信息
System.out.println(xiaozujiedian);
System.out.println(bumenjiedian);
}
//JTable 右键操作
public void mousechecked(OperateFrame source, MouseEvent e) {
if(SwingUtilities.isRightMouseButton(e)){
final int row = operateFrame.getJtabel().rowAtPoint((e).getPoint());
if(row!=-1){
final int column = operateFrame.getJtabel().columnAtPoint((e).getPoint());
final JPopupMenu popup = new JPopupMenu();
JMenuItem select = new JMenuItem("选择");
select.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
operateFrame.getJtabel().setRowSelectionInterval(row,row);
}
});
popup.add(select);
popup.add(new JSeparator());
JMenuItem edit = new JMenuItem("编辑");
popup.add(edit);
edit.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
operateFrame.getJtabel().setRowSelectionInterval(row,row);
String input1 = JOptionPane.showInputDialog("输入新的部门号(1-5):");
if(input1!=null){
if(!"1".equals(input1)&&!"2".equals(input1)&&!"3".equals(input1)
&&!"4".equals(input1)&&!"5".equals(input1)){
JOptionPane.showMessageDialog(null,"没有这个部门");
}else{
String input2 = JOptionPane.showInputDialog("输入新的小组号(1-5):");
if(input2!=null){
if(!"1".equals(input2)&&!"2".equals(input2)&&!"3".equals(input2)
&&!"4".equals(input2)&&!"5".equals(input2)){
JOptionPane.showMessageDialog(null,"没有这个小组");
}else{
String[][] str = SingleString.getInstance().getStr();
int a = (operateFrame.getDangqian()-1)*10+row;
String s = str[a][0];
StaffMes sf = new StaffMes();
sf.updateStaff(Integer.parseInt(s),Integer.parseInt(input1)*10+Integer.parseInt(input2));
JOptionPane.showMessageDialog(null,"修改成功!");
operateFrame.updateView();
}
}
}
}
}
});
JMenuItem calcel = new JMenuItem("取消");
calcel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
popup.setVisible(false);
}
});
popup.add(new JSeparator());
popup.add(calcel);
popup.show((e).getComponent(),(e).getX(),(e).getY());
}
}
}
//多选框
public void checkBox(OperateFrame source, ItemEvent ie) {
JCheckBox[] c = operateFrame.getCheckBox();
b = new boolean[c.length];
for(int i = 0;i<c.length;i++){
b[i]=c[i].isSelected();
}
}
}