package usda.weru.weps.wepsRunControl;

import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.help.CSH;
import javax.swing.JTextField;
import static usda.weru.weps.wepsRunControl.WrcBackgroundIf.propChangeCmdDlgBkgndWriteCancelEnabledMsg;
import static usda.weru.weps.wepsRunControl.WrcBackgroundIf.propChangeCmdDlgBkgndWriteWindMsg;
import static usda.weru.weps.wepsRunControl.WrcBackgroundIf.propChangeCmdDlgBkgndWriteCliMsg;
import static usda.weru.weps.wepsRunControl.WrcBackgroundIf.propChangeCmdDlgBkgndWriteWepsMsg;
import static usda.weru.weps.wepsRunControl.WrcBackgroundIf.propChangeCmdDlgBkgndWriteStatusMsg;
import static usda.weru.weps.wepsRunControl.WrcBackgroundIf.propChangeCmdDlgBkgndWritePbarTotalMsg;
import static usda.weru.weps.wepsRunControl.WrcBackgroundIf.propChangeCmdDlgBkgndWritePbarCurMsg;

/**
 *
 * @author mhaas
 */
public class WrcDialog extends usda.weru.weps.gui.RunDialog_n implements PropertyChangeListener {

    private static final long serialVersionUID = 1L;
    public static final String propChangeCmdStrWepsRunDlgClosed = "WRCD_Dialog_Closed";

    JTextField[] JTF_arr = {JTF_win, JTF_cli, JTF_weps};

    public WrcDialog (Component parent, String title) {
        super();
        addHelp();
        setTitle("WEPS Run: " + title);
        setLocation(100, 100);
        setVisible(true);
        setResizable(true);
        JL_runName.setText(title);
        JL_runName.setToolTipText(title);

        pack();

        addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosed(WindowEvent e) {
                firePropertyChange(propChangeCmdStrWepsRunDlgClosed, null, true);
            }
        });

    }

    public JTextField getJTF (int idx) {
        return (JTF_arr[idx]);
    }

    private void addHelp() {
        CSH.setHelpIDString(JLabel4, "runWindGen_html");
        CSH.setHelpIDString(JTF_win, "runWindGen_html");

        CSH.setHelpIDString(JLabel2, "runCliGen_html");
        CSH.setHelpIDString(JTF_cli, "runCliGen_html");

        CSH.setHelpIDString(JLabel3, "runWepsModel_html");
        CSH.setHelpIDString(JTF_weps, "runWepsModel_html");

        CSH.setHelpIDString(JTA_status, "runStatusBar_html");
        CSH.setHelpIDString(JPB_weps, "runProgressBar_html");
        CSH.setHelpIDString(JB_can, "runCancelButton_html");

        CSH.setHelpIDString(this, "runDialog_html");
    }

    /**
     * Sets max number of years for JProgressBar
     *
     * @param totstr
     */
    public void setTotalYears(String totstr) {
        try {
            JPB_weps.setMaximum(Integer.parseInt(totstr));
        } catch (java.lang.NumberFormatException e) {
            //System.err.println("RP: can't parse total years string " + e);
        }
    }

    /**
     * Sets current year from weps.exe
     *
     * @param cur year number
     */
    public void setCurrentYear(int cur) {
        JPB_weps.setValue(cur);
    }

    /**
     * Kills current weps.exe run
     *
     * @param event
     */
    @Override
    public void JBCan_actionPerformed(java.awt.event.ActionEvent event) {
//        stopFlag = true;
        firePropertyChange(propChangeCmdStrWepsRunDlgClosed, true, null);
        this.dispose();
    }

    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        Object o;
        if ( (o = evt.getNewValue()) != null) {
            int i;
            switch (evt.getPropertyName()) {
                // property change commands from WepsRunControl
                case propChangeCmdDlgBkgndWriteWindMsg:
                    JTF_win.setText((String) o);
                    break;
                case propChangeCmdDlgBkgndWriteCliMsg:
                    JTF_cli.setText((String) o);
                    break;
                case propChangeCmdDlgBkgndWriteWepsMsg:
                    JTF_weps.setText((String) o);
                    break;
                case propChangeCmdDlgBkgndWriteStatusMsg:
                    JTA_status.setText((String) o);
                    break;
                case propChangeCmdDlgBkgndWritePbarTotalMsg:
                    i = (o instanceof Integer) ? (Integer)o : 1;
                    i = (i < 1) ? 1 : i;
                    JPB_weps.setMaximum(i);
                    break;
                case propChangeCmdDlgBkgndWritePbarCurMsg:
                    i = (o instanceof Integer) ? (Integer)o : 0;
                    JPB_weps.setValue(i);
                    break;
                case propChangeCmdDlgBkgndWriteCancelEnabledMsg:
                    JB_can.setEnabled((Boolean)o);
                    break;
            }
        }
    }
    
}
