Exemple #1
0
        IMeasurements IDataLinkFactory.GetMeasurements(ICategoryObject target)
        {
            IAssociatedObject ao = target;
            object            o  = ao.Object;

            if (o is INamedComponent)
            {
                IMeasurements   ml   = null;
                INamedComponent comp = o as INamedComponent;
                IDesktop        d    = null;
                INamedComponent r    = comp.Root;
                if (r != null)
                {
                    d = r.Desktop;
                }
                else
                {
                    d = comp.Desktop;
                }
                if (d != null)
                {
                    d.ForEach((DataLink dl) =>
                    {
                        if (ml != null)
                        {
                            return;
                        }
                        object dt = dl.Target;
                        if (dt is IAssociatedObject)
                        {
                            IAssociatedObject aot = dt as IAssociatedObject;
                            if (aot.Object == o & (!(aot is IChildrenObject)))
                            {
                                ml = dl.Target as IMeasurements;
                            }
                        }
                    });
                    if (ml != null)
                    {
                        return(ml);
                    }
                }
            }
            IMeasurements m = MeasurementsWrapper.Create(target);

            if (m == null)
            {
                CategoryException.ThrowIllegalTargetException();
            }
            return(m);
        }
Exemple #2
0
        private static IMeasurements Create(IAssociatedObject root,
                                            IMeasurements master,
                                            IMeasurements slave)
        {
            if (master == null)
            {
                return(slave);
            }
            if (slave == null)
            {
                return(master);
            }
            if (master is MeasurementsWrapper)
            {
                MeasurementsWrapper mw = master as MeasurementsWrapper;
                mw.Add(slave);
                return(mw);
            }
            MeasurementsWrapper wrapper = new MeasurementsWrapper(root);

            wrapper.Add(master);
            wrapper.Add(slave);
            return(wrapper);
        }