Package clips.doctor.profcheckup.search

Source Code of clips.doctor.profcheckup.search.PanelProfCheckupSearch$ProfCeckupComparator

/*
* ProfCheckupSearch.java
*
* Created on 26 Апрель 2008 г., 12:34
*/
package clips.doctor.profcheckup.search;

import clips.delegate.contract.ContractLocal;
import clips.delegate.doctor.profchekup.ProfcheckupItemLocal;
import cli_fmw.delegate.DelegateLine2;
import clips.delegate.doctor.profchekup.SearchResult;
import clips.doctor.profcheckup.dialogs.DialogNewProfCheckup;
import cli_fmw.main.ClipsException;
import clips.delegate.doctor.profchekup.ProfcheckupLocal;
import clips.delegate.doctor.profchekup.ProfcheckupSearchLocal;
import clips.doctor.profcheckup.checkup.PanelProfcheckupView;
import cli_fmw.main.ActivateSensitive;
import cli_fmw.main.MainWindow;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageException;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.PrintCreators;
import cli_fmw.main.Printable;
import cli_fmw.main.PageGeneric;
import cli_fmw.report.TableReportOptions;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.Selector;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import clips.delegate.directory.ro.DirectoryCollaboratorItem;
import clips.doctor.profcheckup.checkup.PanelProfcheckupEdit;
import clips.doctor.profcheckup.dialogs.DialogContractM;
import clips.doctor.profcheckup.search.TableCellRenderProfCheckupSearch;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import framework.utils.Converter;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Панель поиска профчекапов
* @author  petr
*/
public class PanelProfCheckupSearch extends PageGeneric implements ActivateSensitive, Printable {

    static private final int search_all = 0;
    static private final int search_before_date = 1;
    static private final int search_after_date = 2;
    static private final int search_between_dates = 3;

    class ProfCeckupComparator implements Comparator {

        @Override
        public int compare(Object o1, Object o2) {
            ProfcheckupLocal p1 = (ProfcheckupLocal) o1;
            ProfcheckupLocal p2 = (ProfcheckupLocal) o2;
            try {
                if (p1.getDateFrom().after(p2.getDateFrom())) {
                    return 1;
                } else {
                    return -1;
                }
            } catch (ClipsException ex) {
                ex.printStackTrace();
                return 0;
            }
        }
    }
    private ArrayList<ProfcheckupLocal> profcheckupLocals; //кеш профчекапов
    private boolean ableEdit; //возможность редактирования
    private ProfCeckupComparator profCeckupComparator;
    private int search_mode;

