Skip to content

Commit

Permalink
Getting closer...
Browse files Browse the repository at this point in the history
  • Loading branch information
rappen committed Jul 3, 2022
1 parent e72e826 commit 5b8da88
Show file tree
Hide file tree
Showing 9 changed files with 157 additions and 58 deletions.
57 changes: 36 additions & 21 deletions FetchXmlBuilder/Controls/attributeControl.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

71 changes: 48 additions & 23 deletions FetchXmlBuilder/Controls/attributeControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ protected override void PopulateControls()
cmbAttribute.Items.Clear();
aggregate = Node.IsFetchAggregate();
panAggregate.Visible = aggregate;
panLayout.Visible = !aggregate;
grpLayout.Visible = !aggregate;
cmbAggregate.Enabled = aggregate;
chkGroupBy.Enabled = aggregate;
if (!aggregate)
Expand All @@ -50,20 +50,7 @@ protected override void PopulateControls()
}
}

cell = fxb.dockControlBuilder.LayoutXML.GetCell(Node);
if (cell == null)
{
cell = fxb.dockControlBuilder.LayoutXML.AddCell(Node);
}
if (cell != null)
{
chkLayoutVisible.Checked = cell.Width > 0;
trkLayoutWidth.Value = cell.Width;
}
else
{
panLayout.Visible = false;
}
UpdateUIFromCell(fxb.dockControlBuilder?.LayoutXML?.GetCell(Node));
}

protected override ControlValidationResult ValidateControl(Control control)
Expand Down Expand Up @@ -131,13 +118,38 @@ private void helpIcon_Click(object sender, EventArgs e)
private void cmbAttribute_SelectedIndexChanged(object sender, EventArgs e)
{
fxb.ShowMetadata(Metadata());
UpdateCell();
if (IsInitialized)
{
UpdateCellFromUI();
}
}

private void UpdateCell()
internal void UpdateUIFromCell(Cell updatecell)
{
if (updatecell?.Attribute != Node)
{
return;
}
cell = updatecell;
if (cell == null)
{
cell = fxb.dockControlBuilder?.LayoutXML?.AddCell(Node);
}
if (cell != null)
{
chkLayoutVisible.Checked = cell.Width > 0;
trkLayoutWidth.Enabled = chkLayoutVisible.Checked;
trkLayoutWidth.Value = cell.Width;
}
else
{
grpLayout.Visible = false;
}
UpdateCellUI();
}

private void UpdateCellFromUI()
{
trkLayoutWidth.Enabled = chkLayoutVisible.Checked;
lblWidth.Text = $"Width: {trkLayoutWidth.Value}";
if (cell == null)
{
cell = fxb.dockControlBuilder.LayoutXML.AddCell(Node);
Expand All @@ -148,7 +160,15 @@ private void UpdateCell()
cell.Width = chkLayoutVisible.Checked ? trkLayoutWidth.Value : 0;
fxb.dockControlLayoutXml?.UpdateXML(cell.Parent?.ToXML());
}
panLayout.Visible = cell != null;
grpLayout.Visible = cell != null;
trkLayoutWidth.Enabled = chkLayoutVisible.Checked;
UpdateCellUI();
}

private void UpdateCellUI()
{
lblWidth.Text = $"Width: {cell?.Width}";
lblIndex.Text = $"Display Index: {cell?.DisplayIndex}";
}

public override MetadataBase Metadata()
Expand All @@ -167,13 +187,18 @@ public override void Focus()

private void trkLayoutWidth_Scroll(object sender, EventArgs e)
{
UpdateCell();
if (IsInitialized)
{
UpdateCellFromUI();
}
}

