[longomatch] Support multiple selection modes in the teams tagger



commit 932be5f05a0c98ac6815f1c5ac4cd379c09184e4
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Tue Sep 2 11:38:35 2014 +0200

    Support multiple selection modes in the teams tagger

 .../CanvasObjects/PlayersTaggerObject.cs           |   32 ++++++++++++++++----
 LongoMatch.Drawing/Widgets/TeamTagger.cs           |   14 ++++++++-
 2 files changed, 39 insertions(+), 7 deletions(-)
---
diff --git a/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs 
b/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
index 57fc23e..ac5a6fa 100644
--- a/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
@@ -96,6 +96,11 @@ namespace LongoMatch.Drawing.CanvasObjects
                        set;
                }
 
+               public MultiSelectionMode SelectionMode {
+                       set;
+                       get;
+               }
+               
                public bool Compact {
                        get;
                        set;
@@ -128,7 +133,18 @@ namespace LongoMatch.Drawing.CanvasObjects
                        field.Update ();
                }
                
-               public void Select (Player player)
+               public void Select (List<Player> players)
+               {
+                       ResetSelection ();
+                       foreach (Player p in players) {
+                               Select (p, true);
+                       }
+                       if (PlayersSelectionChangedEvent != null) {
+                               PlayersSelectionChangedEvent (SelectedPlayers);
+                       }
+               }
+
+               public void Select (Player player, bool silent=false)
                {
                        PlayerObject po;
 
@@ -137,10 +153,12 @@ namespace LongoMatch.Drawing.CanvasObjects
                                po = awayPlayers.FirstOrDefault (p => p.Player == player);
                        }
                        if (po != null) {
-                               ResetSelection ();
+                               if (!silent) {
+                                       ResetSelection ();
+                               }
                                SelectedPlayers.Add (player);
                                po.Active = true;
-                               if (PlayersSelectionChangedEvent != null) {
+                               if (!silent && PlayersSelectionChangedEvent != null) {
                                        PlayersSelectionChangedEvent (SelectedPlayers);
                                }
                        }
@@ -426,9 +444,11 @@ namespace LongoMatch.Drawing.CanvasObjects
                public override void ClickPressed (Point point, ButtonModifier modif)
                {
                        Selection selection = null;
-                       
-                       if (modif == ButtonModifier.None && !SubstitutionMode) {
-                               ResetSelection ();
+
+                       if (!SubstitutionMode && SelectionMode != MultiSelectionMode.Multiple) {
+                               if (SelectionMode == MultiSelectionMode.Single || modif == 
ButtonModifier.None) {
+                                       ResetSelection ();
+                               }
                        }
                        
                        point = Utils.ToUserCoords (point, offset, scaleX, scaleY);
diff --git a/LongoMatch.Drawing/Widgets/TeamTagger.cs b/LongoMatch.Drawing/Widgets/TeamTagger.cs
index 1b0be8e..b7aff43 100644
--- a/LongoMatch.Drawing/Widgets/TeamTagger.cs
+++ b/LongoMatch.Drawing/Widgets/TeamTagger.cs
@@ -41,9 +41,9 @@ namespace LongoMatch.Drawing.Widgets
                public TeamTagger (IWidget widget): base (widget)
                {
                        Accuracy = 0;
-                       SelectionMode = MultiSelectionMode.MultipleWithModifier;
                        widget.SizeChangedEvent += HandleSizeChangedEvent;
                        tagger = new PlayersTaggerObject ();
+                       tagger.SelectionMode = MultiSelectionMode.Single;
                        tagger.PlayersSubstitutionEvent += HandlePlayersSubstitutionEvent;
                        tagger.PlayersSelectionChangedEvent += HandlePlayersSelectionChangedEvent;
                        ObjectsCanMove = false;
@@ -80,6 +80,18 @@ namespace LongoMatch.Drawing.Widgets
                        }
                }
 
+               public new MultiSelectionMode SelectionMode {
+                       set {
+                               tagger.SelectionMode = value;
+                       }
+               }
+
+               public void Select (List<Player> players)
+               {
+                       tagger.Select (players);
+                       widget.ReDraw ();
+               }
+               
                public void Select (Player p)
                {
                        tagger.Select (p);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]