private void populateFields(int id)
        {
            facRow               = factions.getRowByID(id);
            nameText.Text        = facRow["name"].ToString();
            descriptionText.Text = facRow["description"].ToString();
            pdaText.Text         = facRow["PDA_text"].ToString();

            DataRow[] fmRows = factionMatrix.getRowsByID(id);
            for (int i = 0; i < fmRows.Length; i++)
            {
                DataRow dr            = fmRows[i];
                int     fmID          = int.Parse(dr["id"].ToString());
                int     factionID     = id;
                int     feID          = int.Parse(dr["faction_entry_id"].ToString());
                int     baseValue     = int.Parse(dr["base_value"].ToString());
                int     currentValue  = int.Parse(dr["current_value"].ToString());
                int     rf            = int.Parse(dr["reward_faction"].ToString());
                Boolean rewardFaction = Convert.ToBoolean(rf);

                FactionMatrixProps fmp = new FactionMatrixProps();
                fmp.ID             = fmID;
                fmp.FactionID      = id;
                fmp.FactionEntryID = feID;
                fmp.BaseValue      = baseValue;
                fmp.CurrentValue   = currentValue;
                fmp.RewardFaction  = rewardFaction;

                DataRow r = factions.getRowByID(feID);
                listBox1.Items.Add(r["name"].ToString());
                props.Add(r["name"].ToString(), fmp);
            }
        }
        private void propertyGrid1_PropertyValueChanged(object sender, PropertyValueChangedEventArgs e)
        {
            String propName = e.ChangedItem.ToString();

            FactionMatrixProps fmp = (FactionMatrixProps)props[listBox1.SelectedItem.ToString()];
            DataRow            dr  = factionMatrix.getRowByID(fmp.ID);

            if (propName.Contains("BaseValue"))
            {
                dr["base_value"] = fmp.BaseValue;
            }
            else if (propName.Contains("RewardFaction"))
            {
                dr["reward_faction"] = fmp.RewardFaction;
            }
        }
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            DataRow tmp = factions.newRecord();

            object[] newRow = new object[2];
            newRow[0] = tmp["faction_id"].ToString();
            newRow[1] = tmp["name"].ToString();

            int newRowId = int.Parse(tmp["faction_id"].ToString());

            foreach (DataRow r in factions.getFactionTable().Rows)
            {
                int existingRowID = int.Parse(r["faction_id"].ToString());
                if (newRowId != existingRowID)
                {
                    DataRow dr = factionMatrix.newRecord(newRowId, existingRowID);

                    FactionMatrixProps fmp = new FactionMatrixProps();
                    fmp.ID             = int.Parse(dr["id"].ToString());
                    fmp.FactionID      = int.Parse(dr["faction_id"].ToString());
                    fmp.FactionEntryID = int.Parse(dr["faction_entry_id"].ToString());
                    fmp.BaseValue      = int.Parse(dr["base_value"].ToString());
                    fmp.CurrentValue   = int.Parse(dr["current_value"].ToString());
                    fmp.RewardFaction  = bool.Parse(dr["reward_faction"].ToString());

                    listBox1.Items.Clear();
                    props.Clear();
                    listBox1.Items.Add(r["name"].ToString());
                    props.Add(r["name"].ToString(), fmp);
                }
            }

            dataGridView1.Rows.Add(newRow);
            dataGridView1.Rows[dataGridView1.Rows.Count - 1].Selected = true;
            dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0];
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            FactionMatrixProps fmp = (FactionMatrixProps)props[listBox1.SelectedItem.ToString()];

            propertyGrid1.SelectedObject = fmp;
        }
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            DataRow tmp = factions.newRecord();
            object[] newRow = new object[2];
            newRow[0] = tmp["faction_id"].ToString();
            newRow[1] = tmp["name"].ToString();

            int newRowId = int.Parse(tmp["faction_id"].ToString());

            foreach (DataRow r in factions.getFactionTable().Rows)
            {
                int existingRowID = int.Parse(r["faction_id"].ToString());
                if (newRowId != existingRowID)
                {
                    DataRow dr = factionMatrix.newRecord(newRowId, existingRowID);

                    FactionMatrixProps fmp = new FactionMatrixProps();
                    fmp.ID = int.Parse(dr["id"].ToString());
                    fmp.FactionID = int.Parse(dr["faction_id"].ToString());
                    fmp.FactionEntryID = int.Parse(dr["faction_entry_id"].ToString());
                    fmp.BaseValue = int.Parse(dr["base_value"].ToString());
                    fmp.CurrentValue = int.Parse(dr["current_value"].ToString());
                    fmp.RewardFaction = bool.Parse(dr["reward_faction"].ToString());

                    listBox1.Items.Clear();
                    props.Clear();
                    listBox1.Items.Add(r["name"].ToString());
                    props.Add(r["name"].ToString(), fmp);
                }
            }

            dataGridView1.Rows.Add(newRow);
            dataGridView1.Rows[dataGridView1.Rows.Count - 1].Selected = true;
            dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0];
        }
        private void populateFields(int id)
        {
            facRow = factions.getRowByID(id);
            nameText.Text = facRow["name"].ToString();
            descriptionText.Text = facRow["description"].ToString();
            pdaText.Text = facRow["PDA_text"].ToString();

            DataRow[] fmRows = factionMatrix.getRowsByID(id);
            for (int i = 0; i < fmRows.Length; i++)
            {
                DataRow dr = fmRows[i];
                int fmID = int.Parse(dr["id"].ToString());
                int factionID = id;
                int feID = int.Parse(dr["faction_entry_id"].ToString());
                int baseValue = int.Parse(dr["base_value"].ToString());
                int currentValue = int.Parse(dr["current_value"].ToString());
                int rf = int.Parse(dr["reward_faction"].ToString());
                Boolean rewardFaction = Convert.ToBoolean(rf);

                FactionMatrixProps fmp = new FactionMatrixProps();
                fmp.ID = fmID;
                fmp.FactionID = id;
                fmp.FactionEntryID = feID;
                fmp.BaseValue = baseValue;
                fmp.CurrentValue = currentValue;
                fmp.RewardFaction = rewardFaction;

                DataRow r = factions.getRowByID(feID);
                listBox1.Items.Add(r["name"].ToString());
                props.Add(r["name"].ToString(), fmp);
            }
        }