Ejemplo n.º 1
0
 /// <summary>
 /// Retrieves the persistable properties of <see cref="T:Dataweb.NShape.Advanced.TextBase" />.
 /// </summary>
 new public static IEnumerable <EntityPropertyDefinition> GetPropertyDefinitions(int version)
 {
     foreach (EntityPropertyDefinition pi in RectangleBase.GetPropertyDefinitions(version))
     {
         yield return(pi);
     }
     yield return(new EntityFieldDefinition("AutoSize", typeof(bool)));
 }
Ejemplo n.º 2
0
    public void RemoveAction(int id)
    {
        RectangleBase act = acts[id];

        circleOuter.Children.Remove(act);
        acts.Remove(id);
        //	ChangePropCount();
    }
Ejemplo n.º 3
0
        /// <summary>
        /// Retrieves the persistable properties of <see cref="T:Dataweb.NShape.Advanced.ThickArrow" />.
        /// </summary>
        new public static IEnumerable <EntityPropertyDefinition> GetPropertyDefinitions(int version)
        {
            foreach (EntityPropertyDefinition pi in RectangleBase.GetPropertyDefinitions(version))
            {
                yield return(pi);
            }
            yield return(new EntityFieldDefinition("HeadWidth", typeof(int)));

            yield return(new EntityFieldDefinition("BodyHeight", typeof(int)));
        }
Ejemplo n.º 4
0
    public RectangleBase AddAction(int id)
    {
        RectangleBase act = (RectangleBase)ActionType.CreateInstance();

        act.IsToolbarHidden = true;
        acts.Add(id, act);
        circleOuter.Children.Add(act);
        //	ChangePropCount();
        return(act);
    }
Ejemplo n.º 5
0
        /// <summary>
        /// 设置符号
        /// </summary>
        private void SetTemplate()
        {
            try
            {
                //设置基本图形
                RectangleBase ellipseShape = (RectangleBase)project1.ShapeTypes["Ellipse"].CreateInstance();
                ellipseShape.Width  = 120;
                ellipseShape.Height = 72;
                ellipseShape.X      = 250;
                ellipseShape.Y      = 250;

                RectangleBase ellipseShape2 = (RectangleBase)project1.ShapeTypes["Ellipse"].CreateInstance();
                ellipseShape2.Width  = 120;
                ellipseShape2.Height = 72;
                ellipseShape2.X      = 250;
                ellipseShape2.Y      = 250;

                DiamondBase diamondShape = (DiamondBase)project1.ShapeTypes["Diamond"].CreateInstance();
                diamondShape.Width  = 120;
                diamondShape.Height = 72;
                diamondShape.X      = 250;
                diamondShape.Y      = 250;

                //设置模板
                Template ellipseTemplate = new Template("Input", ellipseShape);
                ((IPlanarShape)ellipseTemplate.Shape).FillStyle = project1.Design.FillStyles.Yellow;
                ((ICaptionedShape)ellipseTemplate.Shape).SetCaptionCharacterStyle(0, project1.Design.CharacterStyles["Font1"]);
                project1.Repository.Insert(ellipseTemplate);

                Template ellipseTemplate2 = new Template("Output", ellipseShape2);
                ((IPlanarShape)ellipseTemplate2.Shape).FillStyle = project1.Design.FillStyles.Green;
                ((ICaptionedShape)ellipseTemplate2.Shape).SetCaptionCharacterStyle(0, project1.Design.CharacterStyles["Font1"]);
                project1.Repository.Insert(ellipseTemplate2);

                Template diamondTemplate = new Template("Operate", diamondShape);
                ((IPlanarShape)diamondTemplate.Shape).FillStyle = project1.Design.FillStyles.Blue;
                ((ICaptionedShape)diamondTemplate.Shape).SetCaptionCharacterStyle(0, project1.Design.CharacterStyles["Font1"]);
                project1.Repository.Insert(diamondTemplate);

                RectangularLine line = (RectangularLine)project1.ShapeTypes["RectangularLine"].CreateInstance();
                line.EndCapStyle = project1.Design.CapStyles.ClosedArrow;
                line.LineStyle   = project1.Design.LineStyles["Green"];
                project1.Repository.InsertAll(new Template("Connect", line));
            }
            catch
            { }
        }
