Exemplo n.º 1
0
        /// <summary>
        /// Build tooltip for data row
        /// </summary>
        /// <param name="dri">Data row index</param>
        /// <returns></returns>

        internal SuperToolTip BuildDataRowTooltip(
            TooltipDimensionDef ttDim,
            int dri)
        {
            ColumnMapMsx cm;
            QueryTable   qt;
            QueryColumn  qc;
            MetaTable    mt;
            MetaColumn   mc;
            int          i1, i2;

            if (BaseQuery == null || BaseQuery.Tables.Count == 0 || Dtm == null)
            {
                return(null);
            }
            qt = BaseQuery.Tables[0];

            SuperToolTip s = new SuperToolTip();

            s.MaxWidth      = 200;
            s.AllowHtmlText = DefaultBoolean.True;

            ToolTipItem i = new ToolTipItem();

            i.AllowHtmlText = DefaultBoolean.True;
            i.Appearance.TextOptions.WordWrap = WordWrap.Wrap;

            ColumnMapCollection cml2 = new ColumnMapCollection();             // list of fields we'll actually display

            int strPos = -1;

            ColumnMapCollection cml = ttDim.Fields;

            if (cml.Count == 0)
            {
                return(s);
            }

            for (i1 = 0; i1 < cml.Count; i1++)
            {
                cm = cml[i1];
                qc = cm.QueryColumn;
                if (qc == null || !cm.Selected)
                {
                    continue;
                }
                //if (qc.IsKey) continue;
                if (qc.MetaColumn.DataType == MetaColumnType.Structure)
                {
                    strPos = i1;
                }

                for (i2 = 0; i2 < cml2.Count; i2++)                 // see if already have the column
                {
                    if (qc == cml2[i2].QueryColumn)
                    {
                        break;
                    }
                }
                if (i2 < cml2.Count)
                {
                    continue;
                }

                cml2.Add(cm);
            }

            if (cml2.Count == 0)
            {
                return(null);                             // no fields
            }
            if (strPos < 0 && ttDim.IncludeStructure)
            {                                  // include str if requested & not already included
                qc     = qt.FirstStructureQueryColumn;
                strPos = cml2.Count;           // put str at end
                //strPos = keyPos + 1; // place str after key
                if (qc != null && qc.Selected) // regular selected Qc?
                {
                    cml2.ColumnMapList.Insert(strPos, ColumnMapMsx.BuildFromQueryColumn(qc));
                }

                else                 // look in root table for a structure
                {
                    mt = qt.MetaTable.Root;
                    if (mt.FirstStructureMetaColumn != null)
                    {
                        qt            = new QueryTable(mt);
                        qc            = new QueryColumn();              // add qc with no vo pos as indicator that must be selected
                        qc.MetaColumn = mt.FirstStructureMetaColumn;
                        qc.Selected   = true;
                        qt.AddQueryColumn(qc);
                        cml2.ColumnMapList.Insert(strPos, ColumnMapMsx.BuildFromQueryColumn(qc));
                    }
                }
            }

            string keyVal = "";

            foreach (ColumnMapMsx fli0 in cml2.ColumnMapList)             // format each field
            {
                qc = fli0.QueryColumn;
                mc = qc.MetaColumn;

                i.Text += "<b>";                 // build label
                if (!Lex.IsNullOrEmpty(fli0.ParameterName))
                {
                    i.Text += fli0.ParameterName;
                }
                else
                {
                    i.Text += fli0.QueryColumn.ActiveLabel;
                }
                i.Text += ": </b>";

                if (qc.VoPosition >= 0)
                {
                    int       ti   = qc.QueryTable.TableIndex;
                    int       dri2 = Dtm.AdjustDataRowToCurrentDataForTable(dri, ti, true);
                    DataRowMx dr   = Qm.DataTable.Rows[dri2];
                    if (dr == null)
                    {
                        continue;
                    }
                    ResultsTable rt         = Rf.Tables[ti];
                    object       fieldValue = dr[qc.VoPosition];
                    if (!NullValue.IsNull(fieldValue))
                    {
                        if (qc.IsKey)
                        {
                            keyVal = fieldValue.ToString();
                        }
                        MobiusDataType     mdt = MobiusDataType.ConvertToMobiusDataType(qc.MetaColumn.DataType, fieldValue);
                        FormattedFieldInfo ffi = Qm.ResultsFormatter.FormatField(qc, mdt);

                        if (mc.DataType != MetaColumnType.Structure)
                        {
                            i.Text += ffi.FormattedText;
                            i.Text += "<br>";
                        }
                        else
                        {
                            i = ToolTipUtil.AppendBitmapToToolTip(s, i, ffi.FormattedBitmap);
                        }
                    }

                    else
                    {
                        i.Text += "<br>";                      // no data
                    }
                }

                else if (!Lex.IsNullOrEmpty(keyVal))                 // select structure from db (may already have)
                {
                    MoleculeMx cs = MoleculeUtil.SelectMoleculeForCid(keyVal, qc.MetaColumn.MetaTable);
                    if (cs != null)
                    {
                        int width = ResultsFormatFactory.QcWidthInCharsToDisplayColWidthInMilliinches(mc.Width, ResultsFormat);
                        FormattedFieldInfo ffi = Qm.ResultsFormatter.FormatStructure(cs, new CellStyleMx(), 's', 0, width, -1);
                        i = ToolTipUtil.AppendBitmapToToolTip(s, i, ffi.FormattedBitmap);
                    }
                }
            }

            if (i.Text.Length > 0)
            {
                s.Items.Add(i);
            }

            if (s.Items.Count == 0)
            {             // show something by default
                i            = new ToolTipItem();
                i.Text       = "No fields selected";
                i.LeftIndent = 6;
                i.Appearance.TextOptions.WordWrap = WordWrap.Wrap;
                s.Items.Add(i);
            }

            //ToolTipTitleItem ti = new ToolTipTitleItem();
            //ti.Text = "Dude";
            //s.Items.Add(ti);

            //ToolTipItem i = new ToolTipItem();
            //i.Text = "Subtext that is fairly long longer longest";
            //i.LeftIndent = 6;
            //i.Appearance.TextOptions.WordWrap = WordWrap.Wrap;
            //s.Items.Add(i);

            //i = new ToolTipItem();
            //Image img = Bitmap.FromFile(@"C:\Mobius_OpenSource\Mobius-3.0\ClientComponents\Resources\Mobius76x76DkBlueBack.bmp");
            //i.Image = img;
            //s.Items.Add(i);

            //ToolTipSeparatorItem si = new ToolTipSeparatorItem();

            return(s);

            //ChartPanel.ToolTipController.ToolTipLocation = ToolTipLocation.TopCenter;
            //ChartPanel.ToolTipController.AllowHtmlText = true;
            //string s = point.SeriesPointID.ToString();
            //s = "This <b>SuperToolTip</b> supports <i>HTML formatting</i>";
        }
