Beispiel #1
0
        public EnhancedDataTable ToDataTable()
        {
            var table = new EnhancedDataTable();

            // add columns to the table.
            foreach (var reportColumn in this.Columns)
            {
                table.Columns.Add(reportColumn.ToDataColumn());
            }

            // add the rows to the table.
            foreach (var reportRow in this.Rows)
            {
                var dataRow = table.NewRow();
                int ix      = 0;
                foreach (var item in reportRow)
                {
                    dataRow[ix] = item.Value;
                    ix         += 1;
                }
                table.Rows.Add(dataRow);
            }

            return(table);
        }
Beispiel #2
0
        public object GetHoverData(EnhancedDataTable itemTable)
        {
            var srcmbr    = itemTable.SelectedRow["MbrName"].ToString();
            var srcfName  = itemTable.SelectedRow["SrcfName"].ToString();
            var srcfLib   = itemTable.SelectedRow["SrcfLib"].ToString();
            var hoverData = SrcmbrScripts.GetSrcmbrLines(srcfName, srcfLib, srcmbr);

            return(hoverData);
        }
Beispiel #3
0
        private object CompileAndRunHoverCode(
            string hoverCode, EnhancedDataTable screenDefnTable)
        {
            object hoverData = null;

            IEnumerable <string> errmsgs = null;
            var      supportCode         = ClientSettings.GetCachedSupportCode();
            Assembly assem = null;

            {
                string[] sourceInput     = new string[] { hoverCode, supportCode };
                var      autocoderTelnet = AutoCoder.Code.Ext.TypeExt.GetReference(typeof(ClientSettings));
                var      rv = CSharpCompilationExt.CompileSource(sourceInput, autocoderTelnet);
                assem   = rv.Item1;
                errmsgs = rv.Item2;
            }

            if (assem == null)
            {
                foreach (var errmsg in errmsgs)
                {
                    Debug.WriteLine(errmsg);
                }
                throw new Exception("compile of hover code failed");
            }

            // run the first static method of the hoverCode.
            else
            {
                var rv            = CodeAnalyzer.GetFirstMethod(hoverCode);
                var namespaceName = rv.Item1;
                var className     = rv.Item2;
                var methodName    = rv.Item3;
                if (methodName.IsNullOrEmpty() == false)
                {
                    var qualClassName = namespaceName + "." + className;
                    var classType     = assem.GetType(qualClassName);
                    var mi            = classType.GetMethod(methodName);
                    if (mi != null)
                    {
                        var parametersArray = new object[] { screenDefnTable };
                        hoverData = mi.Invoke(null, new object[] { screenDefnTable });
                    }
                }
            }

            return(hoverData);
        }
Beispiel #4
0
        /// <summary>
        /// fill and make visible the hover window.
        /// Called by the DrawHoverBox method of ItemCanvas.
        /// </summary>
        /// <param name="Position"></param>
        /// <param name="CanvasRowCol"></param>
        /// <param name="MatchScreenDefn"></param>
        /// <param name="Content"></param>
        public void DrawHoverBox(
            Point Position, IScreenLoc CanvasRowCol, IScreenDefn MatchScreenDefn,
            ScreenContent Content)
        {
            // first remove any existing popup hover box.
            RemoveHoverBox();

            // hovering on a screen with a screen defn. Find the item on the screen
            // which is being hovered over.
            string             itemName   = "";
            string             itemValue  = "";
            int                itemRowNum = 0;
            ScreenItemInstance hoverItem  = null;

            if ((MatchScreenDefn != null) && (CanvasRowCol != null))
            {
                var foundItem = MatchScreenDefn.FindItem(CanvasRowCol, Content);
                if (foundItem != null)
                {
                    hoverItem  = foundItem;
                    itemName   = foundItem.GetItemName().EmptyIfNull();
                    itemValue  = foundItem.GetValue(Content);
                    itemRowNum = foundItem.RepeatNum;
                }
            }

            // capture the contents of the screen to a DataTable.
            EnhancedDataTable itemTable = null;
            Grid   srcmbrGrid           = null;
            object hoverData            = null;
            string hoverXaml            = null;
            string hoverCode            = null;

            if ((MatchScreenDefn != null) && (hoverItem != null))
            {
                itemTable = MatchScreenDefn.Capture(Content, hoverItem);
                {
                    hoverXaml = FindHoverXaml(hoverItem.Item);
                    hoverCode = FindHoverCode(hoverItem.Item);
                }

                if (hoverCode.IsNullOrEmpty( ) == false)
                {
                    hoverData = CompileAndRunHoverCode(hoverCode, itemTable);
                }

                if ((MatchScreenDefn.ScreenName == "wrkmbrpdm") && (hoverData == null))
                {
                    // BgnTemp
                    {
                        if (itemTable.Rows.Count == 0)
                        {
                            var rep = Content.ToColumnReport("Content report");
                            rep.DebugPrint();
                            itemTable = MatchScreenDefn.Capture(Content, hoverItem);
                        }
                    }
                    // EndTemp

                    var srcmbr      = itemTable.SelectedRow["MbrName"].ToString();
                    var srcfName    = itemTable.SelectedRow["SrcfName"].ToString();
                    var srcfLib     = itemTable.SelectedRow["SrcfLib"].ToString();
                    var sourceLines = SrcmbrScripts.GetSrcmbrLines(srcfName, srcfLib, srcmbr);
                    hoverData = new { srcmbr, srcfName, srcfLib, sourceLines };
                }
            }

            Grid grid = null;

            if (hoverData != null)
            {
                if (hoverXaml.IsNullOrEmpty( ) == false)
                {
                    var sr     = new StringReader(hoverXaml);
                    var xr     = XmlReader.Create(sr);
                    var uiElem = XamlReader.Load(xr);
                    grid             = uiElem as Grid;
                    grid.DataContext = hoverData;
                }
                else
                {
                    var uiElem = hoverData.ToUIElement();
                    grid = uiElem as Grid;
                }
            }
            else
            {
                // create the controls that make up the hover control.
                ListBox lb = null;
                System.Windows.Controls.Canvas canvas = null;

                if (srcmbrGrid != null)
                {
                    var rv = BuildSrcmbrHoverGrid(srcmbrGrid);
                    grid = rv.Item1;
                }
                else
                {
                    var rv = BuildFoundation();
                    grid   = rv.Item1;
                    lb     = rv.Item2;
                    canvas = rv.Item3;

                    lb.Items.Add("field name:" + itemName);
                    lb.Items.Add("RowCol:" + CanvasRowCol.ToText());
                    lb.Items.Add("Value:" + itemValue);
                    lb.Items.Add("Row number:" + itemRowNum);
                }
            }

            ShowHoverBox(grid, Position);
        }