private void chkLayoutVisible_CheckedChanged(object sender, EventArgs e)
{
trkLayoutWidth.Value = chkLayoutVisible.Checked ? 100 : 0;
UpdateCell();
if (IsInitialized)
{
UpdateCellFromUI();
}
}
}
}
8 changes: 4 additions & 4 deletions FetchXmlBuilder/Controls/attributeControl.resx
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DwAACw8BkvkDpQAAAMNJREFUKFNjcKzZ/l8ucysYT1259/+BAwcYQFgpGyKGjK0rt/9n0Mzf9j+odef/
DAAACwwBP0AiyAAAAMNJREFUKFNjcKzZ/l8ucysYT1259/+BAwcYQFgpGyKGjK0rt/9n0Mzf9j+odef/
lgV7/m/Yvh+uoW3hHrAYCDvVAhVGbv4PMgSsoWLmbrhCdFwze/d/tpjN/13qdhDWAFPcPH/P/4Z5e/Br
qEZSDOLj1YCuGIRBbC2gWgwN2BQjYxQNhBSDMFzDnn0H/qvmbgUHIzaFa7ft/z9p+V5UJ+3dfwCnySie
9mrY8b9sxm682L8ZGg/ejTv+axdsIwq71e34DwDIiV/OjEilhQAAAABJRU5ErkJggg==
Expand All @@ -130,7 +130,7 @@
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DwAACw8BkvkDpQAAAMNJREFUKFNjcKzZ/l8ucysYT1259/+BAwcYQFgpGyKGjK0rt/9n0Mzf9j+odef/
DAAACwwBP0AiyAAAAMNJREFUKFNjcKzZ/l8ucysYT1259/+BAwcYQFgpGyKGjK0rt/9n0Mzf9j+odef/
lgV7/m/Yvh+uoW3hHrAYCDvVAhVGbv4PMgSsoWLmbrhCdFwze/d/tpjN/13qdhDWAFPcPH/P/4Z5e/Br
qEZSDOLj1YCuGIRBbC2gWgwN2BQjYxQNhBSDMFzDnn0H/qvmbgUHIzaFa7ft/z9p+V5UJ+3dfwCnySie
9mrY8b9sxm682L8ZGg/ejTv+axdsIwq71e34DwDIiV/OjEilhQAAAABJRU5ErkJggg==
Expand All @@ -139,7 +139,7 @@
<data name="pictureBox3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DwAACw8BkvkDpQAAAMNJREFUKFNjcKzZ/l8ucysYT1259/+BAwcYQFgpGyKGjK0rt/9n0Mzf9j+odef/
DAAACwwBP0AiyAAAAMNJREFUKFNjcKzZ/l8ucysYT1259/+BAwcYQFgpGyKGjK0rt/9n0Mzf9j+odef/
lgV7/m/Yvh+uoW3hHrAYCDvVAhVGbv4PMgSsoWLmbrhCdFwze/d/tpjN/13qdhDWAFPcPH/P/4Z5e/Br
qEZSDOLj1YCuGIRBbC2gWgwN2BQjYxQNhBSDMFzDnn0H/qvmbgUHIzaFa7ft/z9p+V5UJ+3dfwCnySie
9mrY8b9sxm682L8ZGg/ejTv+axdsIwq71e34DwDIiV/OjEilhQAAAABJRU5ErkJggg==
Expand All @@ -148,7 +148,7 @@
<data name="pictureBox4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DwAACw8BkvkDpQAAAMNJREFUKFNjcKzZ/l8ucysYT1259/+BAwcYQFgpGyKGjK0rt/9n0Mzf9j+odef/
DAAACwwBP0AiyAAAAMNJREFUKFNjcKzZ/l8ucysYT1259/+BAwcYQFgpGyKGjK0rt/9n0Mzf9j+odef/
lgV7/m/Yvh+uoW3hHrAYCDvVAhVGbv4PMgSsoWLmbrhCdFwze/d/tpjN/13qdhDWAFPcPH/P/4Z5e/Br
qEZSDOLj1YCuGIRBbC2gWgwN2BQjYxQNhBSDMFzDnn0H/qvmbgUHIzaFa7ft/z9p+V5UJ+3dfwCnySie
9mrY8b9sxm682L8ZGg/ejTv+axdsIwq71e34DwDIiV/OjEilhQAAAABJRU5ErkJggg==
Expand Down
2 changes: 2 additions & 0 deletions FetchXmlBuilder/DockControls/ResultGrid.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 36 additions & 0 deletions FetchXmlBuilder/DockControls/ResultGrid.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Metadata;
using Rappen.XTB.FetchXmlBuilder.AppCode;
using Rappen.XTB.FetchXmlBuilder.Extensions;
using Rappen.XTB.FetchXmlBuilder.Views;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

