Package clips.doctor.profcheckup.dialogs

Source Code of clips.doctor.profcheckup.dialogs.DialogClientChoose

/*
* PanelProfCheckups.java
*
* Created on 24 Апрель 2008 г., 18:51
*/
package clips.doctor.profcheckup.dialogs;

import clips.delegate.job.DangerExamChunk;
import clips.delegate.contract.ContractLocal;
import clips.delegate.contract.PolisData;
import clips.delegate.directory.complex.DirectoryDangerItem;
import clips.delegate.doctor.profchekup.ProfcheckupItemLocal;
import clips.delegate.doctor.profchekup.ProfcheckupSearchLocal;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import java.util.ArrayList;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import clips.delegate.directory.ro.DirectoryCollaboratorItem;
import clips.delegate.doctor.profchekup.SearchResult;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

/**
* @author  petr
*/
public class DialogClientChoose extends ModalDialog implements TableModelListener {

//    private DirectoryPacketTemplateItem servicePacket;//пакет услуг (если быть точным - шаблон пакета)
    /**список контмемберов из договора id - data*/
    private ContractLocal contractLocal;//договор
    private Frame frame;//фрейм парента
    private ArrayList<ProfcheckupItemLocal> itemList;
    private HashMap<DirectoryDangerItem, Boolean> dangerMap;
    private DirectoryCollaboratorItem collaborator;
    private SearchResult result;

    public DialogClientChoose(Frame parent, DirectoryCollaboratorItem collaborator, ContractLocal contractLocal, ArrayList<ProfcheckupItemLocal> profcheckupItemList) throws ClipsException {
        this(parent, collaborator, contractLocal, profcheckupItemList, null);
    }

  /**
   *
   * @param parent фрейм парента
   * @param collabrator
   * @param contractLocal
   * @param itemList
   * @throws cli_fmw.main.ClipsException
   */
    public DialogClientChoose(Frame parent,
                            DirectoryCollaboratorItem collabrator,
                            ContractLocal contractLocal,
                            ArrayList<ProfcheckupItemLocal> itemList,
                            SearchResult result) throws ClipsException{
        super(parent, "Выбор сотрудников, направляемых на профосмотр", null);
        this.frame = parent;
        initComponents();
        //диалог посередине, занимает 0,64 от плошади экрана
        Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
        this.setBounds(new Rectangle((int) (0.6 * scrSize.width), (int) (0.6 *
                scrSize.height)));
        Rectangle dlgSize = this.getBounds();
        this.setLocation((scrSize.width - dlgSize.width) / 2, (scrSize.height -
                dlgSize.height) / 2);

        this.contractLocal = contractLocal;
        this.collaborator = collabrator;
        this.itemList = itemList;//создаём кусок профчекапа

        if (result != null){
            this.result = result;
        }else{
            ProfcheckupSearchLocal searchLocal = new ProfcheckupSearchLocal(getAuditManager());
            this.result = searchLocal.search(contractLocal.getEnterprise());
        }

        initDangerList();
    resizeColumn();
    StateSaver.attachTo(this);
    }
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel5 = new javax.swing.JPanel();
        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel3 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        jPanel6 = new javax.swing.JPanel();
        btOK = new javax.swing.JButton();
        btCancel = new javax.swing.JButton();
        jPanel7 = new javax.swing.JPanel();
        btInvertSelection = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblClientsChoose = new cli_fmw.utils.sorted_table.SortedTable();
        jPanel4 = new javax.swing.JPanel();
        pnlFindClients = new javax.swing.JPanel();
        btFind = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        chbAll = new javax.swing.JCheckBox();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblDangers = new cli_fmw.utils.sorted_table.SortedTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setModal(true);

        jPanel5.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
        jPanel5.setLayout(new java.awt.BorderLayout());