    public PanelProfCheckupSearch(PageContainer container) throws ClipsException {
        super(container);
        search_mode = search_all;
        profCeckupComparator = new ProfCeckupComparator();
       
        profcheckupLocals = new ArrayList<ProfcheckupLocal>();
        initComponents();

        dchFromDate.setDate(new Date());
        dchTillDate.setDate(new Date());

        tblProfcheckups.setSelectionMode(0);//выделять в таблице можно только по одной строке
    resizeColums();
    StateSaver.attachTo(this);
       
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jPanel3 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblProfcheckups = new cli_fmw.utils.sorted_table.SortedTable();
        jPanel4 = new javax.swing.JPanel();
        btEditWatch = new javax.swing.JButton();
        btNew = new javax.swing.JButton();
        btDelete = new javax.swing.JButton();
        btResult = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        rbAll = new javax.swing.JRadioButton();
        jPanel2 = new javax.swing.JPanel();
        btFind = new javax.swing.JButton();
        jPanel8 = new javax.swing.JPanel();
        rbDate = new javax.swing.JRadioButton();
        jPanel5 = new javax.swing.JPanel();
        jPanel6 = new javax.swing.JPanel();
        dchFromDate = new org.infotechservice.ICalendar.components.ICDateChooser();
        dchTillDate = new org.infotechservice.ICalendar.components.ICDateChooser();
        jPanel7 = new javax.swing.JPanel();
        chbFrom = new javax.swing.JCheckBox();
        chbTill = new javax.swing.JCheckBox();

        buttonGroup1.add(rbAll);
        buttonGroup1.add(rbDate);

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

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

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

            },
            new String [] {

            }
        ));
        tblProfcheckups.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblProfcheckupsMouseClicked(evt);
            }
        });
        jScrollPane2.setViewportView(tblProfcheckups);

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

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

        jPanel4.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 5, 0));

        btEditWatch.setText("Открыть");
        btEditWatch.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btEditWatchActionPerformed(evt);
            }
        });
        jPanel4.add(btEditWatch);

        btNew.setText("Новый");
        btNew.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btNewActionPerformed(evt);
            }
        });
        jPanel4.add(btNew);

        btDelete.setText("Удалить");
        btDelete.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDeleteActionPerformed(evt);
            }
        });
        jPanel4.add(btDelete);

        btResult.setText("Результаты");
        btResult.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btResultActionPerformed(evt);
            }
        });
        jPanel4.add(btResult);

        add(jPanel4, java.awt.BorderLayout.SOUTH);

        rbAll.setSelected(true);
        rbAll.setText("Все");
        rbAll.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbAllActionPerformed(evt);
            }
        });

        jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.LINE_AXIS));

        btFind.setText("Искать");
        btFind.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btFindActionPerformed(evt);
            }
        });

        jPanel8.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 0, 5));

        rbDate.setText("По дате:");
        rbDate.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbDateActionPerformed(evt);
            }
        });
        jPanel8.add(rbDate);

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

        jPanel6.setLayout(new java.awt.GridLayout(0, 1, 0, 2));

        dchFromDate.setEnabled(false);
        jPanel6.add(dchFromDate);

        dchTillDate.setEnabled(false);
        jPanel6.add(dchTillDate);

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

        jPanel7.setLayout(new java.awt.GridLayout(2, 1));

        chbFrom.setSelected(true);
        chbFrom.setText("после");
        chbFrom.setEnabled(false);
        chbFrom.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chbFromActionPerformed(evt);
            }
        });
        jPanel7.add(chbFrom);

        chbTill.setSelected(true);
        chbTill.setText("до");
        chbTill.setEnabled(false);
        chbTill.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chbTillActionPerformed(evt);
            }
        });
        jPanel7.add(chbTill);

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

        jPanel8.add(jPanel5);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(rbAll)
                    .addComponent(btFind)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 449, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(51, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(rbAll)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(49, 49, 49)
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btFind)
                .addContainerGap())
        );

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

    /**
     * �?зменение ширины столбцов
     */
    private void resizeColums() {
    TableState          state = new TableState();
    state.setPreferredWidth(TableModelProfCheckupSearch.CL_PROFCHECKUP,    2);
    state.setPreferredWidth(TableModelProfCheckupSearch.CL_DATE,      1);
    state.setPreferredWidth(TableModelProfCheckupSearch.CL_TIME_FROM,    1);
    state.setPreferredWidth(TableModelProfCheckupSearch.CL_TIME_TILL,    1);
    state.setPreferredWidth(TableModelProfCheckupSearch.CL_APPENDIX,    5);
      StateSaver.setDefaultState(this, tblProfcheckups, state);
    }

    private void selectMode() {
        if (chbFrom.isSelected() & !chbTill.isSelected()) {
            search_mode = search_after_date;
        } else if (!chbFrom.isSelected() & chbTill.isSelected()) {
            search_mode = search_before_date;
        } else if (chbFrom.isSelected() & chbTill.isSelected()) {
            search_mode = search_between_dates;
        } else if (!chbFrom.isSelected() & !chbTill.isSelected()) {
            chbFrom.setSelected(true);
            chbTill.setSelected(true);
            rbAll.setSelected(true);
            rbAllActionPerformed(null);
        } else {
            System.err.println("Ахтунг, апокалипсис!");
        }
//        System.out.println("Search mode: " + search_mode);
    }

    /**
     * Обновление таблицы
     */
    @SuppressWarnings("unchecked")
    private void resetTable() {
        //TODO: отсортировать профчекапы в кеше по дате
//        java.util.Collections.sort(profcheckupLocals, profCeckupComparator);
        TableModelProfCheckupSearch model = new TableModelProfCheckupSearch(profcheckupLocals);
        tblProfcheckups.setModel(model);
        TableCellRenderProfCheckupSearch renderer = new TableCellRenderProfCheckupSearch(new TableCellRenderProfCheckupSearch.RenderDefaultDataSource());//создаём рендер
        tblProfcheckups.setDefaultRenderer(Object.class, renderer);//вешаем рендер на таблицу
        tblProfcheckups.setDefaultRenderer(Date.class, new TableCellRenderProfCheckupSearch(new TableCellRenderProfCheckupSearch.RenderDateDataSource()));//вешаем рендер на таблицу
        //tblProfcheckups.getColumnModel().getColumn(TableModelProfCheckupSearch.CL_DATE).setCellRenderer(renderer);
  
//        System.out.println("PanelProfCheckupSearch: resetTable");
    }

    /**
     * Клик на кнопке btFind - "�?скать"
     * @param evt
     */
    private void btFindActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btFindActionPerformed
        try {
            ProfcheckupSearchLocal profcheckupSearch = new ProfcheckupSearchLocal(getAuditManager());
            profcheckupLocals = new ArrayList<ProfcheckupLocal>();
            Selector<ProfcheckupLocal> selector;
            Date begin = dchFromDate.getDate();
            Date end = dchTillDate.getDate();

            switch (search_mode) {
                case search_all:
                    profcheckupLocals = profcheckupSearch.getFullProfcheckupList();
                    break;
                case search_after_date:
                    selector = profcheckupSearch.getProfcheckupsAfterDate(begin);
                    for (int i = 0; i < selector.size(); i++) {
                        profcheckupLocals.add(selector.get(i));
                    }
                    break;
                case search_before_date:
                    selector = profcheckupSearch.getProfcheckupsBeforeDate(end);
                    for (int i = 0; i < selector.size(); i++) {
                        profcheckupLocals.add(selector.get(i));
                    }
                    break;
                case search_between_dates:
                    selector = profcheckupSearch.getProfcheckupsByDate(begin, end);
                    for (int i = 0; i < selector.size(); i++) {
                        profcheckupLocals.add(selector.get(i));
                    }
                    break;
                default:
            }

            resetTable();
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btFindActionPerformed
    /**
     * Клик на кнопке btNew - "Новый"
     * @param evt
     */
    private void btNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btNewActionPerformed
        try {
            DialogContractM dialogContract = new DialogContractM(MainWindow.mainWindow);
            dialogContract.setVisible(true);

            if (dialogContract.getDlgResult() == ModalDialog.DLG_OK) {//договор выбран
                ContractLocal contractLocal = dialogContract.getContract();//берём его
                DirectoryCollaboratorItem dirCollab = dialogContract.getCollaborator();//коллаба тоже
                //коллаба тоже
                SearchResult result = dialogContract.getResult();
                DialogNewProfCheckup profCheckupDialog
                        = new DialogNewProfCheckup(MainWindow.mainWindow, dirCollab ,contractLocal, getAuditManager());
                profCheckupDialog.setVisible(true);

            }
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btNewActionPerformed

    /**
     * Клик на кнопке btDelete - "Удаление"
     * @param evt
     */
    private void btDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDeleteActionPerformed
        int selRow = tblProfcheckups.getSelectedRowSorted();
        if (selRow >= 0) {
            if (MessageBox.showConfirmYesNo(MessageBox.C_DEL_PROFCHECKUP) ==
                    MessageBox.ANSWER_YES) {
                try {
                    profcheckupLocals.get(selRow).remove();
                    profcheckupLocals.remove(selRow);
                    resetTable();
                } catch (ClipsException ex) {
                    MessageBox.showException(ex);
                }
            }
        }
    }//GEN-LAST:event_btDeleteActionPerformed

    /**
     * Клик мышой на таблице с профосмотрами
     * @param evt
     */
private void chbTillActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chbTillActionPerformed
    dchTillDate.setEnabled(chbTill.isSelected());
    selectMode();
}//GEN-LAST:event_chbTillActionPerformed

