package ex1;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE;

/*
 * Class to display a window where a long text string with multiple lines can be entered.
 * Used for display/edit of Notes fields in WEPS database entries.
 *
 */
class NotesJOptionPane extends JOptionPane {

    private static final long serialVersionUID = 1L;

    public static String showInputDialog(final String title,
            final String message, String origData, boolean allowEdits,
            boolean viewingCrops, String recName) {
        String originalData = origData;
        String data = null;
        boolean canEdit = allowEdits;
        final boolean c_viewingCrops = viewingCrops;
        final String c_recName = recName;

        class GetData extends JDialog implements ActionListener {

            private static final long serialVersionUID = 1L;

            JTextArea ta = new JTextArea(20, 80);
            JScrollPane jsp = new JScrollPane(ta);
            JButton btnOK = new JButton("   OK   ");
            JButton btnCancel = new JButton("Cancel");
            JButton btnPrint = new JButton(" Print ");
            String str = null;

            public GetData(String originalData, boolean allowEdits) {
                setTitle(title);
                if (allowEdits == false) {
                    ta.setEditable(false);
                }

                ta.append(originalData);
                ta.setCaretPosition(0);
                setModal(true);
                getContentPane().setLayout(new BorderLayout());
                setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                setLocation(400, 300);
                getContentPane().add(new JLabel(message), BorderLayout.NORTH);
                getContentPane().add(jsp, BorderLayout.CENTER);
                JPanel jp = new JPanel();
                btnOK.addActionListener(this);
                btnCancel.addActionListener(this);
                btnPrint.addActionListener(this);

                btnOK.setEnabled(allowEdits);

                jp.add(btnOK);
                jp.add(btnCancel);
                jp.add(btnPrint);
                getContentPane().add(jp, BorderLayout.SOUTH);
                jsp.getHorizontalScrollBar().setValue(0);
                jsp.getVerticalScrollBar().setValue(0);
                pack();
                setVisible(true);
            }

            @Override
            public void actionPerformed(ActionEvent ae) {
                if (ae.getSource() == btnOK) {
                    str = ta.getText();
                    dispose();
                } else if (ae.getSource() == btnCancel) {
                    dispose();
                } else if (ae.getSource() == btnPrint) {
                    //printNotes();
                    String type = "";
                    if (c_viewingCrops) {
                        type = "Crop";
                    } else {
                        type = "Operation";
                    }
                    new NotePrinter(type, c_recName).printNotes(ta.getText());

                }

            }

            public String getData() {
                return str;
            }
        }
        data = new GetData(originalData, canEdit).getData();
        return data;
    }
}
