Package realcix20.guis.views

Source Code of realcix20.guis.views.SelectCurrencyEvaluationDialog

package realcix20.guis.views;

import info.clearthought.layout.TableLayout;

import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.EventObject;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.TreeMap;
import java.util.Vector;

import javax.swing.AbstractAction;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;

import org.jdesktop.swingx.JXDatePicker;
import org.jdesktop.swingx.JXTable;

import realcix20.classes.RegClass;
import realcix20.guis.utils.DialogManager;
import realcix20.guis.utils.ImageManager;
import realcix20.guis.utils.KeyUtil;
import realcix20.guis.utils.MnemonicGenerator;
import realcix20.guis.utils.TxtManager;
import realcix20.utils.DAO;
import realcix20.utils.Resources;

public class SelectCurrencyEvaluationDialog extends JDialog implements
    ActionListener {

  private MainView container;

  private JXDatePicker datePicker;

  private JXTable sequenceTable;

  private Vector datas;
 
  Date startDate = null;
 
  TreeMap<Date,String> resultMap=new TreeMap<Date, String>();

  private JCheckBox isDelOldCUR;
 

  public SelectCurrencyEvaluationDialog(MainView container) {
    super(container);
   

    DAO dao = DAO.getInstance();
    dao.query(Resources.SELECT_EARLIST_RDATE);
    ResultSet rs = dao.executeQuery();
    try {
      if (rs.next()) {
        startDate = rs.getDate(1);
      }
    } catch (SQLException e1) {
      e1.printStackTrace();
    }
    if (startDate == null) {
      // ��������
      DialogManager.showMessageDialog(SelectCurrencyEvaluationDialog.this,TxtManager.getTxt("INFORMATION.CURRENCYEVALUATIONSUCCESS2"));
      container.setEnabled(true);
      dispose();
      return;
    }           

   
    this.container = container;
    initMenuBar();
    initComponents();
  }

  private void initMenuBar() {
    KeyUtil.add("ESCAPE", getRootPane(), new AbstractAction() {
      public void actionPerformed(ActionEvent e) {
        container.setEnabled(true);
        dispose();
      }
    });
  }

  private void initComponents() {
    // ======== this ========
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        SelectCurrencyEvaluationDialog thisWindow = (SelectCurrencyEvaluationDialog) e
            .getSource();
        thisWindow.container.setEnabled(true);
        thisWindow.dispose();
      }
    });
    Container contentPane = getContentPane();
    // alter UI
    double size[][] = {
        { 10, TableLayout.FILL, TableLayout.FILL, 10 },
        { 10, TableLayout.PREFERRED, TableLayout.FILL,
            TableLayout.PREFERRED, TableLayout.PREFERRED,10 } };   
    TableLayout tlayout = new TableLayout(size);
    tlayout.setVGap(10);
    tlayout.setHGap(10);
    contentPane.setLayout(tlayout);

    JLabel label = new JLabel(TxtManager
        .getTxt("VIEW.CURRENCYEVALUATION.LABEL"));
    datePicker = new JXDatePicker();
    datePicker.setFormats(new String[]{"yyyy-MM-dd"});

    sequenceTable = new JXTable();
    sequenceTable.setColumnControlVisible(false);
    sequenceTable.setSortable(false);
    sequenceTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    Vector cols = new Vector();
    Vector datas = new Vector();
    datas.add(new Vector());
    cols.add(TxtManager.getTxt("INFORMATION.CURRENCYEVALUATION.TIMESEQUENCE"));
    TableModel model = new DefaultTableModel(datas, cols);
    sequenceTable.setModel(model);     
      sequenceTable.setRowHeight(22);     
   

    datePicker.addActionListener(this);
    JButton confirmButton = new JButton();
    confirmButton.setText(MnemonicGenerator.generateMnemonicString(
        TxtManager.getTxt("VIEW.GLOBAL.CONFIRMBUTTON"), KeyEvent.VK_O));
    confirmButton.setMnemonic(KeyEvent.VK_O);
    confirmButton
        .setIcon(ImageManager.getImage(ImageManager.CONFIRM_IMAGE));
    confirmButton.setActionCommand("Confirm");
    confirmButton.addActionListener(this);

    JButton cancelButton = new JButton();
    cancelButton.setText(MnemonicGenerator.generateMnemonicString(
        TxtManager.getTxt("VIEW.GLOBAL.CANCELBUTTON"), KeyEvent.VK_C));
    cancelButton.setMnemonic(KeyEvent.VK_C);
    cancelButton.setIcon(ImageManager.getImage(ImageManager.CANCEL_IMAGE));
    cancelButton.setActionCommand("Cancel");
    cancelButton.addActionListener(this);
   
    isDelOldCUR=new JCheckBox(TxtManager.getTxt("VIEW.CURRENCYEVALUATION.ISDELOLDCUR"));
    isDelOldCUR.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e) {
        if(isDelOldCUR.isSelected()){
          //ȷ��
          if(DialogManager.showYesNoDialog(SelectCurrencyEvaluationDialog.this, TxtManager.getTxt("INFORMATION.DELETEOLDCUR")) == 0){
           
          }else{
            isDelOldCUR.setSelected(false);
          }
        }
      }
    });

    contentPane.add(label, "1,1");
    contentPane.add(datePicker, "2,1");
    contentPane.add(new JScrollPane(sequenceTable), "1,2,2,2");
    contentPane.add(isDelOldCUR,"1,3,2,3");   
    contentPane.add(confirmButton, "1,4,r,c");
    contentPane.add(cancelButton, "2,4,l,c");
   

    setSize(300, 400);
    setTitle(TxtManager.getTxt("VIEW.CURRENCYEVALUATION.TITLE"));
    setVisible(true);
    setLocationRelativeTo(null);
    setResizable(false);
  }

  private void currencyEvaluation(java.sql.Date evaluationDate) {
    // first,delete TMPXR & TMPFC
    deleteTMPXR_TMPFC();
    // next,insert TMPXR & TMPFC
    insertTMPXR(evaluationDate);
    insertTMPFC(evaluationDate);
    // next,validate if the xr is maintained
    Vector tcs = validateXRMaintain();
    if (tcs.size() == 0) {
      int newR = RegClass.createCurrencyEvaluationReg(evaluationDate);
      if (newR > 0) {
        StringBuffer sb = new StringBuffer(TxtManager.getTxt("INFORMATION.CURRENCYEVALUATIONSUCCESS"));
        sb.append(newR + " ");
        resultMap.put(evaluationDate,sb.toString());       
      } else {
        StringBuffer sb = new StringBuffer(TxtManager.getTxt("INFORMATION.CURRENCYEVALUATIONSUCCESS2"));
        resultMap.put(evaluationDate,sb.toString());
      }
    } else {
      StringBuffer sb = new StringBuffer(TxtManager.getTxt("INFORMATION.CURRENCY"));
      Iterator tcsIter = tcs.iterator();
      while (tcsIter.hasNext()) {
        String tc = (String) tcsIter.next();
        sb.append(" " + tc + ",");
      }
      sb.append(TxtManager.getTxt("INFORMATION.CURRENCY1"));
      DialogManager.showMessageDialog(this, sb.toString());
    }
  }

  public Vector validateXRMaintain() {
    Vector tcs = new Vector();
    DAO dao = DAO.getInstance();
    dao.query(Resources.VALIDATE_XR_MAINTAIN_SQL);
    ResultSet rs = dao.executeQuery();
    try {
      while (rs.next()) {
        tcs.add(rs.getString("TC"));
      }
      rs.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return tcs;
  }

  public MainView getContainer() {
    return container;
  }

  private void insertTMPFC(java.sql.Date evaluationDate) {
    DAO dao = DAO.getInstance();
    dao.update(Resources.INSERT_TMPFC_SQL);
    dao.setObject(1, evaluationDate);
    dao.executeUpdate();
  }

  private void insertTMPXR(java.sql.Date evaluationDate) {
    DAO dao = DAO.getInstance();
    dao.update(Resources.INSERT_TMPXR_SQL);
    dao.setObject(1, evaluationDate);
    dao.executeUpdate();
  }

  private void deleteTMPXR_TMPFC() {
    DAO dao = DAO.getInstance();
    dao.update(Resources.DELETE_TMPXR_SQL);
    dao.executeUpdate();
    dao.update(Resources.DELETE_TMPFC_SQL);
    dao.executeUpdate();
  }

  public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("Cancel")) {
      container.setEnabled(true);
      dispose();
    } else if (e.getActionCommand().equals("Confirm")) {
      //clear map
      resultMap.clear();
     
      if (datas==null||datas.size() == 0) {
        // ��ѡ������
        DialogManager.showMessageDialog(SelectCurrencyEvaluationDialog.this,TxtManager.getTxt("INFORMATION.CURRENCYEVALUATION.ERROREMPTY"));
        return;
      }
     
      //TODO ɾ���ɵ������ĵ�
      if(isDelOldCUR.isSelected()){
        DAO dao = DAO.getInstance();
        dao.update(Resources.SELECT_REVALUATION_R);
        ResultSet rs = dao.executeQuery();
       
        DAO daor = DAO.getInstance();
        try {
          while(rs.next()){
            int r = rs.getInt("R");
            ((RegClass)getContainer().getCurrentObject()).delete(r);           
          }
        } catch (SQLException e1) {
          e1.printStackTrace();
        }
      }
     
      HashSet<Date> dataset=new HashSet<Date>();
      for (Object dv : datas) {
        Date edate = (Date)((Vector)dv).get(0);
        if(!dataset.contains(edate)){
          dataset.add(edate);
          currencyEvaluation((java.sql.Date)((Vector)dv).get(0));
        }
      }

      Vector results = new Vector();
      for (Date date : resultMap.keySet()) {
        Vector result = new Vector();
        result.add(date);
        result.add(resultMap.get(date));
        results.add(result);
      }
      Vector rc = new Vector();
      rc.add(TxtManager.getTxt("INFORMATION.CURRENCYEVALUATION.TIMESEQUENCE"));
      rc.add(TxtManager.getTxt("INFORMATION.CURRENCYEVALUATIONRESULTTITLE"));
      JXTable resultTable=new JXTable(results,rc);     
      DialogManager.showDialog(TxtManager.getTxt("INFORMATION.CURRENCYEVALUATIONRESULTTITLE"),new JScrollPane(resultTable));
      container.setEnabled(true);
      //���µ�ǰ��ͼ
      container.updateObjectViewTable();
      dispose();
    } else {
      Date endDate = new Date(datePicker.getDate().getTime());
     
      Vector cols = new Vector();
      datas = new Vector();

      if (endDate.before(startDate)) {
        //����ѡ�� "�������������������"
        DialogManager.showMessageDialog(SelectCurrencyEvaluationDialog.this,TxtManager.getTxt("INFORMATION.CURRENCYEVALUATION.ERROREARLY")+ startDate);
        return;
      } else {
        Vector data=new Vector();
//        data.add(startDate);
//        datas.add(data);
       
        Calendar cal = new GregorianCalendar();
        cal.setTimeInMillis(startDate.getTime());
       
        int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        cal.set(Calendar.DAY_OF_MONTH, days);

        while (cal.getTimeInMillis()<endDate.getTime()) {
          data=new Vector();
          data.add(new Date(cal.getTimeInMillis()));
          datas.add(data);
          cal.add(Calendar.MONTH, 1);
          days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
          cal.set(Calendar.DAY_OF_MONTH, days);         
        }
        data=new Vector();
        data.add(endDate);
        datas.add(data);
      }
      cols.add(TxtManager.getTxt("INFORMATION.CURRENCYEVALUATION.TIMESEQUENCE"));
      sequenceTable.setModel(new DefaultTableModel(datas, cols));
//      sequenceTable.updateUI();
      TableColumn col = sequenceTable.getColumnModel().getColumn(0);
        col.setCellEditor(new DateCellEditor());
        JPopupMenu datePopMenu=new JPopupMenu();
        JMenuItem delItem = new JMenuItem();
        delItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.OBJECTEDIT.GLOBAL.DELETE"), KeyEvent.VK_D));
        delItem.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
          datas.remove(sequenceTable.getSelectedRow());
          sequenceTable.updateUI();
        }
        });
        datePopMenu.add(delItem);
      sequenceTable.setComponentPopupMenu(datePopMenu);
      KeyUtil.add("DELETE",sequenceTable,new AbstractAction(){
        public void actionPerformed(ActionEvent e) {
          datas.remove(sequenceTable.getSelectedRow());
          sequenceTable.updateUI();         
        }
      });
    }
  }
 
 
  class DateCellEditor extends AbstractCellEditor implements TableCellEditor {   
    JComponent component = new JXDatePicker();
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
      ((JXDatePicker)component).removeActionListener(listener);
      ((JXDatePicker)component).setDate(new java.util.Date(((Date)value).getTime()));
      ((JXDatePicker)component).setFormats(new String[]{"yyyy-MM-dd"});
      ((JXDatePicker)component).addActionListener(listener);
      return component;
    }
    public Object getCellEditorValue() {
      Date date = new Date(((JXDatePicker)component).getDate().getTime());
      if (date.before(startDate)){
        //����ѡ�� "�������������������"
        DialogManager.showMessageDialog(SelectCurrencyEvaluationDialog.this,TxtManager.getTxt("INFORMATION.CURRENCYEVALUATION.ERROREARLY")+ startDate);
        cancelCellEditing();
      }
      return date;
    }   
    ActionListener listener = new ActionListener(){
      public void actionPerformed(ActionEvent e) {
        stopCellEditing();
        List list=new ArrayList(datas);
        Collections.sort(datas,new Comparator<Vector>(){
          public int compare(Vector o1, Vector o2) {
            return ((Date)o1.get(0)).before((Date)o2.get(0))? -1:1;
          }
        });       
        sequenceTable.updateUI();
        sequenceTable.getSelectionModel().clearSelection();
      }
    };
        public boolean isCellEditable(EventObject evt) {
            if (evt instanceof MouseEvent) {
                int clickCount;
                clickCount = 2;
                return ((MouseEvent)evt).getClickCount() >= clickCount;
            }
            return true;
        }       
  }
}
TOP

Related Classes of realcix20.guis.views.SelectCurrencyEvaluationDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.