Skip to content

Commit

Permalink
gitextensions#5125 Tooltips for lanes of graph in RevisionGrid
Browse files Browse the repository at this point in the history
  • Loading branch information
mstv authored and drewnoakes committed Jul 9, 2018
1 parent 83e1204 commit 060de8b
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public override void OnCellFormatting(DataGridViewCellFormattingEventArgs e, Git
e.FormattingApplied = true;
}

public override bool TryGetToolTip(GitRevision revision, out string toolTip)
public override bool TryGetToolTip(DataGridViewCellMouseEventArgs e, GitRevision revision, out string toolTip)
{
if (revision.ObjectId?.IsArtificial == true)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,15 +158,15 @@ public override void OnCellFormatting(DataGridViewCellFormattingEventArgs e, Git
e.FormattingApplied = true;
}

public override bool TryGetToolTip(GitRevision revision, out string toolTip)
public override bool TryGetToolTip(DataGridViewCellMouseEventArgs e, GitRevision revision, out string toolTip)
{
if (revision.BuildStatus != null)
{
toolTip = revision.BuildStatus.Description;
return true;
}

return base.TryGetToolTip(revision, out toolTip);
return base.TryGetToolTip(e, revision, out toolTip);
}
}
}
2 changes: 1 addition & 1 deletion GitUI/UserControls/RevisionGrid/Columns/ColumnProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public virtual void OnCellFormatting(DataGridViewCellFormattingEventArgs e, GitR
/// <remarks>Returning <c>false</c> here will not stop a tool tip being automatically displayed for truncated text.</remarks>
[ContractAnnotation("=>false,toolTip:null")]
[ContractAnnotation("=>true,toolTip:notnull")]
public virtual bool TryGetToolTip(GitRevision revision, [CanBeNull] out string toolTip)
public virtual bool TryGetToolTip(DataGridViewCellMouseEventArgs e, GitRevision revision, [CanBeNull] out string toolTip)
{
toolTip = default;
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public override void OnCellPainting(DataGridViewCellPaintingEventArgs e, GitRevi
}
}

public override bool TryGetToolTip(GitRevision revision, out string toolTip)
public override bool TryGetToolTip(DataGridViewCellMouseEventArgs e, GitRevision revision, out string toolTip)
{
if (revision.ObjectId?.IsArtificial == true)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ string FormatDate(DateTime dt)
}
}

public override bool TryGetToolTip(GitRevision revision, out string toolTip)
public override bool TryGetToolTip(DataGridViewCellMouseEventArgs e, GitRevision revision, out string toolTip)
{
if (revision.ObjectId?.IsArtificial == true)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ public override void Refresh()
!_grid.ShouldHideGraph(inclBranchFilter: false);
}

public override bool TryGetToolTip(GitRevision revision, out string toolTip)
public override bool TryGetToolTip(DataGridViewCellMouseEventArgs e, GitRevision revision, out string toolTip)
{
if (!revision.IsArtificial)
{
toolTip = revision.Guid;
toolTip = _gridView.GetLaneInfo(e.X - ColumnLeftMargin, e.RowIndex);
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,15 +209,15 @@ public override void OnCellFormatting(DataGridViewCellFormattingEventArgs e, Git
e.FormattingApplied = true;
}

public override bool TryGetToolTip(GitRevision revision, out string toolTip)
public override bool TryGetToolTip(DataGridViewCellMouseEventArgs e, GitRevision revision, out string toolTip)
{
if (!revision.IsArtificial && revision.HasMultiLineMessage)
{
toolTip = revision.Body ?? revision.Subject + "\n\nFull message text is not present in older commits.\nSelect this commit to populate the full message.";
return true;
}

return base.TryGetToolTip(revision, out toolTip);
return base.TryGetToolTip(e, revision, out toolTip);
}
}
}
52 changes: 52 additions & 0 deletions GitUI/UserControls/RevisionGrid/RevisionDataGridView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,58 @@ public GitRevision GetRevision(int rowIndex)
}
}

