Beispiel #1
0
        private void DoCapture(IScreenDefn screenDefn, ScreenContent content,
                               string CaptureFolderPath)
        {
            var itemReport = screenDefn.Capture(content);

            // accum capture data if post aid key is pagedown.
            if ((content.PostAidKey != null) &&
                (this.CaptureReport != null) &&
                (content.PostAidKey.Value == AidKey.RollUp))
            {
                var r2 = DataTableExt.CombineVertically(this.CaptureReport, itemReport);
                this.CaptureReport = r2;
            }
            else
            {
                this.CaptureReport = itemReport;
            }

            var htmlText = this.CaptureReport.ToHtmlTableText();

            var fileName        = screenDefn.ScreenName + "." + "html";
            var captureFilePath = System.IO.Path.Combine(CaptureFolderPath, fileName);

            System.IO.File.WriteAllText(captureFilePath, htmlText);
        }
 /// <summary>
 /// the contents of the model have been changed. Send signal back to the
 /// control or window that subscribes to the ModelChanged event.
 /// ( the ScreenDefnCollectionControl subscribes to this event. )
 /// </summary>
 /// <param name="Model"></param>
 void SignalModelChanged(IScreenDefn Model)
 {
     if ((Model != null) && (this.ModelChanged != null))
     {
         this.ModelChanged(Model);
     }
 }
        public static ColumnReport Report(this IScreenDefn Defn)
        {
            var defnHeader = Defn as ISectionHeader;
            var report     = defnHeader.Report("Screen Definition. " + Defn.ScreenName);

            return(report);
        }
        /// <summary>
        /// capture the data of the screen to a DataItemReport class.
        /// </summary>
        /// <param name="Defn"></param>
        /// <param name="Content"></param>
        /// <returns></returns>
        public static DataItemReport CaptureToReport(this IScreenDefn Defn, ScreenContent Content)
        {
            ISectionHeader sectionHeader = Defn as ISectionHeader;
            var            start         = new OneScreenLoc(1, 1);
            var            itemReport    = sectionHeader.CaptureToReport(start, Content);

            return(itemReport);
        }
 public CaptureContentMessage(string CaptureFolderPath, bool CaptureAuto,
                              IScreenDefn ScreenDefn, ScreenContent ScreenContent)
 {
     this.CaptureAuto       = CaptureAuto;
     this.CaptureFolderPath = CaptureFolderPath;
     this.ScreenDefn        = ScreenDefn;
     this.ScreenContent     = ScreenContent;
 }
        private void lvScreenDefn_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var lv         = sender as ListView;
            var screenDefn = lv.SelectedItem as IScreenDefn;

            if (screenDefn != null)
            {
                this.CurrentScreenDefn = new ScreenDefnModel(screenDefn);
            }
        }
        public static ScreenItemInstance FindItem(
            this IScreenDefn Defn, IScreenLoc FindLoc, ScreenContent Content)
        {
            ScreenItemInstance found = null;

            ISectionHeader sectionHeader = Defn as ISectionHeader;
            var            start         = new OneScreenLoc(1, 1);

            found = sectionHeader.FindItem(start, FindLoc, Content);

            return(found);
        }
 /// <summary>
 /// see the ModelChanged event of the ScreenDefnControl control.
 /// When the Model property of ScreenDefnControl changes, the code behind of that control
 /// signals its ModelChanged event. This collection control monitors that event. When the
 /// model changes ( item is clicked in the listview of screen defn models. ) want to
 /// apply changes back to the list of screen definitions.
 /// </summary>
 /// <param name="obj"></param>
 private void ScreenDefnControl_ModelChanged(IScreenDefn obj)
 {
     if (obj != null)
     {
         var item = this.ScreenDefnObservableList.FirstOrDefault(c => c.ScreenName == obj.ScreenName);
         if (item != null)
         {
             var ix   = this.ScreenDefnObservableList.IndexOf(item);
             var defn = new ScreenDefn(obj);
             this.ScreenDefnObservableList.Insert(ix, defn);
             this.ScreenDefnObservableList.Remove(item);
         }
     }
 }
        public static IScreenDefn ToScreenDefn(
            this XElement Elem, XNamespace Namespace)
        {
            IScreenDefn screenDefn = null;

            if (Elem != null)
            {
                var screenName    = Elem.Element(Namespace + "ScreenName").StringOrDefault("");
                var namespaceName = Elem.Element(Namespace + "NamespaceName").StringOrDefault("");
                var screenGuid    = Elem.Element(Namespace + "ScreenGuid").StringOrDefault(null);
                var screenDim     = Elem.Element(Namespace + "ScreenDim").ToScreenDim(Namespace);
                var itemList      = Elem.Element(Namespace + "ScreenItemList").ToScreenItemList(Namespace);
                screenDefn = new ScreenDefn(screenName, namespaceName, screenGuid, screenDim, itemList);
            }
            return(screenDefn);
        }
