Exemple #1
0
        /// <summary>
        /// Transforms the specified rectangle.
        /// </summary>
        /// <param name="rectangle">The rectangle.</param>
        public override void Transform(Rectangle rectangle)
        {
            //IMPORTANT: the rectangle given as the transformation parameter is supposed to be the rectangle of the collapsed folder!

            itemWidth = rectangle.Width - plusminus.Rectangle.Width - constHeaderSpacing;
            //shift the plusminus icon
            plusminus.Transform(new Rectangle(rectangle.Location, plusminus.Rectangle.Size));
            //header
            header.Transform(new Rectangle(rectangle.Location.X + plusminus.Rectangle.Width + 10, rectangle.Location.Y, itemWidth, header.Rectangle.Height));
            //transform the entries
            int k = 0;

            foreach (IShapeMaterial material in mEntries)
            {
                material.Transform(new Rectangle(rectangle.X + plusminus.Rectangle.Width + 10, rectangle.Y + constHeaderHeight + 7 + k * (constItemHeight + constItemSpacing), itemWidth, constItemHeight));
                k++;
            }

            if (mCollapsed)
            {
                base.Transform(new Rectangle(rectangle.X, rectangle.Y, rectangle.Width, constHeaderHeight));
            }
            else
            {
                base.Transform(new Rectangle(rectangle.X, rectangle.Y, rectangle.Width, constHeaderHeight + constItemSpacing + mEntries.Count * (constItemSpacing + constItemHeight)));
            }
        }
        /// <summary>
        /// Calculates the bounding rectangle of this group.
        /// </summary>
        public void CalculateRectangle()
        {
            if (mEntities == null || mEntities.Count == 0)
            {
                return;
            }
            Rectangle rec = mEntities[0].Rectangle;

            foreach (IDiagramEntity entity in Entities)
            {
                //cascade the calculation if necessary
                if ((entity is CollapsibleGroupShape) && !(entity as CollapsibleGroupShape).Collapsed)
                {
                    (entity as IGroup).CalculateRectangle();
                }

                rec = Rectangle.Union(rec, entity.Rectangle);
            }
            rec.Inflate(20, 20);
            this.mRectangle = rec;
            rec.Offset(5, 5);
            xicon.Transform(new Rectangle(rec.Location, new Size(16, 16)));

            expandLabel.Transform(new Rectangle(rec.Location.X + 20, rec.Location.Y, 50, 12));
        }
        ///<summary>
        ///Default constructor
        ///</summary>
        public FolderMaterial(string title)
            : base()
        {
            myTextStyle = new TextStyle(
                Color.Black,
                new Font("Arial", 10),
                StringAlignment.Near,
                StringAlignment.Near);
            mEntries              = new CollectionBase <IShapeMaterial>();
            mEntries.OnItemAdded +=
                new EventHandler <CollectionEventArgs <IShapeMaterial> >(
                    mEntries_OnItemAdded);

            Gliding   = false;
            Resizable = true;

            plusminus           = new SwitchIconMaterial(SwitchIconType.PlusMinus);
            plusminus.TextStyle = myTextStyle;
            plusminus.Transform(new Rectangle(0, 0, 16, 16));
            plusminus.Visible     = true;
            plusminus.Gliding     = false;
            plusminus.OnExpand   += new EventHandler(plusminus_OnExpand);
            plusminus.OnCollapse += new EventHandler(plusminus_OnCollapse);


            header           = new ClickableLabelMaterial();
            header.TextStyle = myTextStyle;
            header.Transform(new Rectangle(0, 0, 100, HeaderHeight));
            header.Text      = title;
            header.Gliding   = false;
            header.Visible   = true;
            header.Resizable = true;
        }
    ///<summary>
    ///Default constructor
    ///</summary>
    public FolderMaterial(string title)
      : base() {
      myTextStyle = new TextStyle(
          Color.Black,
          new Font("Arial", 10),
          StringAlignment.Near,
          StringAlignment.Near);
      mEntries = new CollectionBase<IShapeMaterial>();
      mEntries.OnItemAdded +=
          new EventHandler<CollectionEventArgs<IShapeMaterial>>(
          mEntries_OnItemAdded);

      Gliding = false;
      Resizable = true;

      plusminus = new SwitchIconMaterial(SwitchIconType.PlusMinus);
      plusminus.TextStyle = myTextStyle;
      plusminus.Transform(new Rectangle(0, 0, 16, 16));
      plusminus.Visible = true;
      plusminus.Gliding = false;
      plusminus.OnExpand += new EventHandler(plusminus_OnExpand);
      plusminus.OnCollapse += new EventHandler(plusminus_OnCollapse);


      header = new ClickableLabelMaterial();
      header.TextStyle = myTextStyle;
      header.Transform(new Rectangle(0, 0, 100, HeaderHeight));
      header.Text = title;
      header.Gliding = false;
      header.Visible = true;
      header.Resizable = true;
    }