Package clips.doctor.profcheckup.dialogs

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

/*
* PanelDanger.java
*
* Created on 12 Сентябрь 2008 г., 12:32
*/
package clips.doctor.profcheckup.dialogs;

import clips.delegate.contract.ContractLocal;
import clips.delegate.contract.ServisePriceData;
import clips.delegate.directory.complex.DangerServiceData;
import clips.delegate.directory.filtered.DirectoryCheckupTypeItem;
import clips.delegate.directory.complex.DirectoryDangerItem;
import clips.delegate.directory.filtered.DirectoryServiceItem;
import clips.delegate.doctor.checkup.CheckupXMLData;
import clips.doctor.checkup.prepareCheckup.DialogEditCheckUpList;
import cli_fmw.utils.InfoDialog;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.utils.DefaultColors;
import cli_fmw.utils.Selector;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.utils.table_config_states.StateSaver;
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import org.jdom.JDOMException;

/**
*
* @author  petr
*/
public class PanelDanger extends javax.swing.JPanel {
   
    public static String PROPERTY_ACTIVE = "Active";

    private DirectoryDangerItem current;
//    private ArrayList<CheckupXMLData> xmlList;
    private Map<Integer, CheckupXMLData> xmlMap;
    private boolean xmlFilled;
    private String infoText;
    private boolean lastState;
    private ArrayList<DirectoryServiceItem> serviceList;
    private HashMap<DirectoryServiceItem, Integer> servMap;
    private boolean isRed;
    private boolean isBlocked;
    private boolean fullMoney = true;
   
    /**
     *
     * @param danger
     * @param xmlMap can be null, will created
     * @param block
     * @throws cli_fmw.main.ClipsException
     */
    public PanelDanger(DirectoryDangerItem danger, Map<Integer, CheckupXMLData> xmlMap, boolean block, ContractLocal contractLocal) throws ClipsException {
        xmlFilled = false;
        initComponents();
        tfSerpack.setText(danger.getTitle());
        lastState = false;
        current = danger;
        servMap = new HashMap<DirectoryServiceItem, Integer>();
        Selector<ServisePriceData> contractServiceList = contractLocal.getContractServiceList();
        for (int i = 0; i < contractServiceList.size(); i++) {
            ServisePriceData data = contractServiceList.get(i);
            servMap.put(data.getService(), data.getPrice() - data.getMoney());
        }
        createServiceList(contractServiceList);

        if (xmlMap != null){
            this.xmlMap = xmlMap;
            xmlFilled = true;
        }else{
            createXmlList();
        }
        isBlocked = block;
        if (block){//заблокировано
//            btInfo.setEnabled(false);
            btAnalises.setEnabled(false);
//            isRed = false;

            serviceList = new ArrayList<DirectoryServiceItem>();
            SelectorEditableExceptional<DangerServiceData> dsChunk = current.getDangerServices();
            for (int i = 0; i < dsChunk.size(); i++) {
                serviceList.add(dsChunk.get(i).getService());
            }
        }
        if(isInContract()){
            if(!fullMoney){
                this.setBackground(DefaultColors.middle(Color.YELLOW, Color.WHITE));
            }else{
                this.setBackground(jPanel1.getBackground());
            }
        }else{
            this.setBackground(Color.RED);
        }
        if (!xmlFilled){
            btAnalises.setBackground(DefaultColors.FIELD_TO_INPUT);
        }
        tfSerpack.setCaretPosition(0);
    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.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        tfSerpack = new javax.swing.JTextField();
        btInfo = new javax.swing.JButton();
        btAnalises = new javax.swing.JButton();

        jLabel1.setText("Вредный фактор");

        setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2));
        setPreferredSize(new java.awt.Dimension(310, 29));
        setLayout(new java.awt.BorderLayout());

        jPanel1.setPreferredSize(new java.awt.Dimension(310, 29));
        jPanel1.setLayout(new java.awt.BorderLayout());

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

        tfSerpack.setEditable(false);
        tfSerpack.setText("jTextField1");
        tfSerpack.setPreferredSize(new java.awt.Dimension(150, 19));
        jPanel2.add(tfSerpack, java.awt.BorderLayout.CENTER);

        btInfo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/icons/info.PNG"))); // NOI18N
        btInfo.setPreferredSize(new java.awt.Dimension(19, 19));
        btInfo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btInfoActionPerformed(evt);
            }
        });
        jPanel2.add(btInfo, java.awt.BorderLayout.LINE_END);

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

        btAnalises.setText("Анализы");
        btAnalises.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAnalisesActionPerformed(evt);
            }
        });
        jPanel1.add(btAnalises, java.awt.BorderLayout.LINE_END);

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

    /**
     * fill info about services in danger factor
     * @throws cli_fmw.main.ClipsException
     */
    private void createServiceList(Selector<ServisePriceData> contractServiceList) throws ClipsException{
        infoText = "<html> <h3> " + current.getTitle() + " </h3><hr>";
        serviceList = new ArrayList<DirectoryServiceItem>();
        //делаем выбранный активнымt
        infoText += "<p><UL>";
       
        ArrayList<DirectoryServiceItem> list = new ArrayList<DirectoryServiceItem>();
        SelectorEditableExceptional<DangerServiceData> dsChunk = current.getDangerServices();
        for (int i = 0; i < dsChunk.size(); i++) {
            DangerServiceData dangerService = dsChunk.get(i);
            DirectoryServiceItem service = dangerService.getService();
            serviceList.add(service);
            String serv = "";
            serv += service + (!dangerService.getSpeciality().isNullItem() ? " " + dangerService.getSpeciality() : "");

            if (!servMap.containsKey(service)){
                serv = "<font color=red>" + serv + " (не включена в договор!) </font>";
                isRed = true;
            }else{
                if (servMap.get(service) != 0){
                    serv = "<font color=#FF8888>" + serv + " (оплачивается не полностью!) </font>";
                    fullMoney = false;
                }
            }
            infoText += "<li>" + serv;
        }
        infoText += "</ul></p>";

        infoText += " </html>";
    }

    /**
     * вызывать только после заполнения списка услуг
     * (например после вызова createServiceList)
     * @throws cli_fmw.main.ClipsException
     */
    private void createXmlList() throws ClipsException{
        if (serviceList != null) {
            //создание списка хмлшег
            try {
                if (xmlMap == null) {
                    xmlMap = new HashMap<Integer, CheckupXMLData>();
                    for (int i = 0; i < serviceList.size(); i++) {
                        DirectoryServiceItem service = serviceList.get(i);
                        DirectoryCheckupTypeItem checkupTypeItem = service.getCheckUpType();
                        if (checkupTypeItem != null && checkupTypeItem.getID() != 0) {
                            xmlMap.put(service.getID(), new CheckupXMLData(checkupTypeItem));
                        }
                    }
                }
            } catch (JDOMException ex) {
                MessageBox.showError(MessageBox.E_INVALID_XML_STRING);
                return;
            }

            if (xmlMap.isEmpty()) {
                xmlFilled = true;
                btAnalises.setEnabled(false);
            }       
        }
    }
   