Beispiel #10
0
        private IScreenDefn FindMatchingScreenDefn(
            ScreenContent Content, ScreenDefnList ScreenDefnList)
        {
            IScreenDefn matchDefn = null;

            foreach (var screenDefn in ScreenDefnList)
            {
                var isMatch = screenDefn.Match(Content);
                if (isMatch == true)
                {
                    matchDefn = screenDefn;
                    break;
                }
            }
            return(matchDefn);
        }
        /// <summary>
        /// determine if the ScreenDefn matches the screen content.
        /// </summary>
        /// <param name="Content"></param>
        /// <returns></returns>
        public static bool Match(this IScreenDefn Defn, ScreenContent Content)
        {
            bool isMatch = true;

            // BgnTemp
            // SpecialLogFile.AppendTextLines(this.ToColumnReport());
            // EndTemp

            // extract all ContentText on the screen. Add to FieldDict.
            Content.AddAllContentText();

            ISectionHeader sectionHeader = Defn as ISectionHeader;
            var            start         = new OneScreenLoc(1, 1);

            isMatch = sectionHeader.Match(start, Content, Defn.ScreenName);

            return(isMatch);
        }
 public static XElement ToXElement(this IScreenDefn Defn, XName Name)
 {
     if (Defn == null)
     {
         return(new XElement(Name, null));
     }
     else
     {
         XElement xe = new XElement(Name,
                                    new XElement("ScreenName", Defn.ScreenName),
                                    new XElement("NamespaceName", Defn.NamespaceName),
                                    new XElement("ScreenGuid", Defn.ScreenGuid),
                                    Defn.ScreenDim.ToXElement("ScreenDim"),
                                    Defn.Items.ToXElement("ScreenItemList")
                                    );
         return(xe);
     }
 }
        /// <summary>
        /// capture the data of the screen to a DataTable class.
        /// </summary>
        /// <param name="Defn"></param>
        /// <param name="Content"></param>
        /// <returns></returns>
        public static EnhancedDataTable Capture(
            this IScreenDefn Defn, ScreenContent Content,
            ScreenItemInstance ItemInstance = null)
        {
            ISectionHeader sectionHeader = Defn as ISectionHeader;
            var            start         = new OneScreenLoc(1, 1);
            var            report        = sectionHeader.CaptureToReport(start, Content);
            var            table         = report.ToDataTable();

            // mark the selected datarow in the dataTable.
            int rownum = 0;

            if ((ItemInstance != null) && (ItemInstance.RepeatNum > 0))
            {
                rownum = ItemInstance.RepeatNum - 1;
            }
            table.MarkSelectedRow(rownum);

            return(table);
        }
 public WorkScreenDefnModel(ActionCode WorkMode, IScreenDefn defn)
   : this(WorkMode, defn.ScreenName, defn.NamespaceName, defn.ScreenDim, defn.Items)
 {
 }
Beispiel #15
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);
        }
 public ScreenDefnModel(IScreenDefn defn)
     : this(defn.ScreenName, defn.NamespaceName, defn.ScreenGuid, defn.ScreenDim, defn.Items)
 {
 }
 public static void AssignScreenGuid(this IScreenDefn defn)
 {
     defn.ScreenGuid = Guid.NewGuid().ToString();
 }
Beispiel #18
0
 public ScreenDefn(IScreenDefn source)
     : this(source.ScreenName, source.NamespaceName, source.ScreenGuid,
            source.ScreenDim, source.Items)
 {
 }
Beispiel #19
0
 public MatchScreenDefnMessage(IScreenDefn ScreenDefn, ScreenContent ScreenContent)
 {
     this.ScreenDefn    = ScreenDefn;
     this.ScreenContent = ScreenContent;
 }