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); }
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); }