Exemplo n.º 2
0
/// <summary>
/// Deserialize
/// </summary>
/// <param name="vertexName"></param>
/// <param name="q"></param>
/// <param name="tr"></param>
/// <returns></returns>

        internal static VertexMx Deserialize(
            string name,
            Query q,
            XmlTextReader tr)
        {
            Enum iEnum = null;

            VertexMx v = new VertexMx();

            if (XmlUtil.GetEnumAttribute(tr, "ShowLabels", typeof(ShowLabels), ref iEnum))
            {
                v.ShowLabels = (ShowLabels)iEnum;
            }

            while (true)             // loop through elements of network
            {
                tr.Read(); tr.MoveToContent();

                if (Lex.Eq(tr.Name, name + "Column"))
                {
                    v.QueryColumn = ResultsViewProps.DeserializeQueryColumn(q, tr);
                    //tr.Read(); tr.MoveToContent();
                }

                else if (Lex.Eq(tr.Name, "Color"))
                {
                    v.Color = ColorDimension.Deserialize("Color", q, tr);
                    //tr.Read(); tr.MoveToContent();
                }

                else if (Lex.Eq(tr.Name, "Size"))
                {
                    v.Size = SizeDimension.Deserialize("Size", q, tr);
                    //tr.Read(); tr.MoveToContent();
                }

                else if (Lex.Eq(tr.Name, "Shape"))
                {
                    v.Shape = ShapeDimension.Deserialize("Shape", q, tr);
                    //tr.Read(); tr.MoveToContent();
                }

                else if (Lex.Eq(tr.Name, "TooltipFields"))
                {
                    v.TooltipFields = TooltipDimensionDef.Deserialize("TooltipFields", q, tr);
                    //tr.Read(); tr.MoveToContent();
                }

                else if (tr.NodeType == XmlNodeType.EndElement &&                 // end of props
                         Lex.Eq(tr.Name, name))
                {
                    break;
                }

                else
                {
                    throw new Exception("Unexpected element: " + tr.Name);
                }
            }

            return(v);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Deserialize
        /// </summary>
        /// <param name="name"></param>
        /// <param name="q"></param>
        /// <param name="tr"></param>
        /// <returns></returns>

        internal static EdgeMx Deserialize(
            string name,
            Query q,
            XmlTextReader tr)
        {
            Enum iEnum = null;

            EdgeMx e = new EdgeMx();

            if (XmlUtil.GetEnumAttribute(tr, "ShowLabels", typeof(ShowLabels), ref iEnum))
            {
                e.ShowLabels = (ShowLabels)iEnum;
            }

            if (XmlUtil.GetEnumAttribute(tr, "SummarizationType", typeof(SummarizationType), ref iEnum))
            {
                e.SummarizationType = (SummarizationType)iEnum;
            }

            XmlUtil.GetBoolAttribute(tr, "IncludeEdgeVertex", ref e.IncludeEdgeVertex);

            while (true)             // loop through elements of network
            {
                tr.Read(); tr.MoveToContent();

                if (Lex.Eq(tr.Name, name + "Column"))
                {
                    e.QueryColumn = ResultsViewProps.DeserializeQueryColumn(q, tr);
                    tr.Read(); tr.MoveToContent();
                }

                else if (Lex.Eq(tr.Name, "Color"))
                {
                    e.Color = ColorDimension.Deserialize("Color", q, tr);
                    tr.Read(); tr.MoveToContent();
                }

                else if (Lex.Eq(tr.Name, "Width"))
                {
                    e.Width = SizeDimension.Deserialize("Width", q, tr);
                    tr.Read(); tr.MoveToContent();
                }

                else if (Lex.Eq(tr.Name, "TooltipFields"))
                {
                    e.TooltipFields = TooltipDimensionDef.Deserialize("TooltipFields", q, tr);
                    //tr.Read(); tr.MoveToContent();
                }

                else if (tr.NodeType == XmlNodeType.EndElement &&                 // end of props
                         Lex.Eq(tr.Name, name))
                {
                    break;
                }

                else
                {
                    throw new Exception("Unexpected element: " + tr.Name);
                }
            }

            return(e);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Deserialize Chart Properties
        /// </summary>
        /// <param name="q"></param>
        /// <param name="tr"></param>
        /// <param name="view"></param>

        public static bool DeserializeChartProperties(
            Query q,
            XmlTextReader tr,
            ResultsViewProps view)
        {
            AxisMx ax;
            Enum   iEnum = null;
            string txt;

            if (!Lex.Eq(tr.Name, "ChartProperties"))
            {
                return(false);
            }

            if (XmlUtil.GetEnumAttribute(tr, "ShapeRenderingMode", typeof(ShapeRenderingMode), ref iEnum))
            {
                view.ShapeRenderingMode = (ShapeRenderingMode)iEnum;
            }

            //XmlUtil.GetStringAttribute(tr, "BackgroundImageFile", ref view.BackgroundImageFile);
            XmlUtil.GetIntAttribute(tr, "Jitter", ref view.JitterX);
            XmlUtil.GetBoolAttribute(tr, "ChartStretch", ref view.JitterTheSameForXandY);

            XmlUtil.GetBoolAttribute(tr, "ShowLegend", ref view.ShowLegend);

            if (tr.GetAttribute("LegendAlignmentHorizontal") != null)
            {
                view.LegendAlignmentHorizontal =
                    (LegendAlignmentHorizontal)EnumUtil.Parse(typeof(LegendAlignmentHorizontal), tr.GetAttribute("LegendAlignmentHorizontal"));
            }

            if (tr.GetAttribute("LegendAlignmentVertical") != null)
            {
                view.LegendAlignmentVertical =
                    (LegendAlignmentVertical)EnumUtil.Parse(typeof(LegendAlignmentVertical), tr.GetAttribute("LegendAlignmentVertical"));
            }

            XmlUtil.GetIntAttribute(tr, "LegendMaxHorizontalPercentage", ref view.LegendMaxHorizontalPercentage);
            XmlUtil.GetIntAttribute(tr, "LegendMaxVerticalPercentage", ref view.LegendMaxVerticalPercentage);

            if (tr.GetAttribute("LegendItemOrder") != null)
            {
                view.LegendItemOrder =
                    (LegendDirection)EnumUtil.Parse(typeof(LegendDirection), tr.GetAttribute("LegendItemOrder"));
            }

            XmlUtil.GetBoolAttribute(tr, "MainChartAreaMaximized", ref view.MainViewPanelMaximized);
            XmlUtil.GetBoolAttribute(tr, "ShowFilters", ref view.ShowFilters);
            XmlUtil.GetBoolAttribute(tr, "ShowSelectedDataRows", ref view.ShowSelectedDataRows);

            XmlUtil.GetBoolAttribute(tr, "ShowAxesTitles", ref view.ShowAxesTitles);
            XmlUtil.GetBoolAttribute(tr, "ShowAxesScaleLabels", ref view.ShowAxesScaleLabels);
            XmlUtil.GetBoolAttribute(tr, "RotateAxes", ref view.RotateAxes);

            XmlUtil.GetBoolAttribute(tr, "UseExistingCondFormatting", ref view.UseExistingCondFormatting);
            XmlUtil.GetBoolAttribute(tr, "PivotedData", ref view.PivotedData);

            while (true)             // loop through elements of chart
            {
                tr.Read(); tr.MoveToContent();

                if (Lex.Eq(tr.Name, "XAxis"))
                {
                    view.XAxisMx = AxisMx.DeserializeAxis("XAxis", q, tr);
                }

                else if (Lex.Eq(tr.Name, "YAxis"))
                {
                    view.YAxisMx = AxisMx.DeserializeAxis("YAxis", q, tr);
                }

                else if (Lex.Eq(tr.Name, "ZAxis"))
                {
                    view.ZAxisMx = AxisMx.DeserializeAxis("ZAxis", q, tr);
                }

                else if (Lex.Eq(tr.Name, "Axis"))
                {
                    ax = AxisMx.DeserializeAxis("Axis", q, tr);
                    view.AxesMx.Add(ax);
                }

                else if (Lex.Eq(tr.Name, "MarkerColor"))
                {
                    view.MarkerColor = ColorDimension.Deserialize("MarkerColor", q, tr);
                }

                else if (Lex.Eq(tr.Name, "MarkerSize"))
                {
                    view.MarkerSize = SizeDimension.Deserialize("MarkerSize", q, tr);
                }

                else if (Lex.Eq(tr.Name, "MarkerShape"))
                {
                    view.MarkerShape = ShapeDimension.Deserialize("MarkerShape", q, tr);
                }

                else if (Lex.Eq(tr.Name, "MarkerLabel"))
                {
                    view.MarkerLabel = LabelDimensionDef.Deserialize("MarkerLabel", q, tr);
                }

                else if (Lex.Eq(tr.Name, "Labels"))                 // obsolete label tag
                {
                    view.MarkerLabel = LabelDimensionDef.Deserialize("Labels", q, tr);
                }

                else if (Lex.Eq(tr.Name, "TooltipFields"))
                {
                    view.MarkerTooltip = TooltipDimensionDef.Deserialize("TooltipFields", q, tr);
                }

                else if (Lex.Eq(tr.Name, "Surface"))
                {
                    txt = tr.GetAttribute("FillMode");
                    if (txt != null)
                    {
                        view.SurfaceFillMode = (SurfaceFillMode)EnumUtil.Parse(typeof(SurfaceFillMode), txt);
                    }

                    XmlUtil.GetBoolAttribute(tr, "SmoothPalette", ref view.SmoothPalette);
                    XmlUtil.GetBoolAttribute(tr, "SmoothShading", ref view.SmoothShading);
                    XmlUtil.GetBoolAttribute(tr, "SemiTransparent", ref view.SemiTransparent);
                    XmlUtil.GetBoolAttribute(tr, "DrawFlat", ref view.DrawFlat);

                    txt = tr.GetAttribute("FrameMode");
                    if (txt != null)
                    {
                        view.SurfaceFrameMode = (SurfaceFrameMode)EnumUtil.Parse(typeof(SurfaceFrameMode), txt);
                    }

                    if (tr.IsEmptyElement)
                    {
                        continue;                                        // may be just attributes
                    }
                    tr.Read(); tr.MoveToContent();
                    if (!Lex.Eq(tr.Name, "Surface"))
                    {
                        throw new Exception("Expected Surface end element");
                    }
                }

                else if (Lex.Eq(tr.Name, "Trellis"))
                {
                    if (tr.IsEmptyElement)
                    {
                        continue;                                        // may be just attributes
                    }
                    XmlUtil.GetBoolAttribute(tr, "ByRowCol", ref view.TrellisByRowCol);

                    XmlUtil.GetBoolAttribute(tr, "Manual", ref view.TrellisManual);
                    XmlUtil.GetIntAttribute(tr, "MaxRows", ref view.TrellisMaxRows);
                    XmlUtil.GetIntAttribute(tr, "MaxCols", ref view.TrellisMaxCols);

                    while (true)
                    {
                        tr.Read(); tr.MoveToContent();

                        if (Lex.Eq(tr.Name, "ColumnQc"))
                        {
                            view.TrellisColQc = DeserializeQueryColumnRef(q, tr);
                        }

                        else if (Lex.Eq(tr.Name, "RowQc"))
                        {
                            view.TrellisRowQc = DeserializeQueryColumnRef(q, tr);
                        }

                        else if (Lex.Eq(tr.Name, "PageQc"))
                        {
                            view.TrellisPageQc = DeserializeQueryColumnRef(q, tr);
                        }

                        else if (Lex.Eq(tr.Name, "FlowQc"))
                        {
                            view.TrellisFlowQc = DeserializeQueryColumnRef(q, tr);
                        }

                        else if (tr.NodeType == XmlNodeType.EndElement &&                         // end of trellis definition
                                 Lex.Eq(tr.Name, "Trellis"))
                        {
                            break;
                        }

                        else
                        {
                            throw new Exception("Unexpected element: " + tr.Name);
                        }
                    }
                }

                else if (tr.NodeType == XmlNodeType.EndElement &&                 // end of chart props
                         Lex.Eq(tr.Name, "ChartProperties"))
                {
                    break;
                }

                else
                {
                    throw new Exception("Unexpected element: " + tr.Name);
                }
            }

            return(true);
        }