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;
            }
        }