private void rbDateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbDateActionPerformed
    dchFromDate.setEnabled(chbFrom.isSelected());
    dchTillDate.setEnabled(chbTill.isSelected());
    chbTill.setEnabled(true);
    chbFrom.setEnabled(true);
    selectMode();
}//GEN-LAST:event_rbDateActionPerformed

private void rbAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbAllActionPerformed
    dchFromDate.setEnabled(false);
    dchTillDate.setEnabled(false);
    chbTill.setEnabled(false);
    chbFrom.setEnabled(false);
    search_mode = search_all;
}//GEN-LAST:event_rbAllActionPerformed

private void btEditWatchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btEditWatchActionPerformed
    if (tblProfcheckups.getSelectedRowCount() > 0) {

        try {
//        PanelProfcheckupView profcheckupView = new PanelProfcheckupView(getContainer(), profcheckupLocals.get(tblProfcheckups.getSelectedRow()));
//        PageGeneric page = getContainer().addNewPage((PageGeneric) profcheckupView, null);
            ProfcheckupLocal pl = profcheckupLocals.get(tblProfcheckups.getSelectedRowSorted());
            ArrayList<ProfcheckupItemLocal> items = pl.getItems();
            if (items.isEmpty()) {
                MessageBox.showError(MessageBox.E_MAKE_FUCKING_EXCEPTION, "Профосмотр пуст, просмотр невозможен!");
                return;
            }
            PanelProfcheckupView panelProfcheckup = new PanelProfcheckupView(getContainer(),
                    pl.getItems().get(0).getPolisData().getContract(),
                    pl);
            PageGeneric page = getContainer().addNewPage(panelProfcheckup, null);
            getContainer().activatePage(page);
        } catch (PageException ex) {
            MessageBox.showException(ex);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    } else {
        MessageBox.showWarning(MessageBox.W_LIST_ELEMENT_NOT_SELECT);
    }
}//GEN-LAST:event_btEditWatchActionPerformed

