/*
 * JFrame_1.java
 *
 * Created on October 7, 2003, 10:48 PM
 */

/**
 *
 * @author  dhindman
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class BonusDraws extends JFrame {
    
    private int HEIGHT=427, WIDTH=552;
    private JTextField NBDnumber;
    private JTextField NumBonusDraws;
    private JComboBox MissionCombo;
    private JButton Done;
    private JButton DrawCards;
    private JTextArea Attempts;
    private JPanel MainPanel;
    private Container content;
    private int drawsleft;
    private Vector MissionGroups;
    private MissionGroup currgroup;

    public BonusDraws(Vector MGs) {
        
        if(MGs==null || MGs.size()==0)
        {
            exitForm(null);
            return;
        }
        MissionGroups=MGs;
        int i;
        for(i=0;i<MissionGroups.size();i++)
            ((MissionGroup)(MissionGroups.elementAt(i))).CalcBonusDraws();
        for(i=0;i<MissionGroups.size();i++)
            if(((MissionGroup)(MissionGroups.elementAt(i))).getBonusDraws()!=0 &&
                !((MissionGroup)(MissionGroups.elementAt(i))).missionover)
                break;
        if(i==MissionGroups.size())
            return;
        
        MainPanel = new JPanel();
        MissionCombo = new JComboBox();
        NumBonusDraws = new JTextField();
        NBDnumber = new JTextField();
        DrawCards = new JButton();
        Attempts = new JTextArea();
        Done = new JButton();
        content=getContentPane();

        content.setLayout(null);
        setSize(WIDTH, HEIGHT);
        String title="Bonus Draws - ";
        title=title.concat(((MissionGroup)(MissionGroups.elementAt(i))).getEnviron().getPlanet().getName());
        title=title.concat(": ");
        title=title.concat(((MissionGroup)(MissionGroups.elementAt(i))).getEnviron().getStringType());
        setTitle(title);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        MainPanel.setLayout(null);

        MainPanel.setForeground(Color.white);
        MainPanel.setBackground(Color.black);
        MissionCombo.setModel(new DefaultComboBoxModel(new String[] { "D-Diplomacy" }));
        MissionCombo.setForeground(Color.white);
        MissionCombo.setBackground(Color.black);
        MissionCombo.setBorder(new javax.swing.border.TitledBorder(null, "Select Mission", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 12), java.awt.Color.white));
        MainPanel.add(MissionCombo);
        MissionCombo.setBounds(10, 10, 160, 50);
        MissionCombo.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                MissionComboActionPerformed(evt);
            }
        });

        NumBonusDraws.setForeground(Color.white);
        NumBonusDraws.setFont(new Font("Dialog", 1, 12));
        NumBonusDraws.setText(" Number of Bonus Draws:");
        NumBonusDraws.setBackground(Color.black);
        NumBonusDraws.setBorder(null);
        MainPanel.add(NumBonusDraws);
        NumBonusDraws.setBounds(180, 20, 180, 30);
        NumBonusDraws.setEditable(false);
        

        NBDnumber.setForeground(Color.white);
        NBDnumber.setFont(new Font("Dialog", 0, 18));
        NBDnumber.setBackground(Color.black);
        NBDnumber.setBorder(null);
        MainPanel.add(NBDnumber);
        NBDnumber.setBounds(370, 20, 80, 30);
        NBDnumber.setEditable(false);

        DrawCards.setForeground(Color.white);
        DrawCards.setText("Draw Cards");
        DrawCards.setBackground(Color.black);
        DrawCards.setBorder(new javax.swing.border.LineBorder(Color.white));
        MainPanel.add(DrawCards);
        DrawCards.setBounds(360, 120, 150, 30);
        DrawCards.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                DrawCardsActionPerformed(evt);
            }
        });

        Attempts.setForeground(Color.white);
        Attempts.setBackground(Color.black);
        Attempts.setBorder(new javax.swing.border.TitledBorder(null, "Attempts", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 12), Color.white));
        MainPanel.add(Attempts);
        Attempts.setBounds(10, 100, 310, 190);
        Attempts.setEditable(false);

        Done.setForeground(Color.white);
        Done.setText("Quit Bonus Draws");
        Done.setBackground(java.awt.Color.black);
        Done.setBorder(new javax.swing.border.LineBorder(Color.white));
        MainPanel.add(Done);
        Done.setBounds(360, 210, 150, 40);
        Done.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                DoneActionPerformed(evt);
            }
        });

        content.add(MainPanel);
        MainPanel.setBounds(0, 0, 544, 387);
        
        Vector missions=new Vector();
        missions.add("Choose");
        for(i=0;i<MissionGroups.size();i++)
        {
            missions.add(((MissionGroup)(MissionGroups.elementAt(i)))
                .getMissionString());
        }
        MissionCombo.setModel(new DefaultComboBoxModel(missions));
        MissionCombo.setSelectedIndex(0);

        setVisible(true);

    }
    
    public void MissionComboActionPerformed(ActionEvent evt)
    {
        if(MissionCombo.getSelectedIndex()==0)
            return;
        currgroup=(MissionGroup)(MissionGroups.elementAt(MissionCombo.getSelectedIndex()-1));
        int BD=currgroup.getBonusDraws();
        char BDc;
        String bd=new String();
        String bdtemp=new String();
        while(BD>0)
        {
            BDc=(char)(BD%10+'0');
            BD/=10;
            bdtemp=bdtemp+BDc;
        }
        while(bdtemp.length()>0)
        {
            bd=bd+bdtemp.charAt(bdtemp.length()-1);
            bdtemp=bdtemp.substring(0, bd.length()-1);
        }
        NBDnumber.setText(bd);
    }
    
    public void DoneActionPerformed(ActionEvent evt)
    {
        this.dispose();
    }
    
    public void DrawCardsActionPerformed(ActionEvent evt)
    {
        if(currgroup==null)
            return;
        MissionCard drawn;
        int numsucceeded=currgroup.getnumsucceeded();
        for(int i=0;i<currgroup.getBonusDraws() && !currgroup.missionover;i++)
        {
            Attempts.append(("Attempt ")+(i+1));
            Attempts.append(": ");
            drawn=MissionCard.Draw();
            switch(currgroup.getEnviron().getType())
            {
                case 'u':
                case 'U':
                    currgroup.SucceedMission(drawn.urban_succeed);
                    break;
                case 'w':
                case 'W':
                    currgroup.SucceedMission(drawn.wild_succeed);
                    break;
                default:
                    currgroup.SucceedMission(drawn.special_succeed);
            }
            if(numsucceeded!=currgroup.getnumsucceeded())
            {
                Attempts.append(currgroup.getMissionString());
                Attempts.append(" Succeeded!\n");
            }
            else
                Attempts.append("Attempt Failed.\n");
        }
        if(currgroup.getnumsucceeded()==0)
            currgroup.FailMission();
        currgroup.missionover=true;
        DrawCards.setVisible(false);
        MissionCard.shuffle();
        
    }
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        this.dispose();
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        BonusDraws BD=new BonusDraws(null);
    }
}
