Skip to content

Commit

Permalink
Implemented strategy pattern
Browse files Browse the repository at this point in the history
  • Loading branch information
dannypas00 committed Jun 2, 2020
1 parent dd63858 commit 6bc1717
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 17 deletions.
4 changes: 0 additions & 4 deletions DrawingApp/DrawingApp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,4 @@
</Resource>
</ItemGroup>

<ItemGroup>
<Folder Include="StrategyPattern\" />
</ItemGroup>

</Project>
28 changes: 15 additions & 13 deletions DrawingApp/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using System.Windows.Input;
using System.Windows.Shapes;
using DrawingApp.CompositePattern;
using DrawingApp.StrategyPattern;

namespace DrawingApp
{
Expand All @@ -18,9 +19,10 @@ public partial class MainWindow : Window
public string CurrentAction = "select";
private readonly Group file;
public bool HasUpdatedGroups;
private Point initialPosition;
public Point InitialPosition;
private readonly CommandInvoker invoker;
private bool mouseButtonHeld;
private IStrategy strategy;
public CanvasShape Selected;

public MainWindow()
Expand All @@ -39,22 +41,14 @@ private void Canvas_MouseDown(object sender, MouseButtonEventArgs e)
HasUpdatedGroups = true;
}

foreach (var b in new List<Button>() { ClearButton, ellipse, SaveButton, AddGroup, rectangle, LoadButton, UndoButton, RedoButton, ClearButton }.Where(b => b != null))
/*foreach (var b in new List<Button>() { ClearButton, ellipse, SaveButton, AddGroup, rectangle, LoadButton, UndoButton, RedoButton, ClearButton }.Where(b => b != null))
{
b.Background = CommandInvoker.RandomColor();
}
}*/

mouseButtonHeld = true;
initialPosition = e.GetPosition(canvas);
switch (CurrentAction)
{
case "rectangle":
invoker.StartDraw(initialPosition.X, initialPosition.Y, new Rectangle());
break;
case "ellipse":
invoker.StartDraw(initialPosition.X, initialPosition.Y, new Ellipse());
break;
}
InitialPosition = e.GetPosition(canvas);
strategy.ExecuteStrategy();
}

private void Window_MouseUp(object sender, MouseButtonEventArgs e)
Expand Down Expand Up @@ -114,6 +108,14 @@ private void ShapeButton_Click(object sender, RoutedEventArgs e)
{
Button s = (Button) sender;
CurrentAction = s.Name;
if (CurrentAction == "rectangle")
{
strategy = new RectangleStrategy();
}
else if (CurrentAction == "ellipse")
{
strategy = new EllipseStrategy();
}
Trace.WriteLine("Name: " + CurrentAction);
if (Selected == null) return;
Selected.Unselect();
Expand Down
15 changes: 15 additions & 0 deletions DrawingApp/StrategyPattern/EllipseStrategy.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Shapes;

namespace DrawingApp.StrategyPattern
{
class EllipseStrategy : IStrategy
{
public void ExecuteStrategy()
{
CommandInvoker.GetInstance().StartDraw(CommandInvoker.GetInstance().MainWindow.InitialPosition.X, CommandInvoker.GetInstance().MainWindow.InitialPosition.Y, new Ellipse());
}
}
}
11 changes: 11 additions & 0 deletions DrawingApp/StrategyPattern/IStrategy.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace DrawingApp.StrategyPattern
{
interface IStrategy
{
public void ExecuteStrategy();
}
}
15 changes: 15 additions & 0 deletions DrawingApp/StrategyPattern/RectangleStrategy.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Shapes;

namespace DrawingApp.StrategyPattern
{
class RectangleStrategy : IStrategy
{
public void ExecuteStrategy()
{
CommandInvoker.GetInstance().StartDraw(CommandInvoker.GetInstance().MainWindow.InitialPosition.X, CommandInvoker.GetInstance().MainWindow.InitialPosition.Y, new Rectangle());
}
}
}

0 comments on commit 6bc1717

Please sign in to comment.