Ejemplo n.º 6
0
        private void loadWebStatisticsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string statsDir = Path.Combine("Demo Programs", Path.Combine("WebVisits", "Sample Web Statistics"));

            openFileDialog.Filter           = "Web Statistics|*.xml|All files|*.*";
            openFileDialog.InitialDirectory = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(Application.StartupPath)), statsDir);
            openFileDialog.FileName         = string.Empty;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                // Create a new diagram
                ShapeType boxType       = project.ShapeTypes["Ellipse"];
                ShapeType multiLineType = project.ShapeTypes["Polyline"];

                Dictionary <int, RectangleBase> boxes = new Dictionary <int, RectangleBase>();
                List <Polyline> lines = new List <Polyline>();
                //
                // Create shapes for the web pages and connect them with lines
                XmlScanner scanner = new XmlScanner(openFileDialog.FileName);
                scanner.ReadElement();
                scanner.ReadElement("WebVisits");
                scanner.ReadChild("Pages");
                if (scanner.ReadChild("Page"))
                {
                    do
                    {
                        scanner.ReadAttribute();                 // id attribute
                        RectangleBase box = (RectangleBase)boxType.CreateInstance(pageTemplate);
                        box.Width = 140;
                        boxes.Add(scanner.IntValue, box);
                        scanner.ReadAttribute();
                        box.Text = scanner.StringValue;
                    } while (scanner.ReadElement());
                }
                scanner.ReadParent();
                if (scanner.ReadChild("Referral"))
                {
                    do
                    {
                        scanner.ReadAttribute();                         // id1
                        int   id1    = scanner.IntValue;
                        Shape shape1 = boxes[id1];
                        scanner.ReadAttribute();                         // id2
                        int   id2    = scanner.IntValue;
                        Shape shape2 = boxes[id2];
                        scanner.ReadAttribute();                         // count
                        int      count = scanner.IntValue;
                        Polyline line  = (Polyline)multiLineType.CreateInstance();
                        line.EndCapStyle = project.Design.CapStyles.Arrow;
                        line.LineStyle   = GetLineStyle(count);
                        line.Connect(ControlPointId.FirstVertex, shape1, ControlPointId.Reference);
                        line.Connect(ControlPointId.LastVertex, shape2, ControlPointId.Reference);
                        lines.Add(line);
                    } while (scanner.ReadElement());
                }
                scanner.ReadParent();
                scanner.Close();
                //
                // Insert all shapes into the diagram
                int cnt = 0;
                foreach (Diagram d in project.Repository.GetDiagrams())
                {
                    ++cnt;
                }
                Diagram diagram = new Diagram(string.Format("WebVisits Diagram {0}", cnt));
                diagram.Width  = 1000;
                diagram.Height = 1000;
                diagram.BackgroundImageLayout = Dataweb.NShape.ImageLayoutMode.Fit;
                foreach (RectangleBase b in boxes.Values)
                {
                    diagram.Shapes.Add(b, project.Repository.ObtainNewTopZOrder(diagram));
                }
                foreach (Polyline l in lines)
                {
                    diagram.Shapes.Add(l, project.Repository.ObtainNewBottomZOrder(diagram));
                }

                boxes.Clear();
                lines.Clear();
                //
                // Insert the diagram (including all shapes) into the repository
                project.Repository.InsertDiagram(diagram);
                //
                // Layout the shapes
                if (layouter == null)
                {
                    layouter = new RepulsionLayouter(project);
                }
                layouter.SpringRate     = 14;
                layouter.Repulsion      = 7;
                layouter.RepulsionRange = 400;
                layouter.Friction       = 0;
                layouter.Mass           = 50;
                //
                layouter.AllShapes = diagram.Shapes;
                layouter.Shapes    = diagram.Shapes;

                layouter.Prepare();
                layouter.Execute(10);
                layouter.Fit(50, 50, diagram.Width - 100, diagram.Height - 100);
                //
                // Display the result
                display.Diagram = diagram;
            }
        }