private void chbFromActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chbFromActionPerformed
    dchFromDate.setEnabled(chbFrom.isSelected());
    selectMode();
}//GEN-LAST:event_chbFromActionPerformed

private void tblProfcheckupsMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblProfcheckupsMouseClicked
    if (evt.getClickCount() >= 2){
        btEditWatchActionPerformed(null);
    }
}//GEN-LAST:event_tblProfcheckupsMouseClicked

private void btResultActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btResultActionPerformed
        if (tblProfcheckups.getSelectedRowCount() == 1){
            try {
                ProfcheckupLocal pl = profcheckupLocals.get(tblProfcheckups.getSelectedRowSorted());
                PanelProfcheckupEdit ppe = new PanelProfcheckupEdit(getContainer(), pl);
                getContainer().addNewPage(ppe, null);
            } catch (ClipsException ex) {
                MessageBox.showException(ex);
            }
        }
}//GEN-LAST:event_btResultActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btDelete;
    private javax.swing.JButton btEditWatch;
    private javax.swing.JButton btFind;
    private javax.swing.JButton btNew;
    private javax.swing.JButton btResult;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JCheckBox chbFrom;
    private javax.swing.JCheckBox chbTill;
    private org.infotechservice.ICalendar.components.ICDateChooser dchFromDate;
    private org.infotechservice.ICalendar.components.ICDateChooser dchTillDate;
    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.JPanel jPanel8;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JRadioButton rbAll;
    private javax.swing.JRadioButton rbDate;
    private cli_fmw.utils.sorted_table.SortedTable tblProfcheckups;
    // End of variables declaration//GEN-END:variables
    @Override
    public String getPageTitle() {
        return "Поиск профосмотров";
    }

    @Override
    public void beforeActivate() {
    }

    @Override
    public void beforeDeactivate() {
        //нифига не делаем
    }

    @Override
    public boolean canBeActivated() {
        return true;//всегда мб активирована
    }

    @Override
    public boolean canBeDeactivated() {
        return true;//всегда мб деактивирована
    }

    @Override
    public DelegateLine2 getDelegate() {
        return null;
    }

    @Override
    public boolean readyForPrint() {
        return true;
    }

    @Override
    public void print() {
        if (readyForPrint()) {
            //производим поиск чтоб результаты соответствовали фильтру
            btFindActionPerformed(null);
           
            String title = "Поиск профосмотров по фильтру";
           
            HashMap<String, Object> data = new LinkedHashMap<String, Object>();
            if (rbAll.isSelected()) {
                data.put("case", "Поиск всех");
            }
            else {
                String date = "Поиск по дате: профосмотры";
                if (chbFrom.isSelected()) {
                    date += "\nпосле: " + Converter.dateToString(dchFromDate.getDate());
                }
                if (chbTill.isSelected()) {
                    date += "\nдо: " + Converter.dateToString(dchTillDate.getDate());
                }
                data.put("case", date);
            }
            TableReportOptions ops = new TableReportOptions(TableReportOptions.PageOrentation.horizontal);
            PrintCreators.createGeneratedReport(title, ops, data.entrySet(), null, tblProfcheckups.getModel(), getClass());
        }
    }
}
TOP

Related Classes of clips.doctor.profcheckup.search.PanelProfCheckupSearch$ProfCeckupComparator

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.