Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Munn <gregm@microsoft.com>2019-07-25 21:00:01 +0300
committerGreg Munn <gregm@microsoft.com>2019-07-25 21:00:01 +0300
commit078fddba50e186a770c11090cf9fd099f0493d89 (patch)
treee2021c0dfc9309ae95dcde92f6ddf6432e6aa28e
parent6ee6fc0b3e817df0e6eb0790a5f36a65aa6480c1 (diff)
[ObjectValue] Some more refactoring to invert controller and view communication
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs38
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs25
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueNodeEventArgs.cs16
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs14
4 files changed, 51 insertions, 42 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs
index 69bbc654a2..8fad8a33e3 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs
@@ -367,7 +367,7 @@ namespace MonoDevelop.Debugger
/// <summary>
/// Triggered when the view needs to know if the node can be edited
/// </summary>
- public event EventHandler<ObjectValueCanEditEventArgs> NodeGetCanEdit;
+ public event EventHandler<ObjectValueNodeEventArgs> NodeGetCanEdit;
/// <summary>
/// Triggered when the node's value has been edited by the user
@@ -380,24 +380,29 @@ namespace MonoDevelop.Debugger
public event EventHandler<ObjectValueNodeEventArgs> NodeRemoved;
/// <summary>
- /// Triggered when an expression is added to the tree by the user
+ /// Triggered when the user pins the node
/// </summary>
- public event EventHandler<ObjectValueExpressionEventArgs> ExpressionAdded;
+ public event EventHandler<ObjectValueNodeEventArgs> NodePinned;
/// <summary>
- /// Triggered when an expression is edited by the user
+ /// Triggered when the pinned watch is removed by the user
/// </summary>
- public event EventHandler<ObjectValueExpressionEventArgs> ExpressionEdited;
+ public event EventHandler<EventArgs> NodeUnpinned;
/// <summary>
- /// Triggered when the user pins the node
+ /// Triggered when the visualiser for the node should be shown
/// </summary>
- public event EventHandler<ObjectValueNodeEventArgs> NodePinned;
+ public event EventHandler<ObjectValueNodeEventArgs> NodeShowVisualiser;
/// <summary>
- /// Triggered when the pinned watch is removed by the user
+ /// Triggered when an expression is added to the tree by the user
/// </summary>
- public event EventHandler<EventArgs> NodeUnpinned;
+ public event EventHandler<ObjectValueExpressionEventArgs> ExpressionAdded;
+
+ /// <summary>
+ /// Triggered when an expression is edited by the user
+ /// </summary>
+ public event EventHandler<ObjectValueExpressionEventArgs> ExpressionEdited;
/// <summary>
/// Triggered when the user starts editing a node
@@ -894,9 +899,9 @@ namespace MonoDevelop.Debugger
bool GetCanEditNode(ObjectValueNode node)
{
- var args = new ObjectValueCanEditEventArgs (node);
+ var args = new ObjectValueNodeEventArgs (node);
NodeGetCanEdit?.Invoke (this, args);
- return args.CanEdit;
+ return args.Response is bool b && b;
}
protected override bool OnTestExpandRow (TreeIter iter, TreePath path)
@@ -989,7 +994,7 @@ namespace MonoDevelop.Debugger
ExpressionAdded?.Invoke (this, new ObjectValueExpressionEventArgs (null, args.NewText));
}
} else {
- ExpressionEdited?.Invoke (this, new ObjectValueExpressionEventArgs (null, args.NewText));
+ ExpressionEdited?.Invoke (this, new ObjectValueExpressionEventArgs (node, args.NewText));
}
}
@@ -1032,9 +1037,7 @@ namespace MonoDevelop.Debugger
var val = GetNodeAtIter (iter);
var editArgs = new ObjectValueEditEventArgs (val, args.NewText);
NodeEditValue?.Invoke (this, editArgs);
- if (editArgs.Edited) {
- // update the store
- //store.SetValue (it, ValueColumn, val.GetDisplayValue());
+ if (editArgs.Response is bool b && b) {
SetValues (TreeIter.Zero, iter, null, val);
}
}
@@ -1335,7 +1338,10 @@ namespace MonoDevelop.Debugger
if (cr == crpViewer) {
clickProcessed = true;
var node = GetNodeAtIter (it);
- if (controller.ShowNodeValueVisualizer (node)) {
+
+ var nodeArgs = new ObjectValueNodeEventArgs (node);
+ NodeShowVisualiser?.Invoke (this, nodeArgs);
+ if (nodeArgs.Response is bool b && b) {
SetValues (TreeIter.Zero, it, null, node);
}
} else if (cr == crtExp && !PreviewWindowManager.IsVisible && ValidObjectForPreviewIcon (it)) {
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs
index 57e704b0f1..e249f6ac44 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs
@@ -92,7 +92,7 @@ namespace MonoDevelop.Debugger
/// <summary>
/// Triggered when the view needs to know if the node can be edited
/// </summary>
- event EventHandler<ObjectValueCanEditEventArgs> NodeGetCanEdit;
+ event EventHandler<ObjectValueNodeEventArgs> NodeGetCanEdit;
/// <summary>
/// Triggered when the node's value has been edited by the user
@@ -104,27 +104,32 @@ namespace MonoDevelop.Debugger
/// </summary>
event EventHandler<ObjectValueNodeEventArgs> NodeRemoved;
- //event EventHandler<ObjectValueDisplayEventArgs> NodeGetDisplayText;
+ /// <summary>
+ /// Triggered when the user pins the node
+ /// </summary>
+ event EventHandler<ObjectValueNodeEventArgs> NodePinned;
/// <summary>
- /// Triggered when an expression is added to the tree by the user
+ /// Triggered when the pinned watch is removed by the user
/// </summary>
- event EventHandler<ObjectValueExpressionEventArgs> ExpressionAdded;
+ event EventHandler<EventArgs> NodeUnpinned;
/// <summary>
- /// Triggered when an expression is edited by the user
+ /// Triggered when the visualiser for the node should be shown
/// </summary>
- event EventHandler<ObjectValueExpressionEventArgs> ExpressionEdited;
+ event EventHandler<ObjectValueNodeEventArgs> NodeShowVisualiser;
+
+ //event EventHandler<ObjectValueDisplayEventArgs> NodeGetDisplayText;
/// <summary>
- /// Triggered when the user pins the node
+ /// Triggered when an expression is added to the tree by the user
/// </summary>
- event EventHandler<ObjectValueNodeEventArgs> NodePinned;
+ event EventHandler<ObjectValueExpressionEventArgs> ExpressionAdded;
/// <summary>
- /// Triggered when the pinned watch is removed by the user
+ /// Triggered when an expression is edited by the user
/// </summary>
- event EventHandler<EventArgs> NodeUnpinned;
+ event EventHandler<ObjectValueExpressionEventArgs> ExpressionEdited;
void OnNodeExpanded (ObjectValueNode node);
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueNodeEventArgs.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueNodeEventArgs.cs
index e2982e033e..64951fbd09 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueNodeEventArgs.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueNodeEventArgs.cs
@@ -38,15 +38,11 @@ namespace MonoDevelop.Debugger
public ObjectValueNode Node {
get; private set;
}
- }
-
- public sealed class ObjectValueCanEditEventArgs : ObjectValueNodeEventArgs
- {
- public ObjectValueCanEditEventArgs (ObjectValueNode node) : base (node)
- {
- }
- public bool CanEdit {
+ /// <summary>
+ /// Gets or sets a value indicating a response to the caller of the event
+ /// </summary>
+ public object Response {
get; set;
}
}
@@ -61,10 +57,6 @@ namespace MonoDevelop.Debugger
public string NewValue {
get; private set;
}
-
- public bool Edited {
- get; set;
- }
}
public sealed class ObjectValueDisplayEventArgs : ObjectValueNodeEventArgs
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs
index a6ad7b64f5..31c95a4aa2 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs
@@ -204,6 +204,7 @@ namespace MonoDevelop.Debugger
view.NodeRemoved += OnViewNodeRemoved;
view.NodePinned += OnViewNodePinned;
view.NodeUnpinned += OnViewNodeUnpinned;
+ view.NodeShowVisualiser += OnViewNodeShowVisualiser;
return view;
}
@@ -450,7 +451,7 @@ namespace MonoDevelop.Debugger
return true;
}
- public bool ShowNodeValueVisualizer (ObjectValueNode node)
+ bool ShowNodeValueVisualizer (ObjectValueNode node)
{
if (node != null) {
@@ -554,14 +555,14 @@ namespace MonoDevelop.Debugger
RefreshNode (e.Node);
}
- void OnViewNodeCanEdit (object sender, ObjectValueCanEditEventArgs e)
+ void OnViewNodeCanEdit (object sender, ObjectValueNodeEventArgs e)
{
- e.CanEdit = CanEditObject (e.Node);
+ e.Response = CanEditObject (e.Node);
}
void OnViewNodeEditValue (object sender, ObjectValueEditEventArgs e)
{
- e.Edited = EditNodeValue (e.Node, e.NewValue);
+ e.Response = EditNodeValue (e.Node, e.NewValue);
}
void OnViewNodeRemoved (object sender, ObjectValueNodeEventArgs e)
@@ -569,6 +570,11 @@ namespace MonoDevelop.Debugger
RemoveValue (e.Node);
}
+ void OnViewNodeShowVisualiser (object sender, ObjectValueNodeEventArgs e)
+ {
+ e.Response = ShowNodeValueVisualizer (e.Node);
+ }
+
void OnViewNodePinned (object sender, ObjectValueNodeEventArgs e)
{
CreatePinnedWatch (e.Node.Expression, view.PinnedWatchOffset);