public string GetLaneInfo(int x, int rowIndex)
{
int lane = x / _laneWidth;
var laneInfoText = new System.Text.StringBuilder();
lock (_graphModel)
{
Graph.ILaneRow laneRow = _graphModel[rowIndex];
if (laneRow != null)
{
Node node = null;
if (lane == laneRow.NodeLane)
{
node = laneRow.Node;
if (!node.Data.IsArtificial)
{
laneInfoText.AppendLine(node.Data.Guid);
}
}
else if (lane >= 0 && lane < laneRow.Count)
{
for (int laneInfoIndex = 0, laneInfoCount = laneRow.LaneInfoCount(lane); laneInfoIndex < laneInfoCount; ++laneInfoIndex)
{
// search for next node below this row
Graph.LaneInfo laneInfo = laneRow[lane, laneInfoIndex];
Junction firstJunction = laneInfo.Junctions.First();
for (int nodeIndex = 0, nodeCount = firstJunction.NodeCount; nodeIndex < nodeCount; ++nodeIndex)
{
Node laneNode = firstJunction[nodeIndex];
if (laneNode.Index > rowIndex)
{
node = laneNode;
break; // from for (nodes)
}
}
}
}

if (node != null)
{
if (laneInfoText.Length > 0)
{
laneInfoText.AppendLine();
}

laneInfoText.Append(node.Data.Subject);
}
}
}

return laneInfoText.ToString();
}

public void Prune()
{
lock (_graphModel)
Expand Down
2 changes: 1 addition & 1 deletion GitUI/UserControls/RevisionGrid/RevisionGridControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ public RevisionGridControl()
_gridView.MouseDoubleClick += OnGridViewDoubleClick;
_gridView.MouseClick += OnGridViewMouseClick;
_gridView.MouseEnter += (_, e) => _toolTipProvider.OnCellMouseEnter();
_gridView.CellMouseMove += (_, e) => _toolTipProvider.OnCellMouseMove(e.ColumnIndex, e.RowIndex);
_gridView.CellMouseMove += (_, e) => _toolTipProvider.OnCellMouseMove(e);
_gridView.Loading += OnGridViewLoading;

// Allow to drop patch file on revision grid
Expand Down
12 changes: 6 additions & 6 deletions GitUI/UserControls/RevisionGrid/RevisionGridToolTipProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ public void OnCellMouseEnter()
_toolTip.AutoPopDelay = 32767;
}

public void OnCellMouseMove(int columnIndex, int rowIndex)
public void OnCellMouseMove(DataGridViewCellMouseEventArgs e)
{
var revision = _gridView.GetRevision(rowIndex);
var revision = _gridView.GetRevision(e.RowIndex);

if (revision == null)
{
Expand All @@ -49,17 +49,17 @@ public void OnCellMouseMove(int columnIndex, int rowIndex)

string GetToolTipText()
{
if (_gridView.Columns[columnIndex].Tag is ColumnProvider provider &&
provider.TryGetToolTip(revision, out var toolTip) &&
if (_gridView.Columns[e.ColumnIndex].Tag is ColumnProvider provider &&
provider.TryGetToolTip(e, revision, out var toolTip) &&
!string.IsNullOrWhiteSpace(toolTip))
{
return toolTip;
}

if (_isTruncatedByCellPos.TryGetValue(new Point(columnIndex, rowIndex), out var showToolTip)
if (_isTruncatedByCellPos.TryGetValue(new Point(e.ColumnIndex, e.RowIndex), out var showToolTip)
&& showToolTip)
{
return _gridView.Rows[rowIndex].Cells[columnIndex].FormattedValue?.ToString() ?? "";
return _gridView.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue?.ToString() ?? "";
}

// no tooltip unless always active or truncated
Expand Down

0 comments on commit 060de8b

Please sign in to comment.