Package clips.doctor.profcheckup.item

Source Code of clips.doctor.profcheckup.item.PanelProfCheckupItemEdit

/*
* PanelProfcheckupItemView.java
*
* Created on 17 Май 2008 г., 11:03
*/
package clips.doctor.profcheckup.item;

import cli_fmw.utils.SelectorEditableExceptional;
import clips.delegate.directory.complex.DangerServiceData;
import clips.delegate.directory.complex.DirectoryPacketTemplateItem;
import clips.delegate.contract.PolisData;
import clips.delegate.directory.simple.profcheckupResult.DirectoryProfcheckupResultItem;
import clips.delegate.doctor.profchekup.ProfcheckupItemLocal;
import cli_fmw.delegate.DelegateLine2;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.main.ActivateSensitive;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.main.OpenCloseSensitive;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.Persistentable;
import cli_fmw.utils.InfoDialog;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.table_config_states.StateSaver;
import clips.delegate.directory.complex.DirectoryDangerItem;
import clips.delegate.directory.simple.profcheckupResult.DirectoryProfcheckupResult;
import clips.doctor.medexam.TableModelMedexamResult;
import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;

/**
* Панель отображает информацию по данному профчекап итему
* TODO: привинтить права
* @author  petr
*/
public class PanelProfCheckupItemEdit extends PageGeneric implements DocumentListener,
                                                                    Persistentable,
                                                                    ActivateSensitive{

    DirectoryPacketTemplateItem servicePacket; //пакет услуг точнее его шаблон
    private ProfcheckupItemLocal profcheckupItemLocal;//сам делегат
    private String title;
    private String serviceInfo;
    private String contractInfo;
    private TableModelMedexamResult model;
    private DirectoryProfcheckupResult dirPR;

    /** Creates new form PanelProfcheckupItemView */
    public PanelProfCheckupItemEdit(PageContainer container, ProfcheckupItemLocal profcheckupItem) throws ClipsException {
        super(container);
        initComponents();
        dirPR = DirectoryLocator.getDirectory(DirectoryProfcheckupResult.class);
//        dchLightWorkTill.setEnabled(false);//скрываем панель "отправлен на люгкую работу"
        setProfCheckupItem(profcheckupItem);
        title = profcheckupItemLocal.getPolisData().getClient(getAuditManager()).toString();
        taResultExtra.getDocument().addDocumentListener(this);
        profcheckupItemLocal.addContentStateListener(container);
        createServiceInfo(profcheckupItem.getDanger());
        contractInfo = profcheckupItem.getPolisData().getContract().getHTML();
    StateSaver.attachTo(this);
    }

    private void reloadTable() throws ClipsException {
        if (model != null) {
            profcheckupItemLocal.removeContentStateListener(model);
        }
        model = new TableModelMedexamResult(profcheckupItemLocal);
        model.addTableModelListener(tblResults);
        tblResults.setModel(model);
        DefaultComboBoxModel modelTypes = new DefaultComboBoxModel(dirPR.toArray());
        JComboBox comboPR = new JComboBox(modelTypes);
        tblResults.getColumnModel().getColumn(TableModelMedexamResult.COL_RESULT).setCellEditor(new DefaultCellEditor(comboPR));
    }

    void createServiceInfo(DirectoryDangerItem ddi) throws ClipsException{
        serviceInfo = "<html>";//<h1>Список необходимых к оказанию услуг</h1><hr>";
        SelectorEditableExceptional<DangerServiceData> dangerServices = ddi.getDangerServices();
        serviceInfo += "<UL>";
        for (int i = 0; i < dangerServices.size(); i++) {
            String servTitle = dangerServices.get(i).getService().getTitle();
            serviceInfo += "<li>" + servTitle;
        }
        serviceInfo += "</UL></html>";
    }

    /**
     * Задание профчекапитема панели
     * @param pil - сам делегат
     */
    public void setProfCheckupItem(ProfcheckupItemLocal pil) throws ClipsException {

        //устанавливаем поля окна
        taDanger.setText(pil.getDanger().getTitle());
        taDanger.setCaretPosition(0);
        taResultExtra.setText(pil.getResultExtra());
        taResultExtra.setCaretPosition(0);
        //загружаем в модель комбо-бокса виды результатов из справочника
        DirectoryProfcheckupResult simple = DirectoryLocator.getDirectory(DirectoryProfcheckupResult.class);
        DefaultComboBoxModel boxModel1 = new DefaultComboBoxModel(simple.toArray());
        cbProfres.setModel(boxModel1);
        cbPassed.setSelected(pil.isPassed());//пройден / непройден
        cbProfres.setEnabled(pil.isPassed());
//        dchLightWorkTill.setEnabled(cbPassed.isSelected());
        this.profcheckupItemLocal = pil;
        dchLightWorkTill.setEnabled(pil.getResult().isLimitaryFit() && cbPassed.isSelected());// показываем панель pnlLightWork
        dchLightWorkTill.setDate(pil.getLightWorkTill());//ставим её в датачузер
        if (pil.isPassed()) {//если профосмотр пройден, то
            cbProfres.setSelectedItem(pil.getResult());//устанавливаем текущий результат
        }else{
            cbProfres.setSelectedItem(simple.getNullItem());
        }
        reloadTable();

    }

    /** 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() {

        jScrollPane3 = new javax.swing.JScrollPane();
        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel3 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        taResultExtra = new javax.swing.JTextArea();
        jPanel6 = new javax.swing.JPanel();
        jPanel7 = new javax.swing.JPanel();
        jLabel7 = new javax.swing.JLabel();
        cbPassed = new javax.swing.JCheckBox();
        jPanel10 = new javax.swing.JPanel();
        jLabel5 = new javax.swing.JLabel();
        cbProfres = new javax.swing.JComboBox();
        pnlLightWork = new javax.swing.JPanel();
        jLabel6 = new javax.swing.JLabel();
        dchLightWorkTill = new org.infotechservice.ICalendar.components.ICDateChooser();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        taDanger = new javax.swing.JTextArea();
        jPanel4 = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        btContract = new javax.swing.JButton();
        btServiceList = new javax.swing.JButton();
        jPanel8 = new javax.swing.JPanel();
        jScrollPane4 = new javax.swing.JScrollPane();
        tblResults = new cli_fmw.utils.sorted_table.SortedTable();

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

        jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

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

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Проф. осмотр", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.DEFAULT_POSITION));
        jPanel1.setLayout(new java.awt.BorderLayout());

        jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("Дополнение к результату"));
        jScrollPane1.setMaximumSize(new java.awt.Dimension(205, 105));
        jScrollPane1.setMinimumSize(new java.awt.Dimension(220, 85));

        taResultExtra.setColumns(20);
        taResultExtra.setLineWrap(true);
        taResultExtra.setRows(3);
        taResultExtra.setMaximumSize(new java.awt.Dimension(200, 100));
        taResultExtra.setMinimumSize(new java.awt.Dimension(215, 90));
        jScrollPane1.setViewportView(taResultExtra);

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

        jPanel6.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 0, 1, 1));
        jPanel6.setLayout(new java.awt.GridLayout(2, 1, 0, 5));

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

        jLabel7.setText("Пройден");
        jPanel7.add(jLabel7);

        cbPassed.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
        cbPassed.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
        cbPassed.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbPassedActionPerformed(evt);
            }
        });
        jPanel7.add(cbPassed);

        jPanel10.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 10, 0, 0));
        jPanel10.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));

        jLabel5.setText("Результат профосмотра");
        jPanel10.add(jLabel5);

        cbProfres.setEnabled(false);
        cbProfres.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbProfresActionPerformed(evt);
            }
        });
        jPanel10.add(cbProfres);

        jPanel7.add(jPanel10);

        jPanel6.add(jPanel7);

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

        jLabel6.setText("Переведен на лёгкую работу до ");
        pnlLightWork.add(jLabel6);

        dchLightWorkTill.setPreferredSize(new java.awt.Dimension(120, 19));
        dchLightWorkTill.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                dchLightWorkTillPropertyChange(evt);
            }
        });
        pnlLightWork.add(dchLightWorkTill);

        jPanel6.add(pnlLightWork);

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

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

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

        jScrollPane2.setBorder(javax.swing.BorderFactory.createTitledBorder("Вредный фактор"));
        jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

        taDanger.setColumns(20);
        taDanger.setLineWrap(true);
        taDanger.setRows(2);
        taDanger.setWrapStyleWord(true);
        jScrollPane2.setViewportView(taDanger);

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

        jPanel4.setLayout(new java.awt.GridBagLayout());

        jPanel5.setLayout(new java.awt.BorderLayout(0, 3));

        btContract.setText("Договор");
        btContract.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btContractActionPerformed(evt);
            }
        });
        jPanel5.add(btContract, java.awt.BorderLayout.NORTH);

        btServiceList.setText("Услуги");
        btServiceList.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btServiceListActionPerformed(evt);
            }
        });
        jPanel5.add(btServiceList, java.awt.BorderLayout.SOUTH);

        jPanel4.add(jPanel5, new java.awt.GridBagConstraints());

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

        jPanel3.add(jPanel2, java.awt.BorderLayout.PAGE_START);

        jSplitPane1.setLeftComponent(jPanel3);

        jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder("Осмотры специалистов"));

        tblResults.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane4.setViewportView(tblResults);

        javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 434, Short.MAX_VALUE)
            .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 434, Short.MAX_VALUE))
        );
        jPanel8Layout.setVerticalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 130, Short.MAX_VALUE)
            .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE))
        );

        jSplitPane1.setRightComponent(jPanel8);

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

    private void cbPassedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbPassedActionPerformed
        try {
            if (cbPassed.isSelected()){//restore all fields exept passed
                cbProfres.setEnabled(true);
                taResultExtra.setEditable(true);
                profcheckupItemLocal.setPassed(true);
            }else{
                profcheckupItemLocal.restore();
                profcheckupItemLocal.setPassed(false);
                setProfCheckupItem(profcheckupItemLocal);
            }
            dchLightWorkTill.setEnabled(((DirectoryProfcheckupResultItem)cbProfres.getSelectedItem()).isLimitaryFit() && cbPassed.isSelected());
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_cbPassedActionPerformed

    private void cbProfresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbProfresActionPerformed
        Object sel = cbProfres.getSelectedItem();       
        if (sel instanceof DirectoryProfcheckupResultItem){
            try {
                DirectoryProfcheckupResultItem resultItem = (DirectoryProfcheckupResultItem) sel;
                dchLightWorkTill.setEnabled(resultItem.isLimitaryFit() && cbPassed.isSelected());
                profcheckupItemLocal.setResult(resultItem);
            } catch (ClipsException ex) {
                MessageBox.showException(ex);
            }
        }
    }//GEN-LAST:event_cbProfresActionPerformed

    private void dchLightWorkTillPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_dchLightWorkTillPropertyChange
        if (dchLightWorkTill.isEnabled()){
            try {
                profcheckupItemLocal.setLightWorkTill(dchLightWorkTill.getDate());
            } catch (ClipsException ex) {
                MessageBox.showException(ex);
            }
        }
    }//GEN-LAST:event_dchLightWorkTillPropertyChange

    private void btServiceListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btServiceListActionPerformed
        InfoDialog infoDialog = new InfoDialog(MainWindow.mainWindow, serviceInfo, "Список необходимых услуг");
        infoDialog.setVisible(true);
    }//GEN-LAST:event_btServiceListActionPerformed

    private void btContractActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btContractActionPerformed
        InfoDialog infoDialog = new InfoDialog(MainWindow.mainWindow, contractInfo, "Информация о договоре");
        infoDialog.setVisible(true);
}//GEN-LAST:event_btContractActionPerformed


    @Override
    public String getPageTitle() {
        return "Проф. осмотр " + title;
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btContract;
    private javax.swing.JButton btServiceList;
    private javax.swing.JCheckBox cbPassed;
    private javax.swing.JComboBox cbProfres;
    private org.infotechservice.ICalendar.components.ICDateChooser dchLightWorkTill;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel10;
    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 jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JPanel pnlLightWork;
    private javax.swing.JTextArea taDanger;
    private javax.swing.JTextArea taResultExtra;
    private cli_fmw.utils.sorted_table.SortedTable tblResults;
    // End of variables declaration//GEN-END:variables

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

    @Override
    public void insertUpdate(DocumentEvent e) {
        updateText(e);
    }

    @Override
    public void removeUpdate(DocumentEvent e) {
        updateText(e);
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
        updateText(e);
    }

    private void updateText(DocumentEvent e) {
        if (profcheckupItemLocal != null){
            try {
                profcheckupItemLocal.setResultExtra(e.getDocument().getText(0, e.getDocument().getLength()));
            } catch (BadLocationException ex) {
                MessageBox.showException(ex);
            } catch (ClipsException ex){
                MessageBox.showException(ex);
            }
        }
    }

    @Override
    public boolean isDirty() {
        return profcheckupItemLocal != null ? profcheckupItemLocal.isDirty() : false;
    }

    @Override
    public void save() throws ClipsException {
        profcheckupItemLocal.save1();
        setProfCheckupItem(profcheckupItemLocal);
    }

    @Override
    public void restore() {
        profcheckupItemLocal.restore();
        try {
            setProfCheckupItem(profcheckupItemLocal);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);           
        }
    }

    @Override
    public void beforeActivate() {
        //do nothing
    }

    @Override
    public void beforeDeactivate() {
        //do nothing
    }

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

    @Override
    public boolean canBeDeactivated() {
        return !isDirty();
    }

}
TOP

Related Classes of clips.doctor.profcheckup.item.PanelProfCheckupItemEdit

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.