Ejemplo n.º 1
0
 public void PreSave()
 {
     this.SetParents();
     PureObjectLabel.SetType(objects);
     PureArrowLabel.SetType(arrows);
     foreach (IArrowLabel label in arrows)
     {
         if (objects.Contains(label.Source))
         {
             label.SourceNumber = objects.IndexOf(label.Source);
         }
         else
         {
             IObjectLabel     ls    = label.Source.GetRoot(this) as IObjectLabel;
             int              sn    = objects.IndexOf(ls);
             IObjectContainer scont = ls.Object as IObjectContainer;
             string           ns    = scont.GetName(label.Source);
             label.SourceNumber = new object[] { sn, ns };
         }
         if (objects.Contains(label.Target))
         {
             label.TargetNumber = objects.IndexOf(label.Target);
         }
         else
         {
             IObjectLabel     lt    = label.Target.GetRoot(this) as IObjectLabel;
             int              tn    = objects.IndexOf(lt);
             IObjectContainer tcont = lt.Object as IObjectContainer;
             string           nt    = tcont.GetName(label.Target);
             label.TargetNumber = new object[] { tn, nt };
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// The post load operation
        /// </summary>
        public override bool PostLoad()
        {
            //return base.PostLoad();
            if (!isLoaded)
            {
                return(false);
            }
            if (isPostLoaded)
            {
                return(true);
            }
            desktop.SetObjectNames();
            PureObjectLabel.SetLabels(desktop.Objects);
            PureArrowLabel.SetLabels(desktop.Arrows);
            IEnumerable <IArrowLabel> arrows = desktop.Arrows;
//            SetParents(desktop);
            IEnumerable <object> components = desktop.Components;

            foreach (INamedComponent nc in components)
            {
                nc.Desktop = desktop;
                //nc.Parent = Object as INamedComponent;
                if (nc is IObjectLabel)
                {
                    IObjectLabel ol = nc as IObjectLabel;
                    if (ol.Object is IObjectContainer)
                    {
                        IObjectContainer oc = ol.Object as IObjectContainer;
                        bool             b  = oc.PostLoad();
                        if (!b)
                        {
                            return(false);
                        }
                    }
                }
            }
            foreach (IArrowLabel arrow in arrows)
            {
                arrow.Desktop = desktop;
                ICategoryObject source = arrow.Arrow.Source;
                if (source == null)
                {
                    arrow.Arrow.Source = arrow.Source.Object;
                }
                ICategoryObject target = arrow.Arrow.Target;
                if (target == null)
                {
                    arrow.Arrow.Target = arrow.Target.Object;
                }
                IAssociatedObject ass = arrow.Arrow as IAssociatedObject;
                ass.Object = arrow;
            }
            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Copies objects and arrows
        /// </summary>
        /// <param name="objects">Objects</param>
        /// <param name="arrows">Arrows</param>
        /// <param name="associated">Sign for setting associated objects</param>
        public virtual void Copy(IEnumerable <IObjectLabel> objects, IEnumerable <IArrowLabel> arrows, bool associated)
        {
            List <IObjectLabel> objs  = new List <IObjectLabel>();
            List <IObjectLabel> tobjs = new List <IObjectLabel>();

            foreach (IObjectLabel l in objects)
            {
                objs.Add(l);
                IObjectLabel lab = new PureObjectLabel(l.Name, l.Kind, l.Type, l.X, l.Y);
                tobjs.Add(lab);
                lab.Object  = l.Object;
                lab.Desktop = this;
                this.objects.Add(lab);
                if (l.Object is IObjectContainer)
                {
                    IObjectContainer oc = l.Object as IObjectContainer;
                    oc.SetParents(this);
                    oc.Load();
                }
                // components.Add(lab);
                table[l.Name] = lab;
            }
            List <IArrowLabel> arrs = new List <IArrowLabel>();

            foreach (IArrowLabel l in arrows)
            {
                IArrowLabel lab = new PureArrowLabel(l.Name, l.Kind, l.Type, l.X, l.Y);
                lab.Arrow   = l.Arrow;
                lab.Desktop = this;
                arrs.Add(lab);
                table[l.Name] = lab;
                IObjectLabel source = Find(objs, tobjs, l.Source, l.Desktop);
                IObjectLabel target = Find(objs, tobjs, l.Target, l.Desktop);
                lab.Source = source;
                lab.Target = target;
            }
            if (!associated)
            {
                return;
            }
            this.SetParents();
            PureObjectLabel.SetLabels(objects);
            PureArrowLabel.SetLabels(arrs);
            foreach (IArrowLabel l in arrs)
            {
                this.arrows.Add(l);
            }
        }
Ejemplo n.º 4
0
 INamedComponent INamedComponent.GetRoot(IDesktop desktop)
 {
     return(PureObjectLabel.GetRoot(this, desktop));
 }
Ejemplo n.º 5
0
 string INamedComponent.GetName(IDesktop desktop)
 {
     return(PureObjectLabel.GetName(this, desktop));
 }
Ejemplo n.º 6
0
 /// <summary>
 /// The post load operation
 /// </summary>
 /// <returns></returns>
 public bool PostLoad()
 {
     try
     {
         PureObjectLabel.SetLabels(this.Objects);
         PureArrowLabel.SetLabels(this.Arrows);
         this.SetParents();
         IEnumerable <object> components = Components;
         foreach (INamedComponent nc in components)
         {
             nc.Desktop     = this;
             table[nc.Name] = nc;
             if (nc is IObjectLabel)
             {
                 IObjectLabel ol = nc as IObjectLabel;
                 if (ol.Object is IObjectContainer)
                 {
                     IObjectContainer oc = ol.Object as IObjectContainer;
                     bool             b  = oc.PostLoad();
                     if (!b)
                     {
                         return(false);
                     }
                 }
             }
         }
         foreach (IArrowLabel arrow in arrows)
         {
             IObjectLabel source = null;
             IObjectLabel target = null;
             if (arrow.SourceNumber is Int32)
             {
                 source = objects[(int)arrow.SourceNumber] as IObjectLabel;
             }
             else
             {
                 object[]         os = arrow.SourceNumber as object[];
                 IObjectLabel     so = objects[(int)os[0]] as IObjectLabel;
                 IObjectContainer sc = so.Object as IObjectContainer;
                 source = sc[os[1] as string] as IObjectLabel;
             }
             if (arrow.TargetNumber is Int32)
             {
                 target = objects[(int)arrow.TargetNumber] as IObjectLabel;
             }
             else
             {
                 object[]         ot = arrow.TargetNumber as object[];
                 IObjectLabel     to = objects[(int)ot[0]] as IObjectLabel;
                 IObjectContainer tc = to.Object as IObjectContainer;
                 target = tc[ot[1] as string] as IObjectLabel;
             }
             arrow.Arrow.Source = source.Object;
             arrow.Arrow.Target = target.Object;
             arrow.Source       = source;
             arrow.Target       = target;
             IAssociatedObject ass = arrow.Arrow as IAssociatedObject;
             ass.Object = arrow;
         }
         return(true);
     }
     catch (Exception ex)
     {
         ex.ShowError(10);
         if (exceptions != null)
         {
             exceptions.Add(ex);
         }
     }
     return(false);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Copies objects and arrows
 /// </summary>
 /// <param name="objects">Objects</param>
 /// <param name="arrows">Arrows</param>
 /// <param name="associated">Copy associated objects sign</param>
 public override void Copy(IEnumerable <IObjectLabel> objects, IEnumerable <IArrowLabel> arrows, bool associated)
 {
     foreach (IObjectLabel l in objects)
     {
         string type = l.Type;
         string st   = l.Object.GetType() + "";
         if (!type.Equals(st))
         {
             //type = st;
         }
         PureObjectLabelPeer lp = new PureObjectLabelPeer(l.Name, l.Kind, type, l.X, l.Y);
         Type     t             = l.GetType();
         object[] o             = t.GetCustomAttributes(typeof(SerializableLabelAttribute), true);
         if (o != null)
         {
             if (o.Length > 0)
             {
                 IObjectLabelHolder lh = lp;
                 lh.Label = l;
             }
         }
         IObjectLabel lab = lp;
         lab.Object  = l.Object;
         lab.Desktop = this;
         this.objects.Add(lab);
         if (associated)
         {
             lab.Object.Object = lab;
         }
         table[l.Name] = lab;
     }
     //PureObjectLabel.Wrappers = false;
     foreach (IArrowLabel l in arrows)
     {
         PureArrowLabelPeer lp = new PureArrowLabelPeer(l.Name, l.Kind, l.Type, l.X, l.Y);
         Type     t            = l.GetType();
         object[] o            = t.GetCustomAttributes(typeof(SerializableLabelAttribute), true);
         if (o != null)
         {
             if (o.Length > 0)
             {
                 IArrowLabelHolder lh = lp;
                 lh.Label = l;
             }
         }
         IArrowLabel lab = new PureArrowLabelPeer(l.Name, l.Kind, l.Type, l.X, l.Y);
         lab.Arrow = l.Arrow;
         if (associated)
         {
             lab.Arrow.Object = lab;
         }
         lab.Desktop = this;
         this.arrows.Add(lab);
         // components.Add(lab);
         table[l.Name] = lab;
         List <IObjectLabel> objs  = objects.ToList <IObjectLabel>();
         List <IObjectLabel> tobjs = this.Objects.ToList <IObjectLabel>();
         lab.Source = PureDesktop.Find(objs, tobjs, l.Source, l.Desktop);
         lab.Target = PureDesktop.Find(objs, tobjs, l.Target, l.Desktop);
     }
     if (!associated)
     {
         return;
     }
     this.SetParents();
     PureObjectLabel.SetLabels(objects);
     PureArrowLabel.SetLabels(arrows);
 }