示例#1
0
        internal static LocationReport Find(TabablzControl tabablzControl)
        {
            if (tabablzControl == null)
            {
                throw new ArgumentNullException(nameof(tabablzControl));
            }

            var locationReportBuilder = new LocationReportBuilder(tabablzControl);

            foreach (var loadedInstance in Layout.GetLoadedInstances())
            {
                locationReportBuilder.CurrentLayout = loadedInstance;

                loadedInstance.Query().Visit(
                    locationReportBuilder,
                    BranchVisitor,
                    TabablzControlVisitor
                    );

                if (locationReportBuilder.IsFound)
                {
                    break;
                }
            }

            if (!locationReportBuilder.IsFound)
            {
                throw new LocationReportException("Instance not within any layout.");
            }

            return(locationReportBuilder.ToLocationReport());
        }