        jPanel3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 5, 0));
        jPanel3.setLayout(new java.awt.BorderLayout());

        jPanel1.setLayout(new java.awt.BorderLayout());

        btOK.setText("Принять");
        btOK.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btOKActionPerformed(evt);
            }
        });
        jPanel6.add(btOK);

        btCancel.setText("Отмена");
        btCancel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelActionPerformed(evt);
            }
        });
        jPanel6.add(btCancel);

        jPanel1.add(jPanel6, java.awt.BorderLayout.EAST);

        btInvertSelection.setText("Обратить выделение");
        btInvertSelection.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btInvertSelectionActionPerformed(evt);
            }
        });
        jPanel7.add(btInvertSelection);

        jPanel1.add(jPanel7, java.awt.BorderLayout.WEST);

        jPanel3.add(jPanel1, java.awt.BorderLayout.PAGE_END);

        tblClientsChoose.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        jScrollPane1.setViewportView(tblClientsChoose);

        jPanel3.add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jSplitPane1.setRightComponent(jPanel3);

        jPanel4.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 0, 5, 0));
        jPanel4.setLayout(new java.awt.BorderLayout());

        pnlFindClients.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 5, 0, 5));

        btFind.setText("Применить");
        btFind.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btFindActionPerformed(evt);
            }
        });
        pnlFindClients.add(btFind);

        jPanel4.add(pnlFindClients, java.awt.BorderLayout.PAGE_END);

        jPanel2.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
        jPanel2.setLayout(new java.awt.BorderLayout());

        chbAll.setText("Все");
        chbAll.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chbAllActionPerformed(evt);
            }
        });
        jPanel2.add(chbAll, java.awt.BorderLayout.CENTER);

        jPanel4.add(jPanel2, java.awt.BorderLayout.NORTH);

        tblDangers.setToolTipText("Вредные факторы");
        tblDangers.getTableHeader().setResizingAllowed(false);
        tblDangers.getTableHeader().setReorderingAllowed(false);
        tblDangers.addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                tblDangersComponentResized(evt);
            }
        });
        jScrollPane2.setViewportView(tblDangers);

        jPanel4.add(jScrollPane2, java.awt.BorderLayout.CENTER);

        jSplitPane1.setLeftComponent(jPanel4);

        jPanel5.add(jSplitPane1, java.awt.BorderLayout.CENTER);

        getContentPane().add(jPanel5, java.awt.BorderLayout.CENTER);
    }// </editor-fold>//GEN-END:initComponents

    /**
     * initialisation of danger list
     * @throws cli_fmw.main.ClipsException
     */
    private void initDangerList() throws ClipsException{
        HashSet<DirectoryDangerItem> usableDangers = result.getUsableDangers(contractLocal);
        dangerMap = new HashMap<DirectoryDangerItem, Boolean>();
        for (DirectoryDangerItem dec : usableDangers) {
            dangerMap.put(dec, false);
        }
        TableModelDangers model = new TableModelDangers(dangerMap);
        tblDangers.setModel(model);
        tblDangers.getModel().addTableModelListener(this);
    }
   
    /**
     * вернёт мап: сет опасных факторов по полисам
     * @return
     */
    private Map<PolisData, Set<DangerExamChunk>> initActivPolis() throws ClipsException{
        Map<PolisData, Set<DangerExamChunk>> res = new HashMap<PolisData, Set<DangerExamChunk>>();

        HashSet<DirectoryDangerItem> dangers = result.getUsableDangers(contractLocal);
        for (DirectoryDangerItem dec : dangers) {
            if (dangerMap.get(dec)) {
                HashSet<PolisData> usablePolisList = result.getUsablePolisList(contractLocal, dec);
                for (PolisData cmd : usablePolisList) {
                    res.put(cmd, result.getDangersByPolis(cmd));
                }
            }
        }
       
        return res;
    }
   
    /**
     *
     * @return
     */
    private Map<Integer, Set<Integer>> initSelectedPolises() throws ClipsException{
        Map<Integer, Set<Integer>> res
                = new HashMap<Integer, Set<Integer>>();
        for (int i = 0; i < itemList.size(); i++) {
            ProfcheckupItemLocal pil = itemList.get(i);
            if (res.get(pil.getPolisData().getId()) == null){
                res.put(pil.getPolisData().getId(), new HashSet<Integer>());
            }
            res.get(pil.getPolisData().getId()).add(pil.getDanger().getID());
        }
        return res;
       
    }
   
    private void resetTable() throws ClipsException{
        Map<PolisData, Set<DangerExamChunk>> activPolis = initActivPolis();
        Map<Integer, Set<Integer>> selectedPolises = initSelectedPolises();

        Iterator<PolisData> it = activPolis.keySet().iterator();
        while (it.hasNext()) {
            PolisData polisData = it.next();
            Iterator<DangerExamChunk> it1 = activPolis.get(polisData).iterator();
            while (it1.hasNext()) {
                DangerExamChunk dec = it1.next();
                boolean blocked = selectedPolises.get(polisData.getId()) == null ? false
                                    : selectedPolises.get(polisData.getId()).contains(dec.getDanger().getID());
                if (blocked){
                    it1.remove();
                }
            }
        }

        TableModelClientsChoose model = new TableModelClientsChoose(activPolis);
        TableCellRenderClientCnoose render = new TableCellRenderClientCnoose();
        tblClientsChoose.setModel(model);
        tblClientsChoose.setDefaultRenderer(Object.class, render);
    }
   
    /**
     * Клик на кнопке btFind в диалоговом окне - найти работников предприятия
     * @param evt
     */
    private void btFindActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btFindActionPerformed
        try {
            resetTable();
            btFind.setEnabled(false);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btFindActionPerformed

private void btOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOKActionPerformed
    this.setDlgResult(ModalDialog.DLG_OK);
    this.dispose();
}//GEN-LAST:event_btOKActionPerformed

