public void selectStage(Stage stage)
 {
     Boolean wasMuted;
     m_parent.setMuteFieldChanges(true, out wasMuted);
     m_stage = stage;
     guiStagesCbo.SelectedItem = m_stage;
     guiDescriptionTxt.Enabled = (stage.getId().CompareTo("0") != 0); // Enabled when stage is not zero
     guiDescriptionTxt.Text = m_stage.getDescription();
     guiCompletionsTbl.Items.Clear();
     if (m_stage.hasCompletions())
     {
         foreach (Completion completion in m_stage.getCompletions())
         {
             ListViewItem item = new ListViewItem(new String[] { completion.getCompletionType().ToString(),
                                                                 completion.getFormattedValue().ToString() });
             guiCompletionsTbl.Items.Add(item);
             item.Tag = completion;
         }
         guiCompletionsTbl.Items[0].Selected = true;
     }
     guiRewardsTbl.Items.Clear();
     if (m_stage.hasRewards())
     {
         foreach (Reward reward in m_stage.getRewards())
         {
             // TODO: Better display of the reward (XP shows 0)
             ListViewItem item = new ListViewItem(new String[] { reward.getRewardType().ToString(),
                                                                 reward.getFormattedValue() });
             guiRewardsTbl.Items.Add(item);
             item.Tag = reward;
         }
         guiRewardsTbl.Items[0].Selected = true;
     }
     m_parent.setMuteFieldChanges(wasMuted, out wasMuted);
 }
        public void addStage(Boolean showDialog)
        {
            Int32 stageId = 0;
            if (guiStagesTbl.Items.Count != 0)
            {
                stageId = Int32.Parse(((Stage)guiStagesTbl.Items[guiStagesTbl.Items.Count - 1].Tag).getId()) + 1;
                // TODO: Inserting a stage within the sequence involves updating all the dependants of the renumbered stage IDs
                /*
                if (guiStagesTbl.SelectedItems.Count == 0)
                {
                    stageId = Int32.Parse(((Stage)guiStagesTbl.Items[guiStagesTbl.Items.Count - 1].Tag).getId()) + 1;
                }
                else
                {
                    stageId = Int32.Parse(((Stage)guiStagesTbl.SelectedItems[0].Tag).getId()) + 1;
                }
                */
            }

            Stage stage = null;
            Boolean addNewStage = true;
            if (showDialog)
            {
                m_dlgStages.setId(stageId);
                m_dlgStages.ShowDialog();
                addNewStage = m_dlgStages.getValues(out stage);
            }
            else
            {
                stage = new Stage();
                stage.setId(stageId.ToString());
            }

            if (addNewStage)
            {
                m_parent.onChanged();
                m_mission.addStage(stage);
                ListViewItem item = new ListViewItem(new String[] { stage.getId(),
                                                                    stage.getDescription() });
                item.Tag = stage;
                guiStagesTbl.Items.Add(item);
                m_parent.onChangedStages();
                item.Selected = true;
            }
        }
        /// <summary>
        /// Validate the entered data and close the dialog
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void onOk(object sender, EventArgs e)
        {
            m_stage = new Stage();
            m_stage.setId(guiIdTxt.Text);
            m_stage.setDescription(guiDescriptionTxt.Text);

            String error;
            m_stage.addValidations(Stage.ValidationType.FromDialog);
            if (Database.DataConfiguration.validate(out error))
            {
                m_madeSelection = true;
                this.Close();
            }
            else
            {
                MessageBox.Show(error);
            }
        }
        public TabStages(FrmMission parent, ListView stageTable)
        {
            InitializeComponent();
            m_parent = parent;
            m_stageTable = stageTable;
            m_mission = null;
            m_stage = null;
            m_dlgRewards = new DlgRewards();
            m_dlgCompletions = new DlgCompletions();
            m_frmTalkTree = new TalkTreeEditor.FrmTalkTree();

            new CommonTools.Gui.TableButtonHandler(guiCompletionsTbl, guiCompletionsAddBtn, guiCompletionsRemoveBtn, guiCompletionsEditBtn, guiCompletionUpBtn, guiCompletionDownBtn);
            guiCompletionUpBtn.Click += new EventHandler(onCompletionReordered);
            guiCompletionDownBtn.Click += new EventHandler(onCompletionReordered);

            new CommonTools.Gui.TableButtonHandler(guiRewardsTbl, guiRewardsAddBtn, guiRewardsRemoveBtn, guiRewardsEditBtn, guiRewardUpBtn, guiRewardDownBtn);
            guiRewardUpBtn.Click += new EventHandler(onRewardReordered);
            guiRewardDownBtn.Click += new EventHandler(onRewardReordered);
        }
 public void onStageSelected(Stage stage)
 {
     Boolean wasMuted;
     setMuteFieldChanges(true, out wasMuted);
     m_tabStages.selectStage(stage);
     setMuteFieldChanges(wasMuted, out wasMuted);
 }
        /// <summary>
        /// Parse the XML Mission nodes
        /// </summary>
        /// <param name="xmlNode">The <Mission></Mission> nodes</param>
        private void fromXML(XmlNode xmlNode)
        {
            String value;
            Int32 intValue;

            Xml.getAttribute(xmlNode, XmlAttributes.ID, true, out value);
            setId(value);

            if (Xml.getAttribute(xmlNode, XmlAttributes.FORFEITABLE, false, out value))
            {
                setForfeitable(value.Equals("1"));
            }

            Xml.getAttribute(xmlNode, XmlAttributes.TIME, true, out intValue);
            setAllowedTime(intValue);

            if (Xml.getAttribute(xmlNode, XmlAttributes.OVERALL, false, out intValue))
            {
                setOverallLevel(intValue);
            }

            foreach (XmlNode missionChild in xmlNode.ChildNodes)
            {
                if (missionChild.Name.Equals(XmlTag.NAME))
                {
                    Xml.getValue(missionChild, true, out value);
                    setName(value);
                }
                else if (missionChild.Name.Equals(XmlTag.SUMMARY))
                {
                    Xml.getValue(missionChild, true, out value);
                    setSummary(value);
                }
                else if (missionChild.Name.Equals(XmlTag.CONDITION))
                {
                    Condition condition = new Condition();
                    condition.fromXml(missionChild);
                    addCondition(condition);
                }
                else if (missionChild.Name.Equals(XmlTag.STAGE))
                {
                    Stage stage = new Stage();
                    stage.fromXml(missionChild);
                    addStage(stage);
                }
                else
                {
                    MessageBox.Show("Unexpected node: " + missionChild.Name + " in the" + XmlTag.MISSION + " tag");
                }
            }

            addValidations();
        }
 public void removeStage(Stage stage)
 {
     if (m_stages != null)
     {
         m_stages.Remove(stage);
     }
 }
 public void addStage(Stage stage)
 {
     if (m_stages == null)
     {
         m_stages = new List<Stage>();
     }
     m_stages.Add(stage);
 }
 public Boolean getValues(out Stage stage)
 {
     stage = m_stage;
     return m_madeSelection;
 }
 public void editStage(Stage stage)
 {
     m_stage = stage;
     //TODO: Display the Stage when not null
 }
 public DlgStages()
 {
     InitializeComponent();
     m_stage = null;
 }