import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.util.*;

public class SaveLinkDialog extends Dialog implements ActionListener {
    Button okButton = new Button("OK"), cancelButton = new Button("Cancel");
    boolean okClicked = false;
    Checkbox geomCheckbox = new Checkbox();
    Checkbox psColorCheckbox = new Checkbox();
    Checkbox psGSCheckbox = new Checkbox();
    Checkbox psBWCheckbox = new Checkbox();
    Checkbox jenkinsCheckbox = new Checkbox();
    TextField nameRootTF = new TextField(20);
    boolean geomChecked = false, psColorChecked = false, psGSChecked = false, psBWChecked = false, jenkinsChecked = false;
    String nameRoot = null;

    public Panel makeSaveLinkPanel() {
        Panel p = new Panel();
        p.setLayout(new BorderLayout());
        Panel saveLinkPanel = new Panel();
        saveLinkPanel.setLayout(new BorderLayout());
        Panel inputPanel = new Panel();
        inputPanel.setLayout(new BorderLayout());
        Panel selectionPanel = new Panel();
        selectionPanel.setLayout(new GridLayout(5, 2));
        selectionPanel.add(new Label("Geometric Code"));
        selectionPanel.add(geomCheckbox);
        selectionPanel.add(new Label("PS Color Code"));
        selectionPanel.add(psColorCheckbox);
        selectionPanel.add(new Label("PS GreyScale Code"));
        selectionPanel.add(psGSCheckbox);
        selectionPanel.add(new Label("PS BW Code"));
        selectionPanel.add(psBWCheckbox);
        selectionPanel.add(new Label("Jenkins Code"));
        selectionPanel.add(jenkinsCheckbox);
        inputPanel.add(selectionPanel, "North");
        Panel nameRootPanel = new Panel();
        nameRootPanel.setLayout(new FlowLayout());
        nameRootPanel.add(new Label("Name Root"));
        nameRootPanel.add(nameRootTF);
        inputPanel.add(nameRootPanel, "Center");
        Panel okCancelPanel = new Panel();
        okCancelPanel.setLayout(new GridLayout(1,2));
        okCancelPanel.add(okButton);
        okCancelPanel.add(cancelButton);
        inputPanel.add(okCancelPanel, "South");
        saveLinkPanel.add(inputPanel, "Center");
        return saveLinkPanel;
    }

    public SaveLinkDialog(Frame f, int x, int y) {
        super(f, true); // dialog is modal
        setTitle("Save Series");
        setLayout(new BorderLayout());
        add(makeSaveLinkPanel(), "Center");

        okButton.addActionListener(this);
        cancelButton.addActionListener(this);

        pack();
        setLocation(x, y);
        setVisible(true);

    }

    public void actionPerformed(ActionEvent evt) {
        if (evt.getSource() == okButton) {
            System.out.println("ok clicked");
            okClicked = true;
            geomChecked = geomCheckbox.getState();
            psColorChecked = psColorCheckbox.getState();
            psGSChecked = psGSCheckbox.getState();
            psBWChecked = psBWCheckbox.getState();
            jenkinsChecked = jenkinsCheckbox.getState();
            nameRoot = nameRootTF.getText();
        }
        dispose();
    }

    public boolean geomChosen() {
        return geomChecked;
    }

    public boolean psColorChosen() {
        return psColorChecked;
    }

    public boolean psGSChosen() {
        return psGSChecked;
    }

    public boolean psBWChosen() {
        return psBWChecked;
    }

    public boolean jenkinsChosen() {
        return jenkinsChecked;
    }

    public String getNameRoot() {
        return nameRoot;
    }

    public boolean okayed() {
        return okClicked;
    }

    public boolean cancelled() {
        return !okClicked;
    }

    public static void main(String[] args) {
        Frame f = new Frame("SaveLinkDialog Test");
        f.setSize(800, 600);
        f.setVisible(true);
        SaveLinkDialog saveLinkDlg = new SaveLinkDialog(f, 200, 150);
        if (saveLinkDlg.okayed()) {
            if (saveLinkDlg.geomChosen()) System.out.print("geom ");
            if (saveLinkDlg.psColorChosen()) System.out.print("PS-Color ");
            if (saveLinkDlg.psGSChosen()) System.out.print("PS-GreyScale ");
            if (saveLinkDlg.psBWChosen()) System.out.print("PS-BW ");
            if (saveLinkDlg.jenkinsChosen()) System.out.print("jenkins ");
            System.out.println(saveLinkDlg.getNameRoot());
        }
        else {
            System.out.println("Cancelled");
        }
        System.exit(0);
    }

} 