private void btCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelActionPerformed
    this.setDlgResult(ModalDialog.DLG_CANCEL);
    this.dispose();
}//GEN-LAST:event_btCancelActionPerformed

private void chbAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chbAllActionPerformed
    Iterator<DirectoryDangerItem> it = dangerMap.keySet().iterator();
    while (it.hasNext()) {
        dangerMap.put(it.next(), chbAll.isSelected());       
    }
    tblDangers.updateUI();
    btFind.setEnabled(true);
}//GEN-LAST:event_chbAllActionPerformed

private void btInvertSelectionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btInvertSelectionActionPerformed
    if (tblClientsChoose.getModel() instanceof TableModelClientsChoose){
        ((TableModelClientsChoose)tblClientsChoose.getModel()).Invert();
    }
}//GEN-LAST:event_btInvertSelectionActionPerformed

private void tblDangersComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tblDangersComponentResized

}//GEN-LAST:event_tblDangersComponentResized


    /**
     * установка размеров колонок
     */
    private void resizeColumn() {
    TableState          state = new TableState();
    state.setPreferredWidth(TableModelClientsChoose.CL_ADDED,    1);
    state.setPreferredWidth(TableModelClientsChoose.CL_CLIENT,    7);
    state.setPreferredWidth(TableModelClientsChoose.CL_DANGER,    10);
    state.setPreferredWidth(TableModelClientsChoose.CL_LAST_EXAM,  4);
      StateSaver.setDefaultState(this, tblClientsChoose, state);
    state = new TableState();
    state.setPreferredWidth(TableModelDangers.CL_SELECT,      1);
    state.setPreferredWidth(TableModelDangers.CL_DANGER,      8);
     StateSaver.setDefaultState(this, tblDangers, state);
   }

    /**
     * Вернёт выбранных клиентов-
     * @return список контмемберов
     */
    public  Map<PolisData, Set<DirectoryDangerItem>> getSelectedClients() throws ClipsException{
        if (tblClientsChoose.getModel() instanceof TableModelClientsChoose){
            return ((TableModelClientsChoose) tblClientsChoose.getModel()).getSelectedValues();
        }else{
            return new HashMap<PolisData, Set<DirectoryDangerItem>>();
        }
    }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btCancel;
    private javax.swing.JButton btFind;
    private javax.swing.JButton btInvertSelection;
    private javax.swing.JButton btOK;
    private javax.swing.JCheckBox chbAll;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JPanel pnlFindClients;
    private cli_fmw.utils.sorted_table.SortedTable tblClientsChoose;
    private cli_fmw.utils.sorted_table.SortedTable tblDangers;
    // End of variables declaration//GEN-END:variables

    @Override
    public void tableChanged(TableModelEvent e) {
        if (e.getColumn() == TableModelDangers.CL_SELECT){
            btFind.setEnabled(true);
            if (chbAll.isSelected()){
                chbAll.setSelected(false);
            }
        }
    }

}
TOP

Related Classes of clips.doctor.profcheckup.dialogs.DialogClientChoose

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.