private void btnTransform_Click(object sender, EventArgs e)
        {
            if (_transforming)
            {
                MessageBox.Show("Polygons are currently being transformed. Try again in a moment.");
                return;
            }

            if (TwoTrails.Engine.Values.AdjustingPolygons)
            {
                MessageBox.Show("Polygons are currently being saved. Try again in a moment.");
                return;
            }

            if (!CheckControls())
                return;

            /*
            foreach (TtPoint p in _AdjPoints)
            {
                if (!p.IsGpsType())
                {
                    if (MessageBox.Show("The Adjusting Polygon has non GPS type points in it. You will need to make a copy of the polygon in order to transform it. Do you want to Copy and Transform now?",
                        "", MessageBoxButtons.UnAdjYesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                    {
                        makeCopy = true;
                    }
                    else
                        return;
                    break;
                }
            }
            */

            TtPolygon newPoly = new TtPolygon();
            TtPolygon transPoly = cboTransAdjPoly.SelectedItem as TtPolygon;

            string polyName = String.Format("{0} (Transformed)", transPoly.Name);

            bool renaming = true;
            int inc = 2;
            while (renaming)
            {
                renaming = false;
                foreach (TtPolygon poly in dal.GetPolygons())
                {
                    if (poly.Name.Equals(polyName, StringComparison.InvariantCultureIgnoreCase))
                    {
                        polyName = String.Format("{0} (Transformed {1})", transPoly.Name, inc);
                        inc++;
                        renaming = true;
                        break;
                    }
                }
            }

            newPoly.Name = polyName;
            newPoly.PointStartIndex = (int)(dal.GetPolyCount() + 1010);

            _TransformedPoints = new List<GpsPoint>();
            int index = 0;
            GpsPoint tmpPoint;

            foreach (GpsPoint p in _AdjPoints)
            {
                if (p.IsGpsType())
                {
                    tmpPoint = TtUtils.ClonePoint(p) as GpsPoint;
                    tmpPoint.Index = index;
                    tmpPoint.PolyCN = newPoly.CN;
                    tmpPoint.PolyName = newPoly.Name;
                    index++;
                    _TransformedPoints.Add(tmpPoint);
                }
            }

            TransformDelegate del = new TransformDelegate(DoTransform);
            del.BeginInvoke(null, null);

            dal.InsertPolygon(newPoly);
        }