private void btAnalisesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAnalisesActionPerformed
    if (!xmlMap.isEmpty()) {
        showDialog();
    }
}//GEN-LAST:event_btAnalisesActionPerformed

    /**
     * Show dialog checkup editing
     */
    private void showDialog(){
        //hindu backup
        int size = xmlMap.size();
        int[] idxs = new int[size];
        String[] xmls = new String[size];
        boolean[] dirties = new boolean[size];
        DirectoryCheckupTypeItem[] types = new DirectoryCheckupTypeItem[size];
        Iterator<Integer> it = xmlMap.keySet().iterator();
        int i = 0;
        while (it.hasNext()) {
            Integer index = it.next();
            CheckupXMLData xmlData = xmlMap.get(index);
            idxs[i] = index;
            xmls[i] = xmlData.getXMLStr();
            dirties[i] = xmlData.isDirty();
            types[i] = xmlData.getCheckupType();
            i++;
        }

        DialogEditCheckUpList dlg = new DialogEditCheckUpList(MainWindow.mainWindow,
                new ArrayList<CheckupXMLData>(xmlMap.values())) {

            @Override
            public void setVisible(boolean b) {
                super.setVisible(b);
                this.setLocation(btInfo.getLocationOnScreen());
            }
        };
        dlg.setAlwaysOnTop(true);
        dlg.setVisible(true);
        if (dlg.getDlgResult() == ModalDialog.DLG_CANCEL) {
            //hindu restore
            try {
                for (int j = 0; j < size; j++) {
                    xmlMap.put(idxs[j], new CheckupXMLData(types[j], xmls[j], dirties[j]));
                }
            } catch (JDOMException ex) {
                MessageBox.showException(new ClipsException("Произошла ошибка,\n корректность назначения проб не гарантирована.", ex));
                xmlFilled = false;
            }
            xmlFilled = false;
            return;
        }
        if (dlg.getDlgResult() == ModalDialog.DLG_OK) {
            xmlFilled = true;
        }
        if (xmlFilled){
            btAnalises.setBackground(DefaultColors.BUTTON_BACKGROUND);
        }else{
            btAnalises.setBackground(DefaultColors.FIELD_TO_INPUT);
        }
    }

private void btInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btInfoActionPerformed
    InfoDialog dialog = new InfoDialog(MainWindow.mainWindow, infoText, "Назначаемые услуги");
    dialog.setAlwaysOnTop(true);
    dialog.setVisible(true);
}//GEN-LAST:event_btInfoActionPerformed
   
    public boolean isXmlFilled(){
        return xmlFilled;
    }

    public DirectoryDangerItem getDanger() {
        return current;
    }

    public ArrayList<DirectoryServiceItem> getServiceList() {
        return serviceList;
    }
   
    public CheckupXMLData getXml(DirectoryServiceItem service){
        return xmlMap.get(service.getID());
    }
   
    public boolean isInContract(){
        return !(!isBlocked & isRed);
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
    }

    @Override
    public String toString() {
        return current.getTitle();
    }
   
   

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAnalises;
    private javax.swing.JButton btInfo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTextField tfSerpack;
    // End of variables declaration//GEN-END:variables
}
TOP

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

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.