Пример #1
0
        private void StartDrawingPolygon(object sender, EventArgs e)
        {
            DetachInputHandlerEventsFromDrawingArea();

            IPolygon polygonUnderCreation = new Polygon(new List <Vertice>(), new List <Edge>());

            polygonUnderCreation.AddVertice(new Vertice(), null, null);
            polygons.Add(polygonUnderCreation);

            inputHandler = new InputHandlerForPolygonCreation
            {
                OnSuccessfullElementMove = drawingArea.Refresh,
                OnVerticeAdd             = drawingArea.Refresh,
                OnFinishedDrawing        = StopDrawingPolygon,
                PolygonUnderCreation     = polygonUnderCreation
            };

            AttachInputHandlerEventsToDrawingArea();

            UpdateButtons();
            foreach (var button in CreateGroupBox.FindAllChildrenByType <Button>())
            {
                button.Enabled = false;
            }
            StopDrawingButton.Enabled = true;
            drawingArea.Refresh();
            FakeButton.Focus();
        }
Пример #2
0
 private void DeleteSelectedPolygon(object sender, EventArgs e)
 {
     if (inputHandler.SelectedPolygon != null)
     {
         polygons.Remove(inputHandler.SelectedPolygon);
         inputHandler.ClearSelected();
         FakeButton.Focus();
         drawingArea.Refresh();
     }
 }
Пример #3
0
 private void SplitSelectedEdge(object sender, EventArgs e)
 {
     if (inputHandler.SelectedElement is Edge selectedEdge)
     {
         inputHandler.SelectedPolygon.SplitEdge(selectedEdge);
         inputHandler.ClearSelected();
         drawingArea.Refresh();
     }
     FakeButton.Focus();
 }
Пример #4
0
 private void ChangeCurrentPolygonToConvexHull(object sender, EventArgs e)
 {
     if (inputHandler.SelectedPolygon != null)
     {
         IPolygon polygonToChange = inputHandler.SelectedPolygon;
         IPolygon convexHull      = ConvexHullOfPolygon.GetConvexHull(polygonToChange);
         if (convexHull != null)
         {
             polygons.Remove(polygonToChange);
             polygons.Add(convexHull);
         }
         inputHandler.ClearSelected();
         drawingArea.Refresh();
     }
     FakeButton.Focus();
 }
Пример #5
0
 private void DeleteSelectedVertice(object sender, EventArgs e)
 {
     if (inputHandler.SelectedElement is Vertice v)
     {
         if (inputHandler.SelectedPolygon.DeleteVertice(v))
         {
             inputHandler.ClearSelected();
             drawingArea.Refresh();
         }
         else
         {
             InformationDialog.Show(ErrorMessages.CanNotDeleteVertice);
         }
     }
     FakeButton.Focus();
 }
Пример #6
0
        private void StopDrawingPolygon()
        {
            FakeButton.Focus();
            IPolygon polygonUnderCreation = polygons.Last();

            if (polygonUnderCreation.Vertices.Count <= 3)
            {
                InformationDialog.Show(ErrorMessages.PolygonMustHaveAtLeastThreeVertices);
                return;
            }

            DetachInputHandlerEventsFromDrawingArea();

            polygonUnderCreation.DeleteVertice(polygonUnderCreation.Vertices.Last());
            polygonUnderCreation.CreateEdgeBetweenVertices(polygonUnderCreation.Vertices.First(), polygonUnderCreation.Vertices.Last());

            inputHandler = GetStandardInputHandler();
            AttachInputHandlerEventsToDrawingArea();

            UpdateButtons();
            drawingArea.Refresh();
        }
Пример #7
0
 private void ChangeSelectedEdgeToVertical(object sender, EventArgs e)
 {
     HandleSimpleEdgeTypeChange(EdgeType.Vertical, -1, string.Format(ErrorMessages.CanNotChangeEdgeType, EdgeType.Vertical.Name));
     FakeButton.Focus();
 }
Пример #8
0
 private void CreateCustomPolygon(object sender, EventArgs e)
 {
     polygons.Add(PolygonCreator.GetCustom());
     FakeButton.Focus();
     drawingArea.Refresh();
 }
Пример #9
0
 private void CreateRectangle(object sender, EventArgs e)
 {
     polygons.Add(PolygonCreator.GetSampleRectangle());
     FakeButton.Focus();
     drawingArea.Refresh();
 }
Пример #10
0
 private void ChangeSelectedEdgeLength(object sender, EventArgs e)
 {
     HandleChangingEdgeLengthOrTypeToFixedLenght(string.Format(ErrorMessages.CanNotChangeEdgeLenght, EdgeType.FixedLength.Name));
     FakeButton.Focus();
 }
Пример #11
0
 private void RemoveConstraintsFromSelectedEdge(object sender, EventArgs e)
 {
     HandleSimpleEdgeTypeChange(EdgeType.Normal, -1, string.Format(ErrorMessages.CanNotChangeEdgeType, EdgeType.Normal.Name));
     FakeButton.Focus();
 }