Expand Down Expand Up @@ -88,9 +91,37 @@ private void RefreshData()
.Where(c => c.Width > form.settings.Results.MaxColumnWidth)
.ToList()
.ForEach(c => c.Width = form.settings.Results.MaxColumnWidth);
GetLayoutFromGrid();
crmGridView1.ResumeLayout();
}

private void GetLayoutFromGrid()
{
if (!(form.dockControlBuilder.GetRootEntityMetadata() is EntityMetadata entity))
{
return;
}
var layoutxml = new LayoutXML
{
EntityMeta = entity,
EntityName = entity.LogicalName,
Cells = new List<Cell>()
};
foreach (var col in crmGridView1.Columns.Cast<DataGridViewColumn>()
.Where(c => !c.Name.StartsWith("#") && c.Visible && c.Width > 5)
.OrderBy(c => c.DisplayIndex))
{
layoutxml.Cells.Add(new Cell
{
Parent = layoutxml,
Attribute = form.dockControlBuilder.GetAttributeNodeFromLayoutName(col.Name),
Name = col.Name,
Width = col.Width
});
}
form.dockControlBuilder.LayoutXML = layoutxml;
}

private void crmGridView1_RecordDoubleClick(object sender, Rappen.XTB.Helpers.Controls.XRMRecordEventArgs e)
{
if (!form.settings.Results.ClickableLinks)
Expand Down Expand Up @@ -218,5 +249,10 @@ private void ctxCopy_Click(object sender, EventArgs e)
Clipboard.SetText(url);
}
}

private void crmGridView1_LayoutChanged(object sender, DataGridViewColumnEventArgs e)
{
GetLayoutFromGrid();
}
}
}
17 changes: 17 additions & 0 deletions FetchXmlBuilder/DockControls/TreeBuilderControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Rappen.XTB.FetchXmlBuilder.Extensions;
using Rappen.XTB.FetchXmlBuilder.Forms;
using Rappen.XTB.FetchXmlBuilder.Views;
using Rappen.XTB.Helpers.Controls;
using Rappen.XTB.XmlEditorUtils;
using System;
using System.Collections.Generic;
Expand Down Expand Up @@ -83,6 +84,12 @@ internal LayoutXML LayoutXML
}
return layoutxml;
}
set
{
layoutxml = value;
fxb.dockControlLayoutXml?.UpdateXML(layoutxml.ToXML());
layoutxml?.Cells?.ToList()?.ForEach(c => (GetCurrentControl() as attributeControl)?.UpdateUIFromCell(c));
}
}

#endregion Internal Properties
Expand Down Expand Up @@ -165,11 +172,21 @@ internal IEnumerable<TreeNode> GetAllLayoutValidAttributes(TreeNode entity = nul
return result;
}

internal TreeNode GetAttributeNodeFromLayoutName(string attributelayoutname)
{
return GetAllLayoutValidAttributes().FirstOrDefault(a => a.GetAttributeLayoutName().Equals(attributelayoutname));
}

internal string GetAttributesSignature()
{
return string.Join("\n", GetAllLayoutValidAttributes().Select(a => a.GetAttributeLayoutName()));
}

internal FetchXmlElementControlBase GetCurrentControl()
{
return panelContainer.Controls.Cast<FetchXmlElementControlBase>().FirstOrDefault();
}

internal TreeNode GetRootEntity()
{
return tvFetch.Nodes.Cast<TreeNode>()?
Expand Down
Loading

0 comments on commit 5b8da88